| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [  <!ENTITY % general-entities SYSTEM "../general.ent">  %general-entities;]><sect1 id="ch-system-devices">  <?dbhtml filename="devices.html"?>  <title>Populating /dev</title>  <indexterm zone="ch-system-devices">    <primary sortas="e-/dev/">/dev/*</primary>  </indexterm>  <sect2>    <title>Creating Initial Device Nodes</title>    <para>When the kernel boots the system, it requires the presence of a few    device nodes, in particular the <filename class="devicefile">console</filename>    and <filename class="devicefile">null</filename> devices. The device nodes    will be created on the hard disk so that they are available before    <command>udev</command> has been started, and additionally when Linux is    started in single user mode (hence the restrictive permissions on    <filename class="devicefile">console</filename>). Create the devices by    running the following commands:</para><screen><userinput>mknod -m 600 /dev/console c 5 1mknod -m 666 /dev/null c 1 3</userinput></screen>  </sect2>  <sect2>    <title>Mounting tmpfs and Populating /dev</title>    <para>The recommended method of populating the <filename    class="directory">/dev</filename> directory with devices is to mount a    virtual filesystem (such as <systemitem class="filesystem">tmpfs</systemitem>)    on the <filename class="directory">/dev</filename> directory, and allow the    devices to be created dynamically on that virtual filesystem as they are    detected or accessed. This is generally done during the boot process. Since    this new system has not been booted, it is necessary to do what the    LFS-Bootscripts package would otherwise do by mounting <filename    class="directory">/dev</filename>:</para><screen><userinput>mount -nvt tmpfs none /dev</userinput></screen>    <para>The Udev package is what actually creates the devices in the <filename    class="directory">/dev</filename> directory. Since it will not be installed    until later on in the process, manually create the minimal set of device nodes    needed to complete the building of this system:</para><screen><userinput>mknod -m 622 /dev/console c 5 1mknod -m 666 /dev/null c 1 3mknod -m 666 /dev/zero c 1 5mknod -m 666 /dev/ptmx c 5 2mknod -m 666 /dev/tty c 5 0mknod -m 444 /dev/random c 1 8mknod -m 444 /dev/urandom c 1 9chown -v root:tty /dev/{console,ptmx,tty}</userinput></screen>    <para>There are some symlinks and directories required by LFS that are    created during system startup by the LFS-Bootscripts package. Since this    is a chroot environment and not a booted environment, those symlinks and    directories need to be created here:</para><screen><userinput>ln -sv /proc/self/fd /dev/fdln -sv /proc/self/fd/0 /dev/stdinln -sv /proc/self/fd/1 /dev/stdoutln -sv /proc/self/fd/2 /dev/stderrln -sv /proc/kcore /dev/coremkdir -v /dev/ptsmkdir -v /dev/shm</userinput></screen>    <para>Finally, mount the proper virtual (kernel) file systems on the    newly-created directories:</para><screen><userinput>mount -vt devpts -o gid=4,mode=620 none /dev/ptsmount -vt tmpfs none /dev/shm</userinput></screen>    <para>The <command>mount</command> commands executed above may result    in the following warning message:</para><screen><computeroutput>can't open /etc/fstab: No such file or directory.</computeroutput></screen>    <para>This file—<filename>/etc/fstab</filename>—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.</para>  </sect2></sect1>
 |