NXP

用busybox构建一个最小根文件系统

2019-07-12 13:40发布

P { margin-bottom: 0.21cm; } busybox构建一个最小根文件系统 15年4月4月23月23日23日15:11:30 (一)一个最小根文件系统包括: (1)/dev/console /dev/null (2)init => busybox (3)/etc/inittab (4)配置文件制定的程序 (5)C
(二)下面写步骤: (1)解压配置busybox 先解压 cd /work/system”tar xjf busybox-1.7.0.tar.bz2” 解压出来busybox-1.7.0文件夹,在busybox-1.7.0目录下执行“make menuconfig”命令即可进入配置界面。一般选择默认配置就行,我添加一个TAB补全功能: Busybox Settings------> Busybox Library Turning------> [*]Tab completion
(2)编译安装busybox 编译前先修改Makefile 然后执行“make”命令编译busybox
最后是安装,在交叉编译环境,千万不要直接make install,这样会破坏我们的操作系统。我们构建的最小根文件系统在/work/nfs_root/first_fs下面,安装的目的是在/work/nfs_root/first_fs文件夹下面生成一个工具集,包括了我们常用的工具。busybox是所有命令的集合体,在开发板上运行lsbusybox ls命令是一样的。 所以执行make CONFIG_PREFIX=/work/nfs_root/first_fs install”,完成后,就会在这个文件夹下面生成binsbinusrlinuxrc->bin/busybox四个文件目录。
(2)安装C 在开发板上面只需要加载器和动态库:mkdir -p /work/nfs_root/first_fs/lib”cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib”cp *.so* /work/nfs_root/first_fs/lib -d 其中-d不要丢,-d表示如果本来是个链接文件,则拷贝时继续保持为链接文件,而不是真正的文件。
(3)构建etc目录 init进程根据/etc/inittab文件来创建其他子进程,etc目录下的内容取决与要运行的程序,本次只需要创建3个文件:etc/inittab, etc/init.d/rcS, etc/fstab 1.创建 etc/inittab
2.创建etc/init.d/rcS文件
3.创建etc/fstab文件 (4)构建dev目录
使用mdev机制创建设备文件,需要修改etc/fstab来自动挂载文件系统,修改etc/init.d/rcS加入要自动运行的命令,我直接在上一步做好了,截图看上面的。
mdev是通过init进程来启动的,在使用mdev构造/dev之前,init进程至少要用到设备文件/dev/console /dev/null ,所以要先建立这两个设备文件: first_fs下建立一个dev文件夹,执行mkdir -p /work/nfs_root/first_fs/dev”cd /work/nfs_root/first_fs/dev”sudo mknod console c 5 1”sudo mknod null c 1 3”即可。
这两个设备结点的主次设备号,文件类型等信息,是通过查看本机的这两个设备结点来确定的“ls -l /dev/console”“ls -l /dev/null”来确定的。
(5)构建其他目录cd /work/nfs_root/first_fs”mkdir proc mnt tmp sys root”
通过上面几步,就构造出来一个最小的根文件系统,如果想要烧到开发板里面,需要将它制作为一个文件,称为映像文件。
(三)制作yaffs2文件系统映像文件 /work/system/文件夹下面有一个韦老师做好的yaffs2制作工具,直接解压sudo tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2 ” 解压后得到Development_util_ok文件夹,进入yaffs2后在utils文件里面执行make命令,生成mkyaffs2image工具,将它拷贝到/usr/local/bin目录下:sudo cp mkyaffs2image /usr/local/bin”sudo chmod +x /usr/local/bin/mkyaffs2image” 然后在/work/nfs_root目录下面制作first_fs.yaffs2映像文件:cd /work/nfs_root”mkyaffs2image first_fs first_fs.yaffs2” 制作成功,可以看到first_fs.yaffs2映像文件,可以烧到开发板上。
(四)一些注意事项 自己从网上下载的busybox1.7.0,当时用的4.4.3的交叉编译链,在执行过程中遇到一些问题,可以在网上搜索到答案,一般是添加头文件等内容。
最需要注意的是,当初自己做的时候,用的是韦老师提供的内核映像,而用自己配置的根文件系统,这个根文件系统是用4.4.3的交叉编译链做的,韦老师的内核使用3.4.5的交叉编译链做的,出现根文件系统就没法执行等问题。当时查看了很多资料,发现etcdev等文件都没有错误,最后只能确定是busybox自动生成的linuxrcbin等文件有错误,所以内核映像跟busybox一定要用同一个版本的交叉编译器,要不会出现很多意想不到的问题。 阅读(224) | 评论(0) | 转发(0) | 0 上一篇:重新移植一个linux内核 下一篇:first_drv 笔记 相关热门文章 给主人留下些什么吧!~~ 评论热议