构建根文件系统3-完善根文件系统

完善proc文件系统
构建完最小根文件系统之后,可以用ls命令,但不能用ps命令看当前运行的进程信息,因为还没挂载proc文件系统
 
在内核中,当前有哪些应用程序在跑,这些信息如何收集。是内核提供了一个虚拟的文件系统,叫 proc 文件系统。
 
0、 挂载proc文件系统之前需要在根目录下创建一个proc文件夹:mkdir proc
  挂载:mount -t proc none /proc
  这时再用ps命令,发现可以运行了。
1、在文件系统加 /proc 目录,修改配置文件,这样不用每次都人为去创建proc目录再挂载
  在inittab文件中加入:   ::sysinit:/etc/init.d/rcS
  同时在etc文件夹中创建init.d文件夹,并在init.d文件夹下创建rcS文件
  在rcS文件中加入: mount -t proc none /proc
  为rcS加上权限:chmod +x etc/init.d/rcS
 
这样重新烧这个文件系统到开发板时,一起动就会直接执行 mount -t proc none /proc
若还想在开始启动时执行其他命令,则也可以加到 rcS 脚本中去。
 
还有另一种方法可以在启动单板时自动挂载根文件系统:在rcS文件中使用mount -a命令
mount -a 命令是让linux内核去读etc/fatab文件,根据fstab文件的指示,去挂载文件系统。

 在fstab文件中加入一行脚本,用于挂载proc文件系统就可以了:

# device mount-point type option dumo fsck order
proc /proc proc default 0 0

完善dev目录

目前dev目录下只有两个设备文件。

dev 目录下对应那些设备和驱动。有成千上百驱动,一个个创建会很麻烦。用 udev 机制。
udev 是 linux 下自动创建 dev 目录下的设备节点。busybox 中有个简化版本 mdev(udev的简化版本)。
 
busybox 目录下有一个 mdev.txt 有说明要做如下 6 项。
[1] mount -t sysfs sysfs /sys 首先挂载一个文件系统到 sys 目录中去。
[2] echo /bin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
[4] mount -t tmpfs mdev /dev 还要挂载一个文件系统到 dev 目录中去。
[5] mkdir /dev/pts
[6] mount -t devpts devpts /dev/pts
 
在做后续操作之前,要先新建/sys目录。

在etc/init.d/rcS文件中写入如下命令,内核启动后会运行这些命令:

#mount -t proc none /proc
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

 在etc/fstab文件中写入如下脚本,mount -a命令会读取fstab配置文件,挂载相应的文件系统:

# device mount-point type option dumo fsck order
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0

原文地址:https://www.cnblogs.com/physworld/p/14800520.html