source: chapter06/makedev.xml@ 39892f1

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
Last change on this file since 39892f1 was 540fd31, checked in by Alex Gronenwoud <alex@…>, 21 years ago

Replacing MAKEDEV with make_devices.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3236 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 4.7 KB
Line 
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
5<para>The Make_devices package contains a script for creating device
6nodes.</para>
7
8<screen>&buildtime; &makedev-time;
9&diskspace; &makedev-compsize;</screen>
10
11&aa-makedev-down;
12&aa-makedev-dep;
13
14<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
15
16<sect2>
17<title>Making devices</title>
18
19<para>Note that unpacking the
20<filename>make_devices-&makedev-version;.bz2</filename> file doesn't
21create a directory for you to <command>cd</command> into, as the file
22contains only a shell script.</para>
23
24<para>Install the <filename>make_devices</filename> script:</para>
25
26<screen><userinput>bzcat make_devices-&makedev-version;.bz2 &gt; /dev/make_devices
27chmod 754 /dev/make_devices</userinput></screen>
28
29<para>Device nodes are special files: things that can generate or receive data.
30They usually correspond to physical pieces of hardware, and can be created by
31issuing commands of the form: <command>mknod -m mode name type major
32minor</command>. In such a command, <emphasis>mode</emphasis> is the usual
33octal read/write/execute permissions triplet, and <emphasis>name</emphasis> is
34the name of the device file to be created. It may seem surprising, but the
35device name is actually arbitrary, except that most programs rely on devices
36such as <filename>/dev/null</filename> having their usual names. The remaining
37three parameters tell the kernel what piece of hardware the device node
38actually refers to. The <emphasis>type</emphasis> is a letter, either b or c,
39indicating whether the device is accessed in blocks (such as a hard disk) or
40character by character (such as the console). And <emphasis>major</emphasis>
41and <emphasis>minor</emphasis> are numbers, together forming a code that
42identifies the device to the kernel. A list of the currently assigned device
43numbers for Linux can be found in the file <filename>devices.txt</filename> in
44the <filename class="directory">Documentation</filename> subdirectory of the
45kernel sources.</para>
46
47<para>Note that the same major/minor combination are usually assigned to both a
48block and a character device. These are, however, completely unrelated devices
49that cannot be interchanged. A device is identified by the type/major/minor
50triple, not just the major/minor pair, so when creating a device node it is
51important 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
56series of <command>mknod</command> commands, one for each device, complete with
57recommended name, permissions and group assignment. It has been set up so that
58only a minimal set of commonly used devices is enabled and the other lines are
59commented out. You should open <filename>make_devices</filename> in an editor
60and customize it to your needs. This takes some time, but is very simple. When
61you are satisfied, run the script to create the device files:</para>
62
63<screen><userinput>cd /dev
64./make_devices</userinput></screen>
65
66<para>(The FHS states that there should be a <filename>MAKEDEV</filename>
67script present in the <filename class="directory">/dev</filename> directory.
68But the FHS is mistaken: it should not dictate anything about files, and limit
69itself to directories.)</para>
70
71<para>If you had success with mounting the devpts file system earlier in <xref
72linkend="ch-system-proc"/>, you can continue with the next section. If you were
73unable to mount devpts, now is the time to try the alternatives. If your kernel
74supports the devfs file system, run the following command to mount
75devfs:</para>
76
77<screen><userinput>mount -t devfs devfs /dev</userinput></screen>
78
79<para>This will mount the devfs file system over the top of the new static
80<filename>/dev</filename> structure. This poses no problems, as the device
81nodes created are still present, they are just hidden by the new devfs file
82system.</para>
83
84<para>If that didn't work either, the only option left is to create a few ptyXX
85and ttyXX device nodes. To do this, open <filename>make_devices</filename> in
86your editor, go to the section "Pseudo-TTY masters" and enable as many ptyXX
87devices as you think you will need (one for every active xterm, ssh connection,
88telnet connection, and so on). In the immediately following section "Pseudo-TTY
89slaves", enable the corresponding ttyXX devices. When you are done, rerun
90<command>./make_devices</command> from inside <filename>/dev</filename> to have
91it create the new devices.</para>
92
93</sect2>
94
95&aa-makedev-shortdesc;
96&aa-makedev-desc;
97
98</sect1>
99
Note: See TracBrowser for help on using the repository browser.