| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [  <!ENTITY % general-entities SYSTEM "../general.ent">  %general-entities;]><sect1 id="ch-system-devices" xreflabel="devices"><title>Populating /dev with device nodes</title><?dbhtml filename="devices.html"?><indexterm zone="ch-system-devices"><primary sortas="e-Devices">Devices</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:</para><screen><userinput>mknod -m 600 /dev/console c 5 1mknod -m 666 /dev/null c 1 3</userinput></screen></sect2><sect2><title>Mounting ramfs and populating /dev</title><para>The ideal way to populate <filename class="directory">/dev</filename> isto mount a <systemitem class="filesystem">ramfs</systemitem> onto <filename class="directory">/dev </filename>like <systemitem class="filesystem">tmpfs</systemitem>, but itcannot be swapped) and create the devices on there during each bootup.  Since we haven'tbooted the system, we have to do what the bootscripts would otherwise do for us, andpopulate <filename class="directory">/dev</filename> ourselves.  Begin by mounting <filename class="directory">/dev</filename>:</para><screen><userinput>mount -n -t ramfs none /dev</userinput></screen><para>Now use the provided udevstart utility to create the initial devices based onall the information in <filename class="directory">/sys</filename>:</para><screen><userinput>/tools/sbin/udevstart</userinput></screen><para>There are some symlinks and directories required by LFS that are not created byUdev, so we create those ourselves here:</para><screen><userinput>ln -s /proc/self/fd /dev/fdln -s /proc/self/fd/0 /dev/stdinln -s /proc/self/fd/1 /dev/stdoutln -s /proc/self/fd/2 /dev/stderrln -s /proc/kcore /dev/coremkdir /dev/ptsmkdir /dev/shm</userinput></screen><para>Finally, mount the proper virtual (kernel) file systems on the directories we justcreated:</para><screen><userinput>mount -t devpts -o gid=4,mode=620 none /dev/ptsmount -t tmpfs none /dev/shm</userinput></screen></sect2></sect1>
 |