第14讲 根文件系统构建
一、根文件系统简介
根文件系统也叫做rootfs。大家学习STM32的W25Q256、SD卡的时候接触过FATFS文件系统。Rootfs?=FATFS。不等于!
FATFS这类的文件系统属于Linux内核的一部分,属于软件代码。
那么ROOTFS是什么,根文件系统=“根”、“文件”、“系统”。根文件系统就是一堆的文件、比如软件、配置文件等,这些文件是Linux运行所必须的,将他们组合在一起就构成了跟文件系统。
根文件系统就是一个“文件夹”,此“文件夹”有很多个文件,这些文件是linux运行所必须的,但是无法放到内核里面去的。比如命令、库、配置文件等等。所有这些软件需要我们自己构建。
/就是Linux根文件系统。
二、BusyBox构建根文件系统
构建根文件系统,busybox。还有很多成熟化的根文件系统构建方式,buildroot,yocto。构建的根文件系统调试我们通过nfs网络挂载,也就是跟文件系统存放到ubuntu下,开发板启动以后通过nfs服务使用ubuntu下的跟文件系统。
1、修改makefile,添加交叉编译器
修改ARCH和CROSS_COMPILE。
2、busybox支持中文字符
3、配置busybox
make defconfig。
make menuconfig打开图形化配置界面
4、编译busybox
5、拷贝库文件。
库文件就是交叉编译器的库文件。
先是rootfs/lib目录,然后是rootfs/usr/lib目录。
6、创建其他文件夹
三、根文件系统初步测试
为了方便测试,我们采用挂在网络根文件系统,nfs。要求:
1、linux内核网络驱动要工作正常。
2、设置uboot的bootargs,也就是linux内核的命令行参数。
从ubuntu的tftpboot里面加载我们前面移植的uboot、zImage和dtb,设置bootcmd。
测试的时候发现:
也就是提示 文件系统为只读,这是因为booargs参数没设置全。
四、完善根文件系统
五、根文件系统其他功能测试
1、测试应用程序的运行
编写helloc.c,测试软件试运行在ARM开发板上,因此编译的时候要使用交叉编译器。编译完成以后使用file命令查看可执行文件信息。
应用程序后台运行 xxx &。关闭某个软件后台运行,输入ps命令查看当前所有软件的PID。查到hello的PID是77。通过kill -9 77(PID).
2、中文字符测试
3、开机自启动