From 940c8495ae3e96d22856e51266bd02f0840de25a Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Tue, 8 Mar 2022 01:19:06 +0800 Subject: [PATCH] kernfs: remove static node creation, and update the text This is to match the "new" way of device handling with devtmpfs (already widely used in recent ten years). In a normal booting process, the kernel mounts devtmpfs at very early stage. So the static nodes won't be used at all. The only situation where the kernel can't mount devtmpfs is "/dev is missing", but it means those two static nodes can't exist anyway, and a normal LFS system (without initramfs) won't boot in such a bad situation. Removing static /dev/console and /dev/null may cause trouble for those people or scripts chroot into LFS tree without mounting devtmpfs. But entering a chroot with only console and null in /dev is already problematic. For a reference, If a systemd service is started with PrivateDevices=true, systemd will create 18 nodes and symlinks to form a "minimal" /dev. --- chapter07/kernfs.xml | 45 +++++++++++++------------------------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/chapter07/kernfs.xml b/chapter07/kernfs.xml index f34155d7b..8746ea1e9 100644 --- a/chapter07/kernfs.xml +++ b/chapter07/kernfs.xml @@ -24,41 +24,22 @@ mkdir -pv $LFS/{dev,proc,sys,run} - - Creating Initial Device Nodes - - When the kernel boots the system, it requires the presence of a few - device nodes, in particular the console and null devices. The device nodes must be - created on the hard disk so that they are available before the kernel - populates /dev), and - additionally when Linux is started with - init=/bin/bash. Create the devices by running the - following commands: - -mknod -m 600 $LFS/dev/console c 5 1 -mknod -m 666 $LFS/dev/null c 1 3 - - - Mounting and Populating /dev - The recommended method of populating the /dev directory with devices is to mount a - virtual filesystem (such as tmpfs) on the /dev directory, and allow the devices to be - created dynamically on that virtual filesystem as they are detected or - accessed. Device creation is generally done during the boot process - by Udev. Since this new system does not yet have Udev and has not yet - been booted, it is necessary to mount and populate /dev manually. This is accomplished by bind - mounting the host system's /dev - directory. A bind mount is a special type of mount that allows you to - create a mirror of a directory or mount point to some other location. Use - the following command to achieve this: + During a normal boot, the kernel automatically mounts the + devtmpfs filesystem on the + /dev directory, and allow the + devices to be created dynamically on that virtual filesystem as they + are detected or accessed. Device creation is generally done during the + boot process by Udev. Since this new system does not yet have Udev and + has not yet been booted, it is necessary to mount and populate + /dev manually. This is + accomplished by bind mounting the host system's + /dev directory. A bind mount is + a special type of mount that allows you to create a mirror of a + directory or mount point to some other location. Use the following + command to achieve this: mount -v --bind /dev $LFS/dev