source: chapter07/stripping.xml@ 3b1b9de

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 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 3b1b9de was fb386e0, checked in by Thomas Trepl <thomas@…>, 4 years ago

Rename package entities to be independent of chapter numbering

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/cross2@11921 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 6.7 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-tools-stripping">
9 <?dbhtml filename="stripping.html"?>
10
11 <title>Finishing Temporary Tools</title>
12
13 <para>
14 The steps in this section are optional. Skip this section entirely
15 if you are not really short on disk space and do not want to create
16 a backup of the temporary tools.
17 </para>
18
19 <para>
20 The following steps are performed from outside the chroot
21 environment. That means, you have to leave the chroot environment
22 first before continuing. The reason for that is to
23 <itemizedlist>
24 <listitem>
25 <para>
26 make sure that objects are not in use while they gets
27 manipulated.
28 </para>
29 </listitem>
30 <listitem>
31 <para>
32 get access to file system locations outside of the chroot
33 environment to store/read the backup archive which should
34 not be placed within the
35 <filename class="directory">$LFS</filename> hierarchy for
36 safety reasons.
37 </para>
38 </listitem>
39 </itemizedlist>
40 </para>
41
42 <para>
43 Leave the chroot environment and unmount the kernel virtual file
44 systems:
45 </para>
46
47<screen role="nodump"><userinput>exit
48umount $LFS/dev{/pts,}
49umount $LFS/{sys,proc,run}</userinput></screen>
50
51 <note>
52 <para>All of the following instructions are executed by
53 <systemitem class="username">root</systemitem>. Take extra
54 care about the commands you're going to run as mistakes
55 here can modify your host system. Be aware that the
56 environment variable <envar>LFS</envar> is set for user
57 <systemitem class="username">lfs</systemitem> by default
58 but it might <emphasis>not</emphasis> be set for
59 <systemitem class="username">root</systemitem>. Whenever
60 commands are to be executed by <systemitem class="username">root</systemitem>,
61 make sure you have set <envar>LFS</envar> accordingly.
62 This has been discussed in <xref linkend='ch-partitioning-aboutlfs'/>.
63 </para>
64 </note>
65
66 <sect2>
67 <title>Stripping</title>
68
69 <para>If the LFS partition is rather small, it is beneficial to
70 learn that unnecessary items can be removed. The executables and
71 libraries built so far contain about 94 MB of unneeded debugging
72 symbols.</para>
73
74 <para>Strip off debugging symbols from binaries:</para>
75<screen role="nodump"><userinput>strip --strip-debug $LFS/usr/lib/*
76strip --strip-unneeded $LFS/usr/{,s}bin/*
77strip --strip-unneeded $LFS/tools/bin/*</userinput></screen>
78
79 <para>These commands will skip a number of files reporting that it does not
80 recognize their file format. Most of these are scripts instead of binaries.
81 <!--Note that we use the <command>strip</command> program built in
82 <quote>Binutils pass 2</quote>, since it is the one that knows how to strip
83 our cross-compiled programs.--></para>
84
85 <para>Take care <emphasis>NOT</emphasis> to use
86 <parameter>--strip-unneeded</parameter> on the libraries. The static
87 ones would be destroyed and the toolchain packages would need to be
88 built all over again.</para>
89
90 <para>To save more space (about 37 MB), remove the documentation:</para>
91
92<screen role="nodump"><userinput>rm -rf $LFS/usr/share/{info,man,doc}</userinput></screen>
93
94 <para>The libtool .la files are only useful when linking with static
95 libraries. They are unneeded, and potentially harmful, when using dynamic
96 shared libraries, specially when using non-autotools build systems.
97 Remove those files now:</para>
98
99<screen role="nodump"><userinput>find $LFS/usr/{lib,libexec} -name \*.la -delete</userinput></screen>
100
101 <para>At this point, you should have at least 5 GB of free space on the
102 chroot partition that can be used to build and install Glibc and Gcc in
103 the next phase. If you can build and install Glibc, you can build and install
104 the rest too. You can check the free disk space with the command
105 <command>df -h $LFS/</command>.</para>
106
107 </sect2>
108
109 <sect2>
110 <title>Backup / Restore</title>
111
112 <para>
113 Now that the essential tools have been created, its time to think about
114 a backup. When every check has passed successfully in the previously
115 built packages, your temporary tools are in a good state and might be
116 backed up for later reuse. In case of fatal failures in the subsequent
117 chapters, it often turns out that removing everything and starting over
118 (more carefully) is the best option to recover. Unfortunatly, all the
119 temporary tools will be removed, too. To avoid spending extra time to
120 redo something which has been built successfully, prepare a backup.
121 </para>
122
123 <para>
124 Make sure you have at least 600 MB free disk space (the source tarballs
125 will be included in the backup archive) in the home directory of user
126 <systemitem class="username">root</systemitem>.
127 </para>
128
129 <para>
130 Create the backup archive by running the following command:
131 </para>
132<screen role="nodump"><userinput>cd $LFS &amp;&amp;
133tar -cJpf $HOME/temp-tools.tar.xz .
134</userinput></screen>
135 <para>
136 Replace <envar>$HOME</envar> by a directory of your choice if you
137 do not want to have the backup stored in <systemitem class="username">root</systemitem>'s
138 home directory.
139 </para>
140
141 <para>
142 In case some mistakes have been made and you need to start over, you can
143 use this backup to restore the temporary tools and save some recovery time.
144 Since the sources are located under
145 <filename class="directory">$LFS</filename>, they are included in the
146 backup archive as well, so you need not to download them again. After
147 checking that <filename class="directory">$LFS</filename> is set properly,
148 restore the backup by executing the following commands:
149 </para>
150
151<screen role="nodump"><userinput>cd $LFS &amp;&amp;
152rm -rf ./* &amp;&amp;
153tar -xpf $HOME/temp-tools.tar.xz
154</userinput></screen>
155
156 <para>
157 Again, double check that the environment has been setup properly
158 and continue building the rest of the system.
159 </para>
160
161 <important>
162 <para>
163 If you left the chroot environment either to strip off debug
164 symbols, create a backup or restart building using a restore,
165 remember to mount the kernel virtual filesystems now again as
166 described in <xref linkend='ch-tools-kernfs'/> and re-enter
167 the chroot environment (see <xref linkend='ch-tools-chroot'/>)
168 again before continuing.
169 </para>
170 </important>
171
172 </sect2>
173
174</sect1>
Note: See TracBrowser for help on using the repository browser.