Changeset 540fd31 for chapter06/makedev.xml
- Timestamp:
- 02/07/2004 02:55:52 PM (21 years ago)
- Branches:
- 10.0, 10.0-rc1, 10.1, 10.1-rc1, 11.0, 11.0-rc1, 11.0-rc2, 11.0-rc3, 11.1, 11.1-rc1, 11.2, 11.2-rc1, 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, 12.2, 12.2-rc1, 6.0, 6.1, 6.1.1, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.5-systemd, 7.6, 7.6-systemd, 7.7, 7.7-systemd, 7.8, 7.8-systemd, 7.9, 7.9-systemd, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, arm, bdubbs/gcc13, ml-11.0, multilib, renodr/libudev-from-systemd, s6-init, trunk, v5_1, v5_1_1, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/lfs-next, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/loongarch-12.2, xry111/mips64el, xry111/multilib, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
- Children:
- 7873a7c
- Parents:
- e8692c5e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter06/makedev.xml
re8692c5e r540fd31 1 <sect1 id="ch-system-MAKEDEV" xreflabel="Make dev">2 <title>Creating devices with Make dev-&makedev-version;</title>3 <?dbhtml filename="makedev .html" dir="chapter06"?>1 <sect1 id="ch-system-MAKEDEV" xreflabel="Make_devices"> 2 <title>Creating devices with Make_devices-&makedev-version;</title> 3 <?dbhtml filename="makedevices.html" dir="chapter06"?> 4 4 5 <para>The MAKEDEV package contains a script for making device nodes.</para> 5 <para>The Make_devices package contains a script for creating device 6 nodes.</para> 6 7 7 8 <screen>&buildtime; &makedev-time; … … 16 17 <title>Making devices</title> 17 18 18 <para>Note that unpacking the <filename>MAKEDEV-&makedev-version;.bz2</filename> 19 file doesn't create a directory for you to <command>cd</command> into, as 20 the file contains only a shell script.</para> 19 <para>Note that unpacking the 20 <filename>make_devices-&makedev-version;.bz2</filename> file doesn't 21 create a directory for you to <command>cd</command> into, as the file 22 contains only a shell script.</para> 21 23 22 <para>Install the < command>MAKEDEV</command> script:</para>24 <para>Install the <filename>make_devices</filename> script:</para> 23 25 24 <screen><userinput>bzcat MAKEDEV-&makedev-version;.bz2 > /dev/MAKEDEV25 chmod 754 /dev/ MAKEDEV</userinput></screen>26 <screen><userinput>bzcat make_devices-&makedev-version;.bz2 > /dev/make_devices 27 chmod 754 /dev/make_devices</userinput></screen> 26 28 27 <para>Run the script to create the device files:</para> 29 <para>Device nodes are special files: things that can generate or receive data. 30 They usually correspond to physical pieces of hardware, and can be created by 31 issuing commands of the form: <command>mknod -m mode name type major 32 minor</command>. In such a command, <emphasis>mode</emphasis> is the usual 33 octal read/write/execute permissions triplet, and <emphasis>name</emphasis> is 34 the name of the device file to be created. It may seem surprising, but the 35 device name is actually arbitrary, except that most programs rely on devices 36 such as <filename>/dev/null</filename> having their usual names. The remaining 37 three parameters tell the kernel what piece of hardware the device node 38 actually refers to. The <emphasis>type</emphasis> is a letter, either b or c, 39 indicating whether the device is accessed in blocks (such as a hard disk) or 40 character by character (such as the console). And <emphasis>major</emphasis> 41 and <emphasis>minor</emphasis> are numbers, together forming a code that 42 identifies the device to the kernel. A list of the currently assigned device 43 numbers for Linux can be found in the file <filename>devices.txt</filename> in 44 the <filename class="directory">Documentation</filename> subdirectory of the 45 kernel sources.</para> 46 47 <para>Note that the same major/minor combination are usually assigned to both a 48 block and a character device. These are, however, completely unrelated devices 49 that cannot be interchanged. A device is identified by the type/major/minor 50 triple, not just the major/minor pair, so when creating a device node it is 51 important to choose the correct <emphasis>type</emphasis> of device.</para> 52 53 <para>Because looking up the type/major/minor triples and using 54 <command>mknod</command> manually is tedious and error-prone, the 55 <filename>make_devices</filename> script has been created. It contains a whole 56 series of <command>mknod</command> commands, one for each device, complete with 57 recommended name, permissions and group assignment. It has been set up so that 58 only a minimal set of commonly used devices is enabled and the other lines are 59 commented out. You should open <filename>make_devices</filename> in an editor 60 and customize it to your needs. This takes some time, but is very simple. When 61 you are satisfied, run the script to create the device files:</para> 28 62 29 63 <screen><userinput>cd /dev 30 ./ MAKEDEV -v generic-nopty</userinput></screen>64 ./make_devices</userinput></screen> 31 65 32 <para>The meaning of the arguments:</para> 66 <para>(The FHS states that there should be a <filename>MAKEDEV</filename> 67 script present in the <filename class="directory">/dev</filename> directory. 68 But the FHS is mistaken: it should not dictate anything about files, and limit 69 itself to directories.)</para> 33 70 34 <itemizedlist> 35 <listitem><para><userinput>-v</userinput>: This tells the script to run in 36 verbose mode.</para></listitem> 37 38 <listitem><para><userinput>generic-nopty</userinput>: This instructs 39 <command>MAKEDEV</command> to create a generic selection of commonly used 40 device special files, except for the ptyXX and ttyXX range of files. We don't 41 need those files because we are going to use Unix98 PTYs via the 42 <emphasis>devpts</emphasis> file system.</para></listitem> 43 </itemizedlist> 44 45 <para>If it turns out that some special device <filename>zzz</filename> that 46 you need is missing, try running <userinput>./MAKEDEV -v zzz</userinput>. 47 Alternatively, you may create devices via the <command>mknod</command> 48 program. Please refer to its man and info pages if you need more 49 information.</para> 50 51 <para>If you wish your system to be FHS-compliant, then the 52 <filename>MAKEDEV</filename> script has to remain present in the 53 <filename class="directory">/dev</filename> directory. This way it is always 54 available for making extra device nodes.</para> 55 56 <para>Additionally, if you were unable to mount the devpts file system earlier 57 in <xref linkend="ch-system-proc"/>, now is the time to try the alternatives. If 58 your kernel supports the devfs file system, run the following command to mount 71 <para>If you had success with mounting the devpts file system earlier in <xref 72 linkend="ch-system-proc"/>, you can continue with the next section. If you were 73 unable to mount devpts, now is the time to try the alternatives. If your kernel 74 supports the devfs file system, run the following command to mount 59 75 devfs:</para> 60 76 … … 62 78 63 79 <para>This will mount the devfs file system over the top of the new static 64 <filename>/dev</filename> structure. This poses no problems, as the device nodes65 created are still present, they are just hidden by the new devfs 66 filesystem.</para>80 <filename>/dev</filename> structure. This poses no problems, as the device 81 nodes created are still present, they are just hidden by the new devfs file 82 system.</para> 67 83 68 <para>If this still doesn't work, the only option left is to use the MAKEDEV 69 script to create the ptyXX and ttyXX range of files that would otherwise not be 70 needed. Ensure you are still in the <filename>/dev</filename> directory then run 71 <userinput>./MAKEDEV -v pty</userinput>. The downside of this is, we are 72 creating an extra 512 device special files which will not be needed when we 73 finally boot into the finished LFS system.</para> 84 <para>If that didn't work either, the only option left is to create a few ptyXX 85 and ttyXX device nodes. To do this, open <filename>make_devices</filename> in 86 your editor, go to the section "Pseudo-TTY masters" and enable as many ptyXX 87 devices as you think you will need (one for every active xterm, ssh connection, 88 telnet connection, and so on). In the immediately following section "Pseudo-TTY 89 slaves", enable the corresponding ttyXX devices. When you are done, rerun 90 <command>./make_devices</command> from inside <filename>/dev</filename> to have 91 it create the new devices.</para> 74 92 75 93 </sect2>
Note:
See TracChangeset
for help on using the changeset viewer.