韦东山衔接班——4.4_构建根文件系统之构建根文件系统

作者:GWD 时间:2019.8.26

一、创建○1中的两个设备文件

韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第1张图片
1、首先看一下PC机上的这两个文件夹是怎么样的
这两个均是字符型设备,主设备号为5/1,次设备号为1、3
在这里插入图片描述
2、在自制根文件系统中加入这两个文件夹和设备号。
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第2张图片
在这里插入图片描述

二、创建○3中的配置项

在这里插入图片描述
1、若不自己创建配置项的话,就会执行默认的配置项,太多了。我们只用一个就好。
意思是只执行bin/sh这个程序
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第3张图片
2、创建配置文件inittab,只执行bin/sh标准输入输出
在这里插入图片描述

三、创建○5中的C库

在这里插入图片描述
1、查看所有的库.a表示静态库,.so表示动态库
在这里插入图片描述
复制到自制根文件系统的lib目录
在这里插入图片描述
这就是最小的根文件系统了
在这里插入图片描述

四、将根文件系统制作成yaffs2映像

1、yaffs1制作小页nand_flash500,yaffs2是大页的2048。用这个工具。
在这里插入图片描述
2、这个路径下make
在这里插入图片描述
3、Make后得到一些工具,我们就用这个
在这里插入图片描述
拷贝到计算机指定目录并加上可执行命令
在这里插入图片描述
4、并转换
在这里插入图片描述
5、得到yaffs2后烧写
在这里插入图片描述
6、按回车就继续向下执行,就是成功了
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第4张图片

五、改进(一)使ps命令生效:

方法一:手动挂载
流程分析:启动内核后,根文件系统首先读inittab中的脚本,建立脚本中的程序,所以改进也就是改进Inittab配置文件
在这里插入图片描述
1、没改进前输入PS(进程查看命令)会提示没有/proc目录。
在这里插入图片描述
2、新建一个proc目录,并在脚本中挂载一个虚拟的根文件系统,查看当前系统正在跑哪些程序,这些信息是proc根文件系统收集的,PS命令去proc目录看里面有哪些内容。
此时是手工挂载的
在这里插入图片描述
在这里插入图片描述
方法二:mount-t自动挂载
在inittab中,加一个配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法三:mount-a自动挂载
实际上除了mount –t外还有另一种方法,意思是读出/etc/fstab,根据这个配置文件里面的内容来挂载文件系统。
在这里插入图片描述
mount –a这个指令依赖/etc/fstab这个文件
在这里插入图片描述
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第5张图片
思路:脚本里面是mount –a命令,这个命令干嘛呢,读取etc/fasab根据fastab的指令挂载根文件系统。
注:遇到cannot run错误时,要加上可执行指令、
在这里插入图片描述

六、改进(二)udev自动创建设备节点

韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第6张图片
Dev对应那些设备和驱动,若我们有成百上千的驱动怎么办?不能手动加载吧。我们用udev机制(自动创建/dev/设备节点、)mdev是busybox中的udev
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第7张图片
要做这六步骤
1、首先新建sys文件夹
在这里插入图片描述
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第8张图片
第1、4步挂载根文件
在这里插入图片描述
使用新文件系统之前dev目录下只有两个设备文件
在这里插入图片描述
使用了新的根文件系统之后有很多设备文件,是自动创建的
在这里插入图片描述

七、NFS网络文件系统

为了避免每次修改根文件系统都要重新烧录的情况,引入NFS网络文件系统
1、配置开发板的IP
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第9张图片
ctrl+c键结束ping
(一)、手动挂接
在这里插入图片描述
要做两件事
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第10张图片
服务器怎么被允许挂接呢,这就是NFS服务,其配置文件是/etc/exports,在这个配置文件中添加要分享的文件夹就可以了。
首先允许文件被挂接
在这里插入图片描述
在这里插入图片描述
3、重启NFS服务
在这里插入图片描述
4、测试:PC自己挂载自己试一下,把yaffs2所在的目录挂载到/mnt中
在这里插入图片描述
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第11张图片
5、单板去挂载
在这里插入图片描述
(二)、直接从nfs启动
1、重启开发板看他的启动项,如果我们的启动项是nfs的话,就从网络启动了。
在这里插入图片描述
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第12张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.9.2:/work/nfs_root/first_fs ip=192.168.9.3:192.168.9.2:192.168.9.6:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200

2、设置完成后启动
在这里插入图片描述
在这里插入图片描述
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第13张图片
3、如何返回本地启动模式
set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
在这里插入图片描述
4、用hello测试
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第14张图片
韦东山衔接班——4.4_构建根文件系统之构建根文件系统_第15张图片
在这里插入图片描述

八、附:设置IP的方法

1、 Windows 的 IP 一般都是自动分配的,在命令行执行: ipconfig, 确定它的 IP,
假设为 192.168.1.10
2、Ubuntu 的 IP 需要手工设置,在 Ubuntu 的终端执行: ifconfig ,确定网卡名,
可能是 eth0、 eth4、 ens33,假设是 ens33
再执行: sudo ifconfig ens33 192.168.1.100 // 配置网卡 IP 为 192.168.1.100
3、开发板运行 UBOOT 时、运行 LINUX 时,
它们的 IP 需要分别设置,这两个阶段的 IP 没有联系,
这两个阶段不会同时运行,所以它们的 IP 可以相同。
如果开发板正在运行 UBOOT,执行以下命令设置 IP:
set ipaddr 192.168.1.123
save
如果开发板正在运行 LINUX,执行以下命令设置 IP:
echo “ifconfig eth0 192.168.1.123” >> /etc/init.d/rcS
reboot

你可能感兴趣的:(韦东山衔接班)