source: chapter06/devices.xml@ b2c8a77

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.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 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 b2c8a77 was a55f0868, checked in by Matthew Burgess <matthew@…>, 19 years ago

Expand explanation of device node creation in chapter 6 (fixes bug 1593)

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

  • Property mode set to 100644
File size: 3.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
3 <!ENTITY % general-entities SYSTEM "../general.ent">
4 %general-entities;
5]>
6<sect1 id="ch-system-devices">
7<title>Populating /dev</title>
8<?dbhtml filename="devices.html"?>
9
10<indexterm zone="ch-system-devices"><primary sortas="e-/dev/">/dev/*</primary></indexterm>
11
12<sect2>
13<title>Creating Initial Device Nodes</title>
14
15<para>When the kernel boots the system, it requires the presence of a few device
16nodes, in particular the <filename class="devicefile">console</filename> and
17<filename class="devicefile">null</filename> devices. The device nodes will
18be created on the hard disk so that they are available before
19<command>udev</command> has been started, and additionally when Linux is started
20in single user mode (hence the restrictive permissions on
21<filename class="devicefile">console</filename>). Create the devices by running
22the following commands:</para>
23
24<screen><userinput>mknod -m 600 /dev/console c 5 1
25mknod -m 666 /dev/null c 1 3</userinput></screen>
26</sect2>
27
28<sect2>
29<title>Mounting tmpfs and Populating /dev</title>
30
31<para>The recommended method of populating the <filename
32class="directory">/dev</filename> directory with devices is to mount a virtual
33filesystem (such as <systemitem class="filesystem">tmpfs</systemitem>) on the
34<filename class="directory">/dev</filename> directory, and allow the devices to
35be created dynamically on that virtual filesystem as they are detected or
36accessed. This is generally done during the boot process. Since this new system
37has not been booted, it is necessary to do what the LFS-Bootscripts package would
38otherwise do by mounting <filename class="directory">/dev</filename>:</para>
39
40<screen><userinput>mount -n -t tmpfs none /dev</userinput></screen>
41
42<para>The Udev package is what actually creates the devices in the <filename
43class="directory">/dev</filename> directory. Since it will not be installed
44until later on in the process, manually create the minimal set of device nodes
45needed to complete the building of this system:</para>
46
47<screen><userinput>mknod -m 622 /dev/console c 5 1
48mknod -m 666 /dev/null c 1 3
49mknod -m 666 /dev/zero c 1 5
50mknod -m 666 /dev/ptmx c 5 2
51mknod -m 666 /dev/tty c 5 0
52mknod -m 444 /dev/random c 1 8
53mknod -m 444 /dev/urandom c 1 9
54chown root:tty /dev/{console,ptmx,tty}</userinput></screen>
55
56<para>There are some symlinks and directories required by LFS that are created
57during system startup by the LFS-Bootscripts package. Since this is a chroot
58environment and not a booted environment, those symlinks and directories need to
59be created here:</para>
60
61<screen><userinput>ln -s /proc/self/fd /dev/fd
62ln -s /proc/self/fd/0 /dev/stdin
63ln -s /proc/self/fd/1 /dev/stdout
64ln -s /proc/self/fd/2 /dev/stderr
65ln -s /proc/kcore /dev/core
66mkdir /dev/pts
67mkdir /dev/shm</userinput></screen>
68
69<para>Finally, mount the proper virtual (kernel) file systems on the
70newly-created directories:</para>
71
72<screen><userinput>mount -t devpts -o gid=4,mode=620 none /dev/pts
73mount -t tmpfs none /dev/shm</userinput></screen>
74
75<para>The <command>mount</command> commands executed above may result
76in the following warning message:</para>
77
78<screen><computeroutput>can't open /etc/fstab: No such file or directory.</computeroutput></screen>
79
80<para>This file&mdash;<filename>/etc/fstab</filename>&mdash;has not
81been created yet but is also not required for the file systems to be
82properly mounted. As such, the warning can be safely ignored.</para>
83</sect2>
84
85</sect1>
86
Note: See TracBrowser for help on using the repository browser.