| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | <sect1 id="ch-system-MAKEDEV" xreflabel="Make_devices"><title>Creating devices with Make_devices-&makedev-version;</title><?dbhtml filename="makedevices.html" dir="chapter06"?><para>The Make_devices package contains a script for creating devicenodes.</para><screen>&buildtime; &makedev-time;&diskspace; &makedev-compsize;</screen>&aa-makedev-down;&aa-makedev-dep;<sect2><title> </title><para> </para></sect2><sect2><title>Making devices</title><para>Note that unpacking the<filename>make_devices-&makedev-version;.bz2</filename> file doesn'tcreate a directory for you to <command>cd</command> into, as the filecontains only a shell script.</para><para>Install the <filename>make_devices</filename> script:</para><screen><userinput>bzcat make_devices-&makedev-version;.bz2 > /dev/make_deviceschmod 754 /dev/make_devices</userinput></screen><para>Device nodes are special files: things that can generate or receive data.They usually correspond to physical pieces of hardware, and can be created byissuing commands of the form: <command>mknod -m mode name type majorminor</command>. In such a command, <emphasis>mode</emphasis> is the usualoctal read/write/execute permissions triplet, and <emphasis>name</emphasis> isthe name of the device file to be created. It may seem surprising, but thedevice name is actually arbitrary, except that most programs rely on devicessuch as <filename>/dev/null</filename> having their usual names. The remainingthree parameters tell the kernel what piece of hardware the device nodeactually refers to. The <emphasis>type</emphasis> is a letter, either b or c,indicating whether the device is accessed in blocks (such as a hard disk) orcharacter by character (such as the console). And <emphasis>major</emphasis>and <emphasis>minor</emphasis> are numbers, together forming a code thatidentifies the device to the kernel. A list of the currently assigned devicenumbers for Linux can be found in the file <filename>devices.txt</filename> inthe <filename class="directory">Documentation</filename> subdirectory of thekernel sources.</para><para>Note that the same major/minor combination are usually assigned to both ablock and a character device. These are, however, completely unrelated devicesthat cannot be interchanged. A device is identified by the type/major/minortriple, not just the major/minor pair, so when creating a device node it isimportant to choose the correct <emphasis>type</emphasis> of device.</para><para>Because looking up the type/major/minor triples and using<command>mknod</command> manually is tedious and error-prone, the<filename>make_devices</filename> script has been created. It contains a wholeseries of <command>mknod</command> commands, one for each device, complete withrecommended name, permissions and group assignment. It has been set up so thatonly a minimal set of commonly used devices is enabled and the other lines arecommented out. You should open <filename>make_devices</filename> in an editorand customize it to your needs. This takes some time, but is very simple. Whenyou are satisfied, run the script to create the device files:</para><screen><userinput>cd /dev./make_devices</userinput></screen><para>If you had success with mounting the devpts file system earlier in <xreflinkend="ch-system-proc"/>, you can continue with the next section. If you wereunable to mount devpts, now is the time to try the alternatives. If your kernelsupports the devfs file system, run the following command to mountdevfs:</para><screen><userinput>mount -t devfs devfs /dev</userinput></screen><para>This will mount the devfs file system over the top of the new static<filename>/dev</filename> structure. This poses no problems, as the devicenodes created are still present, they are just hidden by the new devfs filesystem.</para><para>If that didn't work either, the only option left is to create a few ptyXXand ttyXX device nodes. To do this, open <filename>make_devices</filename> inyour editor, go to the section "Pseudo-TTY masters" and enable as many ptyXXdevices as you think you will need (one for every active xterm, ssh connection,telnet connection, and so on). In the immediately following section "Pseudo-TTYslaves", enable the corresponding ttyXX devices. When you are done, rerun<command>./make_devices</command> from inside <filename>/dev</filename> to haveit create the new devices.</para></sect2>&aa-makedev-shortdesc;&aa-makedev-desc;</sect1>
 |