Changes in chapter07/kernfs.xml [d963661:9407694]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter07/kernfs.xml
rd963661 r9407694 16 16 17 17 <para>Applications running in user space utilize various file 18 systems exported by the kernel to communicate18 systems created by the kernel to communicate 19 19 with the kernel itself. These file systems are virtual: no disk 20 space is used for them. The content of the file systems resides in 21 memory.</para> 20 space is used for them. The content of these file systems resides in 21 memory. These file systems must be mounted in the $LFS directory tree 22 so the applications can find them in the chroot environment.</para> 22 23 23 <para>Begin by creating directories on which thefile systems will be24 <para>Begin by creating the directories on which these virtual file systems will be 24 25 mounted:</para> 25 26 26 <screen><userinput>mkdir -pv /{proc,sys,run}</userinput></screen> 27 <screen><userinput>mkdir -pv $LFS/{dev,proc,sys,run}</userinput></screen> 28 29 <sect2 id="ch-tools-bindmount"> 30 <title>Mounting and Populating /dev</title> 31 32 <para>During a normal boot of an LFS system, the kernel automatically 33 mounts the <systemitem class="filesystem">devtmpfs</systemitem> 34 file system on the 35 <filename class="directory">/dev</filename> directory; the kernel 36 creates device nodes on that virtual file system during the boot process, 37 or when a device is first detected or accessed. The udev daemon may 38 change the ownership or permissions of the device nodes created by the 39 kernel, and create new device nodes or symlinks, to ease the work of 40 distro maintainers and system administrators. (See 41 <xref linkend='ch-config-udev-device-node-creation'/> for details.) 42 If the host kernel supports &devtmpfs;, we can simply mount a 43 &devtmpfs; at <filename class='directory'>$LFS/dev</filename> and rely 44 on the kernel to populate it.</para> 45 46 <para>But some host kernels lack &devtmpfs; support; these 47 host distros use different methods to create the content of 48 <filename class="directory">/dev</filename>. 49 So the only host-agnostic way to populate the 50 <filename class="directory">$LFS/dev</filename> directory is 51 by bind mounting the host system's 52 <filename class="directory">/dev</filename> directory. A bind mount is 53 a special type of mount that makes a directory subtree or a file 54 visible at some other location. Use the following 55 command to do this.</para> 56 57 <screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen> 58 59 </sect2> 27 60 28 61 <sect2 id="ch-tools-kernfsmount"> 29 62 <title>Mounting Virtual Kernel File Systems</title> 30 63 31 <para>The kernel has already mounted 32 <systemitem class="filesystem">devtmpfs</systemitem>. 33 Mount the remaining virtual kernel filesystems:</para> 64 <para>Now mount the remaining virtual kernel file systems:</para> 34 65 35 <screen><userinput>mkdir -pv /dev/{pts,shm} 36 mount -vt devpts /dev/pts /dev/pts -o gid=5,mode=620 37 mount -vt proc proc /proc 38 mount -vt sysfs sysfs /sys 39 mount -vt tmpfs tmpfs /run 40 mount -vt tmpfs tmpfs /dev/shm -o nosuid,nodev</userinput></screen> 41 66 <screen><userinput>mount -v --bind /dev/pts $LFS/dev/pts 67 mount -vt proc proc $LFS/proc 68 mount -vt sysfs sysfs $LFS/sys 69 mount -vt tmpfs tmpfs $LFS/run</userinput></screen> 70 <!-- 42 71 <variablelist> 43 72 <title>The meaning of the mount options for devpts:</title> … … 67 96 68 97 </variablelist> 98 --> 99 <para>In some host systems, <filename>/dev/shm</filename> is a 100 symbolic link to <filename class="directory">/run/shm</filename>. 101 The /run tmpfs was mounted above so in this case only a 102 directory needs to be created.</para> 69 103 70 </sect2> 104 <para>In other host systems <filename>/dev/shm</filename> is a mount point 105 for a tmpfs. In that case the mount of /dev above will only create 106 /dev/shm as a directory in the chroot environment. In this situation 107 we must explicitly mount a tmpfs:</para> 71 108 72 <sect2 id="ch-tools-devadjust"> 73 <title>Adjusting devtmpfs</title> 74 75 <para>Now <systemitem class='filesystem'>proc</systemitem> filesystem 76 is mounted, we can replace the device nodes for standard I/O streams 77 with symlinks to pseudo files in 78 <filename class="directory">/proc/self/fd</filename> (which are symlinks 79 to the files connected to the standard I/O streams for the current 80 process). And, create another symlink recommended by the kernel 81 documentation. These are necessary for I/O redirection in the building 82 system of some packages to function properly:</para> 83 84 <screen><userinput>ln -sfv /proc/self/fd/0 /dev/stdin 85 ln -sfv /proc/self/fd/1 /dev/stdout 86 ln -sfv /proc/self/fd/2 /dev/stderr 87 ln -sv /proc/self/fd /dev</userinput></screen> 109 <screen><userinput>if [ -h $LFS/dev/shm ]; then 110 mkdir -pv $LFS/$(readlink $LFS/dev/shm) 111 else 112 mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm 113 fi</userinput></screen> 88 114 89 115 </sect2>
Note:
See TracChangeset
for help on using the changeset viewer.