内核对外提供了一些文件系统,以便自己和用户空间进行通信。它们是虚拟文件系统,并不占用磁盘空间,其内容保留在内存中。
首先创建这些文件系统的挂载点:
mkdir -pv $LFS/{dev,proc,sys,run}
在内核引导系统时,它需要一些设备节点,特别是 console
和
null
两个设备。它们需要创建在硬盘上,这样在内核填充
/dev
前,或者 Linux 使用 init=/bin/bash
内核选项启动时,也能使用它们。运行以下命令创建它们:
mknod -m 600 $LFS/dev/console c 5 1 mknod -m 666 $LFS/dev/null c 1 3
用设备文件填充 /dev
目录的推荐方法是挂载一个虚拟文件系统 (例如
tmpfs
) 到 /dev
,然后在设备被发现或访问时动态地创建设备文件。这个工作通常由 Udev
在系统引导时完成。然而,我们的新系统还没有 Udev,也没有被引导过,因此必须手工挂载和填充 /dev
。这可以通过绑定挂载宿主系统的 /dev
目录就实现。绑定挂载是一种特殊挂载类型,它允许在另外的位置创建某个目录或挂载点的映像。运行以下命令进行绑定挂载:
mount -v --bind /dev $LFS/dev
现在挂载其余的虚拟内核文件系统:
mount -v --bind /dev/pts $LFS/dev/pts mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys mount -vt tmpfs tmpfs $LFS/run
在某些宿主系统上,/dev/shm
是一个指向 /run/shm
的符号链接。我们已经在 /run 下挂载了 tmpfs
文件系统,因此在这里只需要创建一个目录。
if [ -h $LFS/dev/shm ]; then mkdir -pv $LFS/$(readlink $LFS/dev/shm) fi