一.  简介

上一篇文章学习了向所编译生成的根文件系统加入 lib文件文章地址如下

根文件系统lib库添加与初步测试-CSDN博客

本文继上一篇文章学习本文对之前制作的根文件系统进行一次初步测试

二.  根文件系统初步测试

为了方便测试我们采用挂载网络文件系统通过nfs服务进行挂载可以使用的前提是:

1.  Linux内核网络驱动工作正常。

2.  重新设置 ubootbootargs 参数,也就是 Linux内核命令行参数

通过 tftp 服务,从ubuntu系统加载我们前面移植 zImagedtb,即开发板上已经设置bootcmd参数(之前其实已经设置好了)。

注意:通过 tftp服务可以ubuntu系统下载 zImagedtb设备文件的前提是: ubuntu系统tftp服务设置目录存在 内核镜像 zImagedtb设备文件

开发板上电后,进入 uboot命令模式下,输入printenv命令即可查看 开发板上的 bootcmd数值

设置 bootargs参数:即设置根文件系统通过nfs服务启动

测试方法就是使用 NFS 挂载,uboot 里面bootargs 环境变量会设置 “root” 的值,所以我们root 的值改为 NFS 挂载即可


Linux
内核源码 有相应的文档讲解如何设置,文档
Documentation/filesystems/nfs/
root=/dev/nfs nfsroot=[<serverip>:]<rootdir>[,<nfsoptions>] ip=<clientip>:<serverip>:<gw

以上参数说明如下

<serverip>
服务器
IP
地址,也就是存放文件系统主机
IP
地址,即
Ubuntu

IP
地址
<rootdir>

根文件系统存放路径例如,我这里存放路径
/home/wangtian/linux/nfs_File/rootfs
<nfsoptions>

NFS
的其他可选选项,一般不设置。
<clientip>

客户端
IP
地址,即开发板的
IP
地址,
Linux
内核启动以后就会使用

IP
地址来配置开发板。此地址一定要和
Ubuntu
主机同一个网段内,并且没有被其他的设
备使用。

Ubuntu
中使用
ping
命令
ping
一下就知道要设置的
IP
地址有没有被使用,如果不能
ping
通就说明没有被使用,那么就可以设置为开发板的
IP 地址。
<serverip>

服务器
IP
地址,前面已经说了。
<gwip>

网关地址,我的就是
192.168.1.1
<netmask>
子网掩码,我的就是
255.255.255.0
<hostname>
客户机名字,一般不设置,此值可以空着。
<device>

设备名,也就是网卡名,一般是
eth0

eth1….
,正点原子
I.MX6U-ALPHA
发板的
ENET2

eth0

ENET1

eth1
。如果你的电脑只有一个网卡,那么基本只能是
eth0
这里我们使用
ENET2
,所以网卡就是
eth0
<autoconf>

自动配置,一般不使用,所以设置为
off
<dns0-ip>

DNS0
服务器
IP
地址,不使用。
<dns1-ip>

DNS1
服务
IP
地址,不使用。

根据上面的格式,proto=tcp表示使用 TCP 协议环境变量 bootargsroot如下

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 bootargsconsole=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 bootargsconsole=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” 回车键,进入根文件系统根目录下,试着创建一个文件:

可以看出,这时可以创建一个文件。

那么是不是说明我们的
rootfs
制作成功了呢?大家注意,上面打印信息中红色框中,有下面这一行错误提示
can’t run ‘/etc/init.d/rcS’: No such file or directory
提示很简单,说是无法运行
/etc/init.d/rcS”这个文件,因为这个文件不存在。看来我们的
rootfs
还是缺文件。下一篇继续完善 根文件系统 rootfs

原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/134784915

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41852.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注