前面已经制作好了最小根文件系统,但是并不完善,下面来完善
一、增加 proc 虚拟文件系统,proc 是内核提供一个虚拟的文件系统,收集内核的信息
在串口中启动文件系统后可测试 用命令 ps 提示没有这个目录,那么我们创建一个 mkdir proc 再 ps 同样没有信息,手工挂载 mount -t proc none /proc 再次ps 可以看到有很多进程信息。
所以我们在制作根文件系统时就可以先做好,上面是手工挂载,我们做成自动挂载 进入根文件系统目录
mkdir proc
修改配置文件 在原来的基础上增加一项
vi etc/inittab
原来的内容是
console::askfirst:-/bin/sh
增加后的内容是
console::askfirst:-/bin/sh
::sysinit:/etc/init.d/rcS
到这里我们增加了,但实际我们还没有,所以要他建
mkdir etc/init.d
vi etc/init.d/rcS
在这里可以把手工挂接的命令加进来,但我们采用另一种方法用 mount -a(这条命令就是去读etc/fstab这个配置文件的内容,去挂载) 所以我们这里写 mount -a 然后后面创建 etc/fstab
mount -a
vi etc/fstab
# device mount-point type options dump fsck order //这一行是注释
proc /proc proc defaults 0 0
这里我们可以再测试一下,看烧进板子后是否会自动挂载 proc
二、增加mdev机制
查看 busybox 内的mdev 文档有说明下面列出改进内容
vi etc/init.d/rcS
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
vi etc/fstab
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
到此就完成了根文件系统的改进
三、NFS
为了方便后续的驱动开发,不用每次重烧文件系统,可采用NFS挂载或启动方式。
1.从FLASH上启动根文件系统,再用命令挂接
NFS挂接需要满足两个要件
服务器允许 那个目录可被挂接 (即NFS服务 配置文件目录是 /etc/exports 在这个文件里定义可被挂接的目录即可)
sudo /etc/exports 增加可被挂接的目录
重启NFS服务 sudo /etc/init.d/nfs-kernel-server restart
测试 sudo mount -t nfs 192.168.0.104:/work/filesys/fs_mini_mdev /mnt 成功表示完成设置
单板去挂接
mount -t nfs -o nolock 192.168.0.104:/work/filesys/fs_mini_mdev /mnt
成功后,在单板上mnt目录里的内容和服务器上的根文件系统目录的内容是一样的,服务器内容更改,单板马上可以看到相同变化
2:直接从NFS启动
需要修改命令行参数 格式可在 内核 Documentation/nfsroot 有说明
set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.0.104:/work/filesys/fs_mini_mdev ip=192.168.0.105:192.168.0.104:192.168.0.1:255.255.255.0::eth0:off
这里就可以从NFS启动了。
根文件系统相关到此结束。