source: chapter06/makedev.xml@ 418e6cc

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 418e6cc was c76accc, checked in by Alex Gronenwoud <alex@…>, 21 years ago

Miscellaneous adjustments.

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

  • Property mode set to 100644
File size: 4.4 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>If you had success with mounting the devpts file system earlier in <xref
67linkend="ch-system-proc"/>, you can continue with the next section. If you were
68unable to mount devpts, now is the time to try the alternatives. If your kernel
69supports the devfs file system, run the following command to mount
70devfs:</para>
71
72<screen><userinput>mount -t devfs devfs /dev</userinput></screen>
73
74<para>This will mount the devfs file system over the top of the new static
75<filename>/dev</filename> structure. This poses no problems, as the device
76nodes created are still present, they are just hidden by the new devfs file
77system.</para>
78
79<para>If that didn't work either, the only option left is to create a few ptyXX
80and ttyXX device nodes. To do this, open <filename>make_devices</filename> in
81your editor, go to the section "Pseudo-TTY masters" and enable as many ptyXX
82devices as you think you will need (one for every active xterm, ssh connection,
83telnet connection, and so on). In the immediately following section "Pseudo-TTY
84slaves", enable the corresponding ttyXX devices. When you are done, rerun
85<command>./make_devices</command> from inside <filename>/dev</filename> to have
86it create the new devices.</para>
87
88</sect2>
89
90&aa-makedev-shortdesc;
91&aa-makedev-desc;
92
93</sect1>
94
Note: See TracBrowser for help on using the repository browser.