一. 简介
上一篇文章学习了向所编译生成的根文件系统中加入 lib库文件。文章地址如下:
根文件系统lib库添加与初步测试-CSDN博客
本文继上一篇文章的学习,本文对之前制作的根文件系统进行一次初步测试。
二. 根文件系统初步测试
为了方便测试,我们采用挂载网络根文件系统,通过nfs服务进行挂载。可以使用的前提是:
1. Linux内核网络驱动要工作正常。
2. 重新设置 uboot的 bootargs 参数,也就是 Linux内核的命令行参数。
通过 tftp 服务,从ubuntu系统下加载我们前面移植 zImage和dtb,即开发板上已经设置好 bootcmd参数(之前其实已经设置好了)。
注意:通过 tftp服务可以从 ubuntu系统下载 zImage与 dtb设备树文件的前提是: ubuntu系统的 tftp服务所设置的目录存在 内核镜像 zImage和 dtb设备树文件。
开发板上电后,进入 uboot命令模式下,输入 "printenv" 命令即可查看 开发板上的 bootcmd参数值:
设置 bootargs参数:即设置根文件系统通过nfs服务启动
测试方法就是使用 NFS 挂载,uboot 里面的 bootargs 环境变量会设置 “root” 的值,所以我们将 root 的值改为 NFS 挂载即可。
root=/dev/nfs nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] ip=<client-ip>:<server-ip>:<gwip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>
以上参数说明如下:
根据上面的格式,“proto=tcp”表示使用 TCP 协议。环境变量 bootargs 的 root 值如下:
root=/dev/nfs nfsroot=192.168.1.66:/home/wangtian/linux/nfs_File/rootfs, proto=tcp ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off
=> setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.66:/home/wangtian/linux/nfs_File/rootfs,proto=tcp ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off'
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0x3c00000 -- 100% complete.
Writing to NAND... OK
可以通过 "printenv" 命令查看 bootargs参数设置的是否正确:
设置好以后,使用 “boot” 命令启动 Linux 内核。操作如下:
如果设置成功。那么最后在输入 "Enter" 回车键时,会进入 根文件系统。
从上面开发板根文件系统打印的 Log信息可以看出,根文件系统是通过 nfs服务挂载的方式加载的。通过 " ls " 命令可以看到是我之前编译 busybox制作的根文件系统。
三. 设置根文件系统为可读写
进入根文件系统根目录下,创建一个文件,会创建失败:
这里不能创建的原因是,这里我设置根文件系统是只读的。
如果需要根文件系统可读可写,可以在设置 bootargs参数时 root参数值 加入 读写权限:
root=/dev/nfs nfsroot=192.168.1.66:/home/wangtian/linux/nfs_File/rootfs,proto=tcp rw ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off
重新设置 bootargs参数:
=> setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.66:/home/wangtian/linux/nfs_File/rootfs,proto=tcp rw ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off'
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0x3c00000 -- 100% complete.
Writing to NAND... OK
=>
输入 "boot " 命令重启开发板:
=> boot
FEC1 Waiting for PHY auto negotiation to complete.... done
Using FEC1 device
TFTP from server 192.168.1.66; our IP address is 192.168.1.50
最后输入 "Enter" 回车键,进入根文件系统根目录下,试着创建一个文件:
可以看出,这时可以创建一个文件。
can't run '/etc/init.d/rcS': No such file or directory