Made grammatical corrections and stylistic changes to chapter 7.3.

Added clarification; the virtual file systems expose certain information
to programs in user space; chroot won't work without them.
This commit is contained in:
David Bryant 2022-09-30 12:27:55 -05:00
parent 52ddd6c033
commit 29526d35ef

View File

@ -14,12 +14,14 @@
<primary sortas="e-/dev/">/dev/*</primary>
</indexterm>
<para>Various file systems exported by the kernel are used to communicate to
and from the kernel itself. These file systems are virtual in that no disk
<para>Applications running in user space utilize various file
systems exported by the kernel to communicate
with the kernel itself. These file systems are virtual: no disk
space is used for them. The content of the file systems resides in
memory.</para>
memory. These file systems must exist in the $LFS directory tree
before you can <command>chroot</command> successfully.</para>
<para>Begin by creating directories onto which the file systems will be
<para>Begin by creating directories on which the file systems will be
mounted:</para>
<screen><userinput>mkdir -pv $LFS/{dev,proc,sys,run}</userinput></screen>
@ -29,18 +31,18 @@
<para>During a normal boot, the kernel automatically mounts the
<systemitem class="filesystem">devtmpfs</systemitem> filesystem on the
<filename class="directory">/dev</filename> directory, and allow the
devices to be created dynamically on that virtual filesystem as they
are detected or accessed. Device creation is generally done during the
boot process by the kernel and Udev.
Since this new system does not yet have Udev and
<filename class="directory">/dev</filename> directory; the
devices are created dynamically on that virtual filesystem when they
are first detected or accessed. Device creation is generally done during the
boot process by the kernel and the udev program.
Since the new system does not yet include udev and
has not yet been booted, it is necessary to mount and populate
<filename class="directory">/dev</filename> manually. This is
the <filename class="directory">/dev</filename> directory manually. This is
accomplished by bind mounting the host system's
<filename class="directory">/dev</filename> directory. A bind mount is
a special type of mount that allows you to create a mirror of a
directory or mount point to some other location. Use the following
command to achieve this:</para>
directory or mount point at some other location. Use the following
command to do this:</para>
<screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen>
@ -89,10 +91,10 @@ mount -vt tmpfs tmpfs $LFS/run</userinput></screen>
The /run tmpfs was mounted above so in this case only a
directory needs to be created.</para>
<para>In other cases <filename>/dev/shm</filename> is a mountpoint
<para>In other host systems <filename>/dev/shm</filename> is a mount point
for a tmpfs. In that case the mount of /dev above will only create
/dev/shm in the chroot environment as a directory. In this situation
we explicitly mount a tmpfs,</para>
/dev/shm as a directory in the chroot environment. In this situation
we must explicitly mount a tmpfs:</para>
<screen><userinput>if [ -h $LFS/dev/shm ]; then
mkdir -pv $LFS/$(readlink $LFS/dev/shm)