当内核启动系统时,它需要一些设备节点的存在,特别是console和null设备。 设备节点将在硬盘上创建,以便它们在 udev 启动之前可用,并且在 Linux 以单用户模式启动时也可用(因此限制了权限console)。 通过运行以下命令创建设备
mknod -m 600 /dev/console c 5 1 mknod -m 666 /dev/null c 1 3
填充/dev目录的推荐方法是挂载一个虚拟文件系统(例如tmpfs)在/dev目录上,并允许设备在该虚拟文件系统上动态创建,当它们被检测到或访问时。 这通常在启动过程中完成。 由于这个新系统尚未启动,因此有必要执行 LFS-Bootscripts 包通常通过挂载来执行的操作/dev:
mount -nvt tmpfs none /dev
Udev 包是实际在/dev目录中创建设备的包。 由于它不会在此过程的稍后阶段安装,请手动创建完成此系统构建所需的最小设备节点集
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 需要一些符号链接和目录,这些链接和目录在系统启动期间由 LFS-Bootscripts 包创建。 由于这是一个 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——尚未创建,但也不是文件系统正确挂载所必需的。 因此,可以安全地忽略该警告。