The commands in the remainder of the book should be run as the
          root user. Check that ${CLFS} is
          set in the root user’s
          environment before proceeding.
        
Various file systems exported by the kernel are used to communicate to and from the kernel itself. These file systems are virtual in that no disk space is used for them. The content of the file systems resides in memory.
Begin by creating directories onto which the file systems will be mounted:
mkdir -pv ${CLFS}/{dev,proc,run,sys}
      
        Two device nodes, /dev/console and
        /dev/null, are required to be present
        on the file system. These are needed by the kernel even before
        starting Udev early in the boot process, so we create them here:
      
mknod -m 600 ${CLFS}/dev/console c 5 1
mknod -m 666 ${CLFS}/dev/null c 1 3
      
        Once the system is complete and booting, the rest of our device nodes
        will be created by the kernel's devtmpfs file system. For now though, we will
        just use the “bind” option in
        the mount command to make our host system's /dev structure appear in the new CLFS file system:
      
mount -v -o bind /dev ${CLFS}/dev
      Now mount the remaining file systems:
mount -vt devpts -o gid=5,mode=620 devpts ${CLFS}/dev/pts
mount -vt proc proc ${CLFS}/proc
mount -vt tmpfs tmpfs ${CLFS}/run
mount -vt sysfs sysfs ${CLFS}/sys
      
        On some host systems, /dev/shm is a
        symbolic link to /run/shm. If it is,
        create a directory in /run:
      
[ -h ${CLFS}/dev/shm ] && mkdir -pv ${CLFS}/$(readlink ${CLFS}/dev/shm)
      Remember that if for any reason you stop working on the CLFS system and start again later, it is important to check that these file systems are mounted again before entering the chroot environment.