busybox构建mini6410开发板的yaffs文件系统
2014-09-11 20:48
351 查看
busybox源码网站地址:点击打开链接
我用的是:busybox-1.22.1.tar.bz2
开发板:arm-tiny-6410
参考资料来源:龙芯1B用户手册
用法说明:
busybox的配置方法类似与linux内核的配置,解压了工具包后,在busybox-1.22.1目录下,运行“make menuconfig”,选择你所需要的模块,保存后会在本地生成一个.config文件,它会指定busybox在编译的过程中需要包含那些功能。
配置选择
编译busybox
2构建根文件系统
2.1建立系统根目录(注意以下7个步骤都是在/root/rootfs下进行的)
(1)
添加如下内容:
(3)
添加如下内容
(4)
启动/bin/sh 程序时会启动 ash 的配置信息,
而它就是/etc/profile, sh会把 profile 的所有配置全部都运行一遍,因此用户可以把自己的启动程序放在这里。
添加如下内容:
修改系统配置文件权限
拷贝 Busybox 文件
将安装好的 Busybox 文件拷贝到/root/rootfs/目录:
2.3 拷贝库文件
提示:配置 Busybox 若选择静态编译则省略此步骤。
在 x86 系 统中,动 态编译 Busybox 制作 文件系统 ,需将下 列几个必 须库从工 具 链
可以使用脚本,快速地拷贝所需的基本动态库:
运行 cplib.sh SHELL 脚本:
件,把二进制文件中的包含的符号表和调试信息删除掉,可有效减少库文件大小。
例:
3.1镜像文件制作工具本机安装
(1)安装依赖工具 zlib:
对于rootfs-yaffs2.img这个文件,最好在前面加个路径,不然可能会镜像制作到/root/rootfs,这样会导致制成的镜像很大!!
接下来就是就可以将rootfs-yaffs2.img烧写到开发板中
我用的是:busybox-1.22.1.tar.bz2
开发板:arm-tiny-6410
参考资料来源:龙芯1B用户手册
用法说明:
busybox的配置方法类似与linux内核的配置,解压了工具包后,在busybox-1.22.1目录下,运行“make menuconfig”,选择你所需要的模块,保存后会在本地生成一个.config文件,它会指定busybox在编译的过程中需要包含那些功能。
<span style="font-size:18px;">#tar jxvf busybox-1.22.1.tar.bz2 #cd busybox-1.22.1/ #make menuconfig </span>
配置选择
<span style="font-size:18px;">Busybox Settings ---> Build Options ---> [ ] Build BusyBox as a static binary (no shared libs) (NEW)//这个是静态编译的选项。(如果选择静态编译也记得要填写交叉编译器名称) [*] Build shared libbusybox //我做的是动态编译 (/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-) Cross Compiler prefix //回车填写交叉编译器名称</span>说明:动态编译的 busybox 在构建文件系统时需要加入一些必须的动态库,而静态编译的 busybox 不依赖动态库便可执行,构建文件系统时可省略拷贝动态库的步骤。
<span style="font-size:18px;">Busybox Library Turning---> [*] vi-style line editing commands(NEW) [*] Fancy shell prompts(NEW)</span>以上几个步骤基本上是配置完成了,但为了解决某些系统的 inoice,ubi出错,需对Miscellaneous Utilities进行如下设置
<span style="font-size:18px;">Miscellaneous Utilities--> [ ] inoice [ ] ubiattach [ ] ubidetach [ ] ubimkvol [ ] ubirmvol [ ] ubirsvol [ ] ubiupdatevol</span>
编译busybox
<span style="font-size:18px;">#make clean all</span>安装到目录
<span style="font-size:18px;">#make install</span>在busybox-1.22.1目录下下生成子目录_inistall,添加了bin,sbin,usr,linuxrc. 其中可执行文件 busybox 在 bin 目录下,其他的都是指向它的符号链接。
2构建根文件系统
2.1建立系统根目录(注意以下7个步骤都是在/root/rootfs下进行的)
<span style="font-size:18px;">#mkdir /root/rootfs #cd /root/rootfs #mkdir dev home proc tmp var etc lib mnt sys usr etc/rc.d</span>2.2建立系统配置文件
(1)
<span style="font-size:18px;">#cd /root/ rootfs #vi etc/inittab</span>说明:inittab 文件是 init 进程的配置文件,系统启动后所访问的第一个脚本文件,后续启动的文件都由它指定。
添加如下内容:
<span style="font-size:18px;">::sysinit:/etc/rc.d/rc.sysinit #Example of how to put a getty on a seria line(for a terminal) ::respawn:-/bin/sh #no login(启动后进入 shell 环境) #::respawn:/sbin/getty -L ttySAC0 115200 vt100 #use login #tty::respawn:-/bin/sh #Stuff to do when restarting the init porcess ::restart:/sbin/init #Stuff to do before rebooting ::ctrlaltdel:/sbin/reboot //捕捉 ctrl+alt+del 键,重启文件系统 ::shutdown:/bin/umount -a –r //当关机时卸载所有文件系统 ::shutdown:/sbin/swapoff –a</span>(2)
<span style="font-size:18px;">#vi etc/rc.d/rc.sysinit</span>说明:这是一个脚本文件,可以在里面添加想自动执行的命令。以下命令配置环境变量、主机名、dev 目录环境、挂接/etc/fstab 指定的文件系统、建立设备节点与设置 IP。
<span style="font-size:18px;">#!/bin/sh #Set binary path export PATH=/bin:/sbin:/usr/bin:/usr/sbin #Config dev envi#Config dev enviornment mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev mkdir -p /dev/pts mount -t devpts devpts /dev/pts #mount all filesystem defined in /etc/fstab echo "#mount all....." /bin/mount -a echo "#Starting mdev....." echo /sbin/mdev > /proc/sys/kernel/hotplug /sbin/mdev -s #Set hostname /bin/hostname "Loongson-gz" export LAGNAME=root #Set ip #ifconfig eth0 192.168.3.114 up ifconfig lo 127.0.0.1 </span>(说明:eth0 的 ip 地址可根据需要自行配置)
(3)
<span style="font-size:18px;">#vi etc/fstab</span>说明:执行 mount –a 时挂接/etc/fstab 指定的文件系统。
添加如下内容
<span style="font-size:18px;">sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 tmpfs /mnt tmpfs defaults 0 0 tmpfs /root tmpfs defaults 0 0 tmpfs /var/log tmpfs defaults 0 0 </span>
(4)
<span style="font-size:18px;">#vi etc/profile</span>说明:inittab 中执行了这样一个语句“::respawn:-/bin/sh”。
启动/bin/sh 程序时会启动 ash 的配置信息,
而它就是/etc/profile, sh会把 profile 的所有配置全部都运行一遍,因此用户可以把自己的启动程序放在这里。
添加如下内容:
<span style="font-size:18px;">#!/bin/sh #/etc/profile:system-wide .profile file for the Bourne shells echo "Processing /etc/profile....." #set search library path export LD_LIBRARY_PATH=/lib:/usr/lib:/qte/lib #set user path export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/exe/ #Set PS1 export PS1='[\u@\h:\w]\$' alias ll="ls -l" echo "Done!"</span>(5)
修改系统配置文件权限
<span style="font-size:18px;">#chmod 755 etc/* #chmod 755 etc/rc.d/rc.sysinit</span>(6)
拷贝 Busybox 文件
将安装好的 Busybox 文件拷贝到/root/rootfs/目录:
<span style="font-size:18px;">#cp ./Busybox1.19.2/_install/* /root/rootfs -rf </span>(7)这一步很重要
<span style="font-size:18px;">#cd /root/rootfs/dev/ #mknod console c 5 1 #mknod null c 5 1</span>
2.3 拷贝库文件
提示:配置 Busybox 若选择静态编译则省略此步骤。
在 x86 系 统中,动 态编译 Busybox 制作 文件系统 ,需将下 列几个必 须库从工 具 链
<span style="font-size:18px;">libcrypt.so.1, libc.so.6, libdl.so.2, libgcc_s.so.1, libm.so.6, libpthread.so.0, libstdc++.so.6 </span>
<span style="font-size:18px;">#cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/lib/库文件名 /root/rootfs/lib/ </span>注:如果制作完成,运行出现错误,可能是由于这些文件都是软链接,把实际的链接点拷贝到/root/rootfs/lib 即可。
可以使用脚本,快速地拷贝所需的基本动态库:
<span style="font-size:18px;">#cd /opt/gcc-3.4.6-2f/mipsel-linux/lib #vi cplib.s</span>添加内容:
<span style="font-size:18px;">for file in libcrypt libc libdl libgcc_s libm libpthread libstdc++ do cp -d $file.so.[*0-9] /root/rootfs/lib done cp -d ld*.so* /root/rootfs/lib </span>保存退出。
运行 cplib.sh SHELL 脚本:
<span style="font-size:18px;">#source cplib.sh </span>为了减少根文件系统的库大小,使用交叉编译工具即 gcc-3.4.6-2f 的 strip 工具来处理库文
件,把二进制文件中的包含的符号表和调试信息删除掉,可有效减少库文件大小。
例:
<span style="font-size:18px;">#cd /opt/FriendlyARM/toolschain/4.5.1/bin/ /opt/FriendlyARM/toolschain/4.5.1/bin$ ./arm-linux-strip /root/rootfs/lib/*.so </span>至此根文件系统(目录/root/rootfs)制作完成。
3.1镜像文件制作工具本机安装
(1)安装依赖工具 zlib:
<span style="font-size:18px;">#tar zxf zlib-1.2.3.tar.gz #cd zlib-1.2.3 #./configure && make && make install</span>(2)制作 yaffs2 文件系统工具 mkyaffs2image
<span style="font-size:18px;">#tar zxf yaffs2-d43e901.tar.gz #cd yaffs2-d43e901/utils #make</span>在当前目录 yaffs2-d43e901/utils 下生成 mkyaffs2image,可以拷贝到/usr/bin:
<span style="font-size:18px;">#cp mkyaffs2image /usr/bin</span>3.2 制作文件系统镜像文件
<span style="font-size:18px;">#mkyaffs2image /root/rootfs /home/xxx/rootfs-yaffs2.img #chmod 777 rootfs-yaffs2.img //修改文件系统权限,防止出现无法烧写的情况 </span>
对于rootfs-yaffs2.img这个文件,最好在前面加个路径,不然可能会镜像制作到/root/rootfs,这样会导致制成的镜像很大!!
接下来就是就可以将rootfs-yaffs2.img烧写到开发板中
相关文章推荐
- 使用busybox构建yaffs2根文件系统(前言)
- 使用busybox构建yaffs2根文件系统(前言)
- FS2410根文件系统构建-busybox1.1.3
- 构建根文件系统(3)编译、安装Busybox、安装glibc
- 使用busybox构建linux根文件系统
- 为omap3530使用BusyBox构建linux文件系统及添加telnet服务
- 用busybox构建根文件系统
- 制作文件系统之五:基于BusyBox的默认配置来构建文件系统
- qt4.8.2在tq2440开发板上的移植(二)--构建根文件系统
- 移植Busybox与构建根文件系统
- zedboard---------在主机Ubuntu下面建立和开发板(busybox文件系统)通信的网络文件系统
- 开发板实务(5)——构建根文件系统
- 构建根文件系统(7)制作/烧写yaffs映象文件
- 构建Linux根文件系统三:编译/安装Busybox
- 根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令
- busybox1.9.2制作yaffs文件系统
- 使用Busybox1.13.3制作yaffs2根文件系统
- 构建根文件系统(6)修改制作yaffs映象文件的工具
- initramfs文件系统的制作及yaffs2根文件系统制作(busybox-1.20.2)
- Busybox1.13.3制作yaffs2根文件系统(静态和动态)