根文件系统制作记录
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
根文件系统制作记录
一、所用工具
Busybox-1.16.1
arm-linux-gcc-4.3.2
二、制作过程
1.编译/安装Busybox
1.1下载Busybox及其补丁
从/ 下载busybox-1.16.1.tar.bz2及该版本的所有补丁。
补丁文件复制到/work/create_rootfs/busybox-1.16.1-patch目录下。
使用如下命令将busybox-1.16.1.tar.bz2解压到busybox-1.16.1目录
$ tar xjf busybox-1.16.1.tar.bz2
1.2给Busybox打上补丁
可以手工逐一给Busybox打补丁,也可以编写脚本自动帮我们完成打补丁的工作,这里采用后面一种方法。
$ gedit /work/create_rootfs/patch.sh
$ cd /work/create_rootfs
$ sudo chmod +x ./patch.sh
$ ./patch.sh
若最后输出“Patching all file is finish!”则表示所有补丁都正确的打上了。
1.3配置Busybox
若忘记设定交叉编译器和目标板体系结构,则可能在内核启动末期出现下面的错误:
在Busybox目录下执行如下命令进入配置界面:
$ make menuconfig
请使用以下的配置(红色部分表示与Busybox默认配置不同而需要修改的,其他的则需确认):
(1)Busybox Settings--->
General Configuration--->
[*] Show verbose applet usage messages
[*] Store applet usage messages in compressed form
[*] Support –install [-s] to install applet links at runtime
[*] Enable locale support(system needs locale for this to work)
[*] Support for –long-options
[*] Use the devpts filesystem for unix98 PTYs
[*] Support writing pidfiles
[*] Runtime SUID/SGID configuration via /etc/busybox.config
[*] Suppress warning message if /etc/busybox.conf is not readable
Build Options--->
[*] Build BusyBox as a static binary(no shared libs)
[*] Build with Large File Support(for accessing files>2GB)
Installation Options->
[]Don’t use /usr
Applets links (as soft-links) --->
(./_install) BusyBox installation prefix
Busybox Library Tuning --->
(6)Minimum password legth
(2)MD5:Trade Bytes for Speed
[*]Fsater /proc scanning code(+100bytes)
[*]Command line editing
(1024)Maximum length of input
[*] vi-style line editing commands
(15) History size
[*] History saving
[*] Tab completion
[*]Fancy shell prompts
(4) Copy buffer size ,in kilobytes
[*]Use ioctl names rather than hex values in error messages
[*]Support infiniband HW
(2)Linux Module Utilities--->
(/lib/modules)Default directory containing modules
(modules.dep)Default name of modules.dep
增加对mdev的支持:
(3)Linux System Utilities --->
[*]Support /etc/mdev.conf
[*]Support command execution at device addition/removal
1.4安装Busybox
将Busybox安装到/work/create_rootfs/rootfs目录下,Busybox将在该目录下创建如下几个文件和目录:
2.构建根文件系统
2.1创建根文件系统下必要的目录
为了创建根文件系统下的其他目录与文件,我们可以采用手工敲命令创建的方式,也可以编写脚本自动完成,这里采用后一种方式。
编写如下脚本,保
sudo chmod +x create_fs.sh
sudo ./create_fs.sh //mknod需要管理员权限
2.2创建etc/fstab文件
etc/fstab文件中指定了内核启动后要挂载的文件系统。
$ cd /work/create_rootfs/rootfs
$ gedit etc/fstab
2.3创建etc/inittab文件
Busybox的init程序根据etc/inittab的内容创建各种子进程。
$ gedit etc/inittab
2.4创建etc/init.d/rcS文件
etc/init.d文件中保存的是自动执行的命令。
$ gedit etc/init.d/rcS
最后还要改变这个文件的属性,使它能够执行。
$ sudo chmod +x etc/init.d/rcS
2.5复制glibc库文件
Busybox的运行依赖于glibc动态链接库,而Linux上的应用程序也可能需要链接动态链接库,因此需要将glibc库复制到根文件系统的lib目录下:$ cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* /work/create_rootfs/rootfs /lib -d
其中/usr/local/arm/4.3.2是arm-linux-gcc安装的目录,请根据你机器上具体安装的目录作相应的修改。
若出现根文件系统无法挂载的情况,请先检查etc/init.d/rcS、etc/inittab、etc/fstab这几个文件是否正确。
有些难以察觉的错误比如“-”符号由于Word 的自动画线功能可能会被自动修改为“-”,若读者直接复制Word里面的符号到Linux下,则有可能导致根文件系统挂载失败。
三、根文件系统的挂载
1.根文件系统存储在NAND Flash
NAND Flash上的根文件系统一般采用YAFFS2格式,这就需要我们将根文件系统制作成YAFFS2格式的映像文件,然后烧写到NAND Flash中。
这里使用的制作映像文件的工具是YAFFS2自带的工具mkyaffs2image。
烧写64B和128MB或以上的NAND Flash所用到mkyaffs2image是不同的,需要作修改,移植的详细过程请参考《mkyaffs2image移植过程》。
2.根文件系统存储在SD卡
SD卡挂载根文件系统请参考《SD卡启动Linux并挂载根文件系统》一文。