<< Back to shouce.jb51.net

6.8. Populating /dev

6.8.1. 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. Create these by running the following commands:

mknod -m 600 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3

6.8.2. Mounting ramfs and Populating /dev

The ideal way to populate /dev is to mount a ramfs onto /dev, like tmpfs, and create the devices on there during each bootup. Since the system has not been booted, it is necessary to do what the bootscripts would otherwise do and populate /dev. Begin by mounting /dev:

mount -n -t ramfs none /dev

Run the installed udevstart program to create the initial devices based on all the information in /sys:

/tools/sbin/udevstart

There are some symlinks and directories required by LFS that are not created by Udev, so create those here:

ln -s /proc/self/fd /dev/fd
ln -s /proc/self/fd/0 /dev/stdin
ln -s /proc/self/fd/1 /dev/stdout
ln -s /proc/self/fd/2 /dev/stderr
ln -s /proc/kcore /dev/core
mkdir /dev/pts
mkdir /dev/shm

Finally, mount the proper virtual (kernel) file systems on the newly-created directories:

mount -t devpts -o gid=4,mode=620 none /dev/pts
mount -t tmpfs none /dev/shm

The mount commands executed above may result in the following warning message:

can't open /etc/fstab: No such file or directory.

This file—/etc/fstab—has not been created yet but is also not required for the file systems to be properly mounted. As such, the warning can be safely ignored.