source: chapter06/makedev.xml@ e1c7e32

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 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/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since e1c7e32 was e1c7e32, checked in by Alex Gronenwoud <alex@…>, 20 years ago

Cleaning up the PTY business for the test suites.

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

  • Property mode set to 100644
File size: 4.1 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. Device nodes can be
31created by issuing 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 device the 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 is 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, you will have to create a few static ptyXX and ttyXX
69device nodes instead. To do this, open <filename>make_devices</filename> in
70your editor, go to the section "Pseudo-TTY masters" and enable a few ptyXX
71devices -- a handful are enough to enable the test suites to run, but if you
72plan to run a kernel without devpts support you will probably need many more
73(every xterm, ssh connection, telnet connection, and the like, uses one of
74these pseudo terminals). In the immediately following section "Pseudo-TTY
75slaves", enable the corresponding ttyXX devices. When you are done, rerun
76<command>./make_devices</command> from inside <filename>/dev</filename> to
77have it create the new devices.</para>
78
79</sect2>
80
81&aa-makedev-shortdesc;
82&aa-makedev-desc;
83
84</sect1>
85
Note: See TracBrowser for help on using the repository browser.