内核在引导时要求某些设备节点必须存在(特别是 console 和 null ),这些设备节点必须创建在硬盘上才能使得内核在 udev 尚未启动之前就可以使用它们,特别是当系统以单用户模式启动(仅允许使用 console)的时候更是如此。使用下面的命令来创建这些节点:
mknod -m 600 /dev/console c 5 1 mknod -m 666 /dev/null c 1 3
推荐的向 /dev 目录填充设备的方法是在 /dev 上挂载一个虚拟文件系统(比如 tmpfs),然后在设备被检测到或被访问到的时候(通常是在系统引导的过程中)动态创建设备节点。既然现在新的系统尚未被引导,那么就有必要通过挂载 /dev 来手工完成 LFS-Bootscripts 将来要做的事情:
mount -nvt tmpfs none /dev
Udev 软件包是实际用于在 /dev 目录中添加设备的工具。但是由于它要在后面的步骤中才被安装,我们现在必须手动创建一个必需的设备文件的最小集合,以便继续构建我们的系统。[注意]前面创建的 console 和 null 设备文件(保存在硬盘上)被新挂载的 tmpfs 文件系统隐藏了,所以这里还要再创建一次。
mknod -m 622 /dev/console c 5 1 mknod -m 666 /dev/null c 1 3 mknod -m 666 /dev/zero c 1 5 mknod -m 666 /dev/ptmx c 5 2 mknod -m 666 /dev/tty c 5 0 mknod -m 444 /dev/random c 1 8 mknod -m 444 /dev/urandom c 1 9 chown -v root:tty /dev/{console,ptmx,tty}
有一些在系统启动的时候由 LFS-Bootscripts 创建的符号连接和目录是 LFS 系统所必须的。既然目前只是 chroot 后的环境而不是真实启动后的环境,那么就需要在这里先创建他们:
ln -sv /proc/self/fd /dev/fd ln -sv /proc/self/fd/0 /dev/stdin ln -sv /proc/self/fd/1 /dev/stdout ln -sv /proc/self/fd/2 /dev/stderr ln -sv /proc/kcore /dev/core mkdir -v /dev/pts mkdir -v /dev/shm
最后在新建的目录中挂载虚拟内核文件系统:
mount -vt devpts -o gid=4,mode=620 none /dev/pts mount -vt tmpfs none /dev/shm
上面的 mount 命令可能会导致下面的警告信息:
can't open /etc/fstab: No such file or directory.
因为在挂载文件系统时需要 /etc/fstab 文件的指示,但是该文件目前尚未被创建,不过你可以安全的忽略它,该文件系统仍然会被正确的挂载。