Changeset ebecd08
- Timestamp:
- 11/16/2022 07:16:35 PM (18 months ago)
- Branches:
- 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, bdubbs/gcc13, multilib, renodr/libudev-from-systemd, trunk, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/mips64el, xry111/update-glibc
- Children:
- 091d624d, 16a1647
- Parents:
- f2dff2d
- git-author:
- David Bryant <davidbryant@…> (11/16/2022 07:15:01 PM)
- git-committer:
- David Bryant <davidbryant@…> (11/16/2022 07:16:35 PM)
- Location:
- chapter07
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter07/chroot.xml
rf2dff2d rebecd08 12 12 13 13 <para>Now that all the packages which are required to build the rest of the 14 needed tools are on the system, it is time to enter the chroot environment to15 finish installing the remaining temporary tools. This environment will be in16 use also for installingthe final system. As user <systemitem14 needed tools are on the system, it is time to enter the chroot environment and 15 finish installing the temporary tools. This environment will also be 16 used to install the final system. As user <systemitem 17 17 class="username">root</systemitem>, run the following command to enter the 18 environment that is, at the moment, populated with only thetemporary18 environment that is, at the moment, populated with nothing but temporary 19 19 tools:</para> 20 20 … … 27 27 28 28 <para>The <parameter>-i</parameter> option given to the <command>env</command> 29 command will clear all variables ofthe chroot environment. After that, only29 command will clear all the variables in the chroot environment. After that, only 30 30 the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and 31 31 <envar>PATH</envar> variables are set again. The 32 <parameter>TERM=$TERM</parameter> construct will setthe <envar>TERM</envar>32 <parameter>TERM=$TERM</parameter> construct sets the <envar>TERM</envar> 33 33 variable inside chroot to the same value as outside chroot. This variable is 34 needed forprograms like <command>vim</command> and <command>less</command>35 tooperate properly. If other variables are desired, such as34 needed so programs like <command>vim</command> and <command>less</command> 35 can operate properly. If other variables are desired, such as 36 36 <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set 37 them again.</para>37 them.</para> 38 38 39 39 <para>From this point on, there is no need to use the 40 <envar>LFS</envar> variable any more because all work will be restricted41 to the LFS file system . This is because the Bash shell is toldthat40 <envar>LFS</envar> variable any more because all work will be restricted 41 to the LFS file system; the <command>chroot</command> command tells the Bash shell that 42 42 <filename class="directory">$LFS</filename> is now the root 43 43 (<filename class="directory">/</filename>) directory.</para> … … 45 45 <para>Notice that <filename class="directory">/tools/bin</filename> is not 46 46 in the <envar>PATH</envar>. This means that the cross toolchain will no longer be 47 used in the chroot environment.</para>47 used.</para> 48 48 49 49 <para>Note that the <command>bash</command> prompt will say -
chapter07/cleanup.xml
rf2dff2d rebecd08 14 14 <title>Cleaning</title> 15 15 16 <para>First, remove the currently installed documentation to prevent them16 <para>First, remove the currently installed documentation files to prevent them 17 17 from ending up in the final system, and to save about 35 MB:</para> 18 18 … … 20 20 21 21 <para>Second, on a modern Linux system, the libtool .la files are only 22 useful for libltdl. No libraries in LFS are expected to beloaded by23 libltdl, and it's known that some .la files can cause BLFS package s24 fail to build. Remove those files now:</para>22 useful for libltdl. No libraries in LFS are loaded by 23 libltdl, and it's known that some .la files can cause BLFS package 24 failures. Remove those files now:</para> 25 25 26 26 <screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen> … … 43 43 backed up for later reuse. In case of fatal failures in the subsequent 44 44 chapters, it often turns out that removing everything and starting over 45 (more carefully) is the best optionto recover. Unfortunately, all the45 (more carefully) is the best way to recover. Unfortunately, all the 46 46 temporary files will be removed, too. To avoid spending extra time to 47 redo something which has been builtsuccessfully, creating a backup of47 redo something which has been done successfully, creating a backup of 48 48 the current LFS system may prove useful. 49 49 </para> … … 59 59 <para> 60 60 The following steps are performed from outside the chroot 61 environment. That means ,you have to leave the chroot environment61 environment. That means you have to leave the chroot environment 62 62 first before continuing. The reason for that is to 63 63 get access to file system locations outside of the chroot 64 environment to store/read the backup archive which should64 environment to store/read the backup archive, which ought 65 65 not be placed within the 66 <filename class="directory">$LFS</filename> hierarchy for 67 safety reasons. 66 <filename class="directory">$LFS</filename> hierarchy. 68 67 </para> 69 68 … … 79 78 <systemitem class="username">root</systemitem> on your host system. 80 79 Take extra care about the commands you're going to run as mistakes 81 here can modify your host system. Be aware that the80 made here can modify your host system. Be aware that the 82 81 environment variable <envar>LFS</envar> 83 82 is set for user <systemitem class="username">lfs</systemitem> by default … … 102 101 <para> 103 102 Make sure you have at least 1 GB free disk space (the source tarballs 104 will be included in the backup archive) on the file system containing105 directory where you create the backup archive.103 will be included in the backup archive) on the file system containing 104 the directory where you create the backup archive. 106 105 </para> 107 106 … … 109 108 Note that the instructions below specify the home directory of the host 110 109 system's <systemitem class="username">root</systemitem> user, which is 111 typically found on the root filesystem. 112 </para> 113 114 <para> 110 typically found on the root file system. 115 111 Replace <envar>$HOME</envar> by a directory of your choice if you 116 112 do not want to have the backup stored in <systemitem … … 150 146 <filename class="directory">$LFS</filename>, they are included in the 151 147 backup archive as well, so they do not need to be downloaded again. After 152 checking that <envar>$LFS</envar> is set properly, 148 checking that <envar>$LFS</envar> is set properly, you can 153 149 restore the backup by executing the following commands: 154 150 </para> … … 168 164 169 165 <para> 170 Again, double check that the environment has been set up properly166 Again, double check that the environment has been set up properly 171 167 and continue building the rest of the system. 172 168 </para> … … 176 172 If you left the chroot environment to create a backup or restart 177 173 building using a restore, remember to check that the virtual 178 file systems are still mounted (<command>findmnt | grep174 file systems are still mounted (<command>findmnt | grep 179 175 $LFS</command>). If they are not mounted, remount them now as 180 176 described in <xref linkend='ch-tools-kernfs'/> and re-enter the chroot -
chapter07/createfiles.xml
rf2dff2d rebecd08 35 35 </indexterm> 36 36 37 <para>Historically, Linux maintain sa list of the mounted file systems in the37 <para>Historically, Linux maintained a list of the mounted file systems in the 38 38 file <filename>/etc/mtab</filename>. Modern kernels maintain this list 39 39 internally and expose it to the user via the <filename 40 40 class="directory">/proc</filename> filesystem. To satisfy utilities that 41 expect t he presence of<filename>/etc/mtab</filename>, create the following41 expect to find <filename>/etc/mtab</filename>, create the following 42 42 symbolic link:</para> 43 43 … … 160 160 <para>The created groups are not part of any standard—they are groups 161 161 decided on in part by the requirements of the Udev configuration in Chapter 162 9, and in part by common convention employed by a number of existing Linux162 9, and in part by common conventions employed by a number of existing Linux 163 163 distributions. In addition, some test suites rely on specific users or 164 164 groups. The Linux Standard Base (LSB, available at <ulink … … 166 166 besides the group <systemitem class="groupname">root</systemitem> with a 167 167 Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem> 168 with a GID of 1 be present. The GID of 5 is widely used for 168 with a GID of 1 be present. The GID of 5 is widely used for the 169 169 <systemitem class="groupname">tty</systemitem> group, and the number 5 is 170 170 also used in <phrase revision="systemd">systemd</phrase> … … 180 180 machine or in the separate namespace). We assign 181 181 <systemitem class="username">nobody</systemitem> and 182 <systemitem class="groupname">nogroup</systemitem> for itto avoid an182 <systemitem class="groupname">nogroup</systemitem> to avoid an 183 183 unnamed ID. But other distros may treat this ID differently, so any 184 184 portable program should not depend on this assignment.</para> -
chapter07/kernfs.xml
rf2dff2d rebecd08 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 in20 space is used for them. The content of these file systems resides in 21 21 memory. These file systems must be mounted in the $LFS directory tree 22 22 so the applications can find them in the chroot environment.</para> 23 23 24 <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 25 25 mounted:</para> 26 26 … … 30 30 <title>Mounting and Populating /dev</title> 31 31 32 <para>During a normal boot of theLFS system, the kernel automatically32 <para>During a normal boot of an LFS system, the kernel automatically 33 33 mounts the <systemitem class="filesystem">devtmpfs</systemitem> 34 file system on the34 file system on the 35 35 <filename class="directory">/dev</filename> directory; the kernel 36 creates device nodes on that virtual file system during the boot process36 creates device nodes on that virtual file system during the boot process, 37 37 or when a device is first detected or accessed. The udev daemon may 38 change the owner or permissionof the device nodes created by the39 kernel, or create new device nodes or symlinksto ease the work of40 distro maintainers orsystem administrators. (See38 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 41 <xref linkend='ch-config-udev-device-node-creation'/> for details.) 42 42 If the host kernel supports &devtmpfs;, we can simply mount a 43 43 &devtmpfs; at <filename class='directory'>$LFS/dev</filename> and rely 44 on the kernel to populate it ( the LFS building process does not need45 the additional work onto &devtmpfs; by udev daemon).</para>44 on the kernel to populate it (i.e., the udev daemon will do the 45 necessary work automatically).</para> 46 46 47 <para>But , some host kernels may lack &devtmpfs; support andthese48 host distros maintainthe content of49 <filename class="directory">/dev</filename> with different methods.50 So the only host-agnostic way for populating51 <filename class="directory">$LFS/dev</filename> is52 b ind mounting the host system's47 <para>But some host kernels lack &devtmpfs; support; these 48 host distros use different methods to create the content of 49 <filename class="directory">/dev</filename>. 50 So the only host-agnostic way to populate the 51 <filename class="directory">$LFS/dev</filename> directory is 52 by bind mounting the host system's 53 53 <filename class="directory">/dev</filename> directory. A bind mount is 54 a special type of mount that allows you to create a mirrorof a54 a special type of mount that generates a duplicate copy of a 55 55 directory or mount point at some other location. Use the following 56 command to do this :</para>56 command to do this.</para> 57 57 58 58 <screen><userinput>mount -v --bind /dev $LFS/dev</userinput></screen> … … 63 63 <title>Mounting Virtual Kernel File Systems</title> 64 64 65 <para>Now mount the remaining virtual kernel file systems:</para>65 <para>Now mount the remaining virtual kernel file systems:</para> 66 66 67 67 <screen><userinput>mount -v --bind /dev/pts $LFS/dev/pts
Note:
See TracChangeset
for help on using the changeset viewer.