devtmpfs | 静态设备节点 | udev | 能否启动 | dev是否变化 | sys是否变化 |
---|
0 | 0 | 0 | 0(A) | - | - |
0 | 0 | 1 | 0(A) | - | - |
0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 | 0(F)(H) | 1 |
1 | 0 | 0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1(E) | 1 |
2 | 0 | 0 | 0(A) | - | - |
2 | 0 | 1 | 0(A) | - | - |
2 | 1 | 0 | 1 | 0(G) | 1 |
2 | 1 | 1 | 1 | 0(D) | 1 |
devtmpfs
0: CONFIG_DEVTMPFS=n
CONFIG_DEVTMPFS_MOUNT=n
1:
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
2:
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=n
静态设备节点
0 表示 无
1 表示 有
在/dev下手动创建了两个节点,并制作rootfs
crw------- 1 root root 5, 1 Jan 15 08:20 console
crw-rw-rw- 1 root root 1, 3 Jan 15 08:20 null
udev
0 表示 无
1 表示 有
eudev-3.2.9 自启动
没有在 /etc/fatab中添加 udev的挂载
能够启动
0 表示 不能
1 表示 能
能够启动后提供一个可供交互的shell
dev是否变化
0 表示 无
1 表示 有
插入一个字符设备驱动(B)后,dev下是否有新的节点产生
sys是否变化
0 表示 无
1 表示 有
插入一个字符设备驱动(B)后,sys下是否有新的文件产生
Z:udev /dev devtmpfs defaults 0 0
W:udev /dev tmpfs defaults 0 0
A:
循环报错找不到 /dev/console
F:
在 /etc/fstab 中增加 Z ,运行报错mount: mounting udev on /dev failed : No such device ,能启动 , sys与dev状况与添加前相同
H:
A1:启动成功后, 执行 mount -t devtmpfs udev /dev , 报错 mount: mounting udev on /dev failed: No such device
B1.启动成功后, 执行 mount -t tmpfs udev /dev 成功, 查看 /dev 下面没有任何文件
B2.重启 udevd , 查看 /dev 下面 有一些文件
# ls /dev/ -R
/dev/:
fd kmsg stderr stdin stdout
D:
在 /etc/fstab 中增加 Z ,正常启动, dev节点正常出现,sys与添加前相同
mount 打印 udev on /dev type devtmpfs (rw,relatime,size=255592k,nr_inodes=63898,mode=755)
在 /etc/fstab 中增加 W ,无法启动, 循环报错找不到 /dev/console
E:
在 /etc/fstab 中增加 Z ,正常启动, sys与dev状况与添加前相同
mount打印 devtmpfs on /dev type devtmpfs (rw,relatime,size=255592k,nr_inodes=63898,mode=755)
B:
代码位置:https://github.com/lisider/arm_vexpress_code/blob/master/driver/char_sample/char_sample.c
G:
启动后执行 mount -t devtmpfs devtmpfs /dev/
然后再插入 驱动 , dev 和 sys 都有变化
结论
静态文件 + udev(需要配置自启动和mount) 可以正常启动 且 正常管理设备
devtmpfs(需要配置CONFIG_DEVTMPFS和CONFIG_DEVTMPFS_MOUNT=y) 可以正常启动 且 正常管理设备
devtmpfs 在 /dev 中 不 会建立 链接文件
udev 在 /dev 中 会建立 链接文件