| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <?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"><title>Populating /dev</title><?dbhtml filename="devices.html"?><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 devicenodes, in particular the <filename class="devicefile">console</filename> and<filename class="devicefile">null</filename> devices.  The device nodes willbe created on the hard disk so that they are available before<command>udev</command> has been started, and additionally when Linux is startedin single user mode (hence the restrictive permissions on<filename class="devicefile">console</filename>).  Create the devices by runningthe 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 <filenameclass="directory">/dev</filename> directory with devices is to mount a virtualfilesystem (such as <systemitem class="filesystem">tmpfs</systemitem>) on the<filename class="directory">/dev</filename> directory, and allow the devices tobe created dynamically on that virtual filesystem as they are detected oraccessed. This is generally done during the boot process. Since this new systemhas not been booted, it is necessary to do what the LFS-Bootscripts package wouldotherwise 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 <filenameclass="directory">/dev</filename> directory. Since it will not be installeduntil later on in the process, manually create the minimal set of device nodesneeded 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 createdduring system startup by the LFS-Bootscripts package. Since this is a chrootenvironment and not a booted environment, those symlinks and directories need tobe 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 thenewly-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 resultin 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 notbeen created yet but is also not required for the file systems to beproperly mounted. As such, the warning can be safely ignored.</para></sect2></sect1>
 |