Changes in / [0eb03e9d:0fe3bb0]
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter02/creatingpartition.xml
r0eb03e9d r0fe3bb0 103 103 occurrence, the best solution is to purchase more RAM for your 104 104 system.</para> </sect3> 105 106 <sect3> 107 <title>The Grub Bios Partition</title> 108 109 <para>If the <emphasis>boot disk</emphasis> has been partitioned with a 110 GUID Partition Table (GPT), then a small, typically 1 MB, partition must be 111 created if it does not already exist. This partition is not formatted, but 112 must be available for GRUB to use during installation of the boot 113 loader. This partition will normally be labeled 'BIOS Boot' if using 114 <command>fdisk</command> or have a code of <emphasis>EF02</emphasis> if 115 using the <command>gdisk</command> command.</para> 116 117 <note><para>The Grub Bios partition must be on the drive that the BIOS 118 uses to boot the system. This is not necessarily the drive that holds 119 the LFS root partition. The disks on a system may use different 120 partition table types. The necessity of the Grub Bios partition depends 121 only on the partition table type of the boot disk.</para></note> 122 </sect3> 105 123 106 124 <sect3> -
chapter04/addinguser.xml
r0eb03e9d r0fe3bb0 81 81 <systemitem class="username">lfs</systemitem> the owner:</para> 82 82 83 <screen><userinput>chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}</userinput></screen> 83 <screen><userinput>chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools} 84 case $(uname -m) in 85 x86_64) chown -v lfs $LFS/lib64 ;; 86 esac</userinput></screen> 84 87 85 88 <note><para>In some host systems, the following <command>su</command> command does not complete -
chapter04/creatingminlayout.xml
r0eb03e9d r0fe3bb0 26 26 for i in bin lib sbin; do 27 27 ln -sv usr/$i $LFS/$i 28 done</userinput></screen> 28 done 29 30 case $(uname -m) in 31 x86_64) mkdir -pv $LFS/lib64 ;; 32 esac</userinput></screen> 29 33 30 34 <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled -
chapter05/gcc-pass1.xml
r0eb03e9d r0fe3bb0 63 63 mv -v mpc-&mpc-version; mpc</userinput></screen> 64 64 65 <para>On ARM64 hosts, set the default directory name for65 <para>On x86_64 hosts, set the default directory name for 66 66 64-bit libraries to <quote>lib</quote>:</para> 67 67 68 <screen><userinput remap="pre">sed -e '/lp64=/s/lib64/lib/' \ 69 -i.orig gcc/config/aarch64/t-aarch64-linux</userinput></screen> 68 <screen><userinput remap="pre">case $(uname -m) in 69 x86_64) 70 sed -e '/m64=/s/lib64/lib/' \ 71 -i.orig gcc/config/i386/t-linux64 72 ;; 73 esac</userinput></screen> 70 74 71 75 <para>The GCC documentation recommends building GCC … … 156 160 <term><parameter>--disable-multilib</parameter></term> 157 161 <listitem> 158 <para>On ARM64, LFS does not support a multilib configuration.</para> 162 <para>On x86_64, LFS does not support a multilib configuration. 163 This switch is harmless for x86.</para> 159 164 </listitem> 160 165 </varlistentry> -
chapter05/glibc.xml
r0eb03e9d r0fe3bb0 43 43 <sect2 role="installation"> 44 44 <title>Installation of Glibc</title> 45 46 <para>First, create a symbolic link for LSB compliance. Additionally, 47 for x86_64, create a compatibility symbolic link required for proper 48 operation of the dynamic library loader:</para> 49 50 <screen><userinput remap="pre">case $(uname -m) in 51 i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3 52 ;; 53 x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64 54 ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3 55 ;; 56 esac</userinput></screen> 57 58 <note> 59 <para> 60 The above command is correct. The <command>ln</command> command has 61 several syntactic versions, so be sure to check 62 <command>info coreutils ln</command> and <filename>ln(1)</filename> 63 before reporting what may appear to be an error. 64 </para> 65 </note> 45 66 46 67 <para>Some of the Glibc programs use the non-FHS-compliant … … 181 202 and the output of the last command will be of the form:</para> 182 203 183 <screen><computeroutput>[Requesting program interpreter: /lib /ld-linux-aarch64.so.1]</computeroutput></screen>184 185 <para>Note that for big-endianmachines, the interpreter name will be186 <filename>/lib/ld-linux-aarch64_be.so.1</filename>.</para>204 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen> 205 206 <para>Note that for 32-bit machines, the interpreter name will be 207 <filename>/lib/ld-linux.so.2</filename>.</para> 187 208 188 209 <para>If the output is not as shown above, or there is no output at all, -
chapter06/gcc-pass2.xml
r0eb03e9d r0fe3bb0 58 58 mv -v mpc-&mpc-version; mpc</userinput></screen> 59 59 60 <para> On ARM64 hosts, set the default directory name for61 64-bitlibraries to <quote>lib</quote>:</para>60 <para>If building on x86_64, change the default directory name for 64-bit 61 libraries to <quote>lib</quote>:</para> 62 62 63 <screen><userinput remap="pre">sed -e '/lp64=/s/lib64/lib/' \ 64 -i.orig gcc/config/aarch64/t-aarch64-linux</userinput></screen> 63 <screen><userinput remap="pre">case $(uname -m) in 64 x86_64) 65 sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 66 ;; 67 esac</userinput></screen> 65 68 66 69 <para>Override the building rule of libgcc and libstdc++ headers, to -
chapter07/changingowner.xml
r0eb03e9d r0fe3bb0 34 34 command:</para> 35 35 36 <screen><userinput>chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}</userinput></screen> 36 <screen><userinput>chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools} 37 case $(uname -m) in 38 x86_64) chown -R root:root $LFS/lib64 ;; 39 esac</userinput></screen> 37 40 38 41 </sect1> -
chapter08/binutils.xml
r0eb03e9d r0fe3bb0 116 116 ultimately be located) is set to <filename 117 117 class="directory">$(exec_prefix)/$(target_alias)</filename>. For 118 example, ARM64 machines would expand that to <filename119 class="directory">/usr/ aarch64-unknown-linux-gnu</filename>. Because this is118 example, x86_64 machines would expand that to <filename 119 class="directory">/usr/x86_64-pc-linux-gnu</filename>. Because this is 120 120 a custom system, this target-specific directory in <filename 121 121 class="directory">/usr</filename> is not required. <filename … … 141 141 142 142 <screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen> 143 144 <para>Twelve tests fail in the gold test suite when the 145 <option>--enable-default-pie</option> and 146 <option>--enable-default-ssp</option> options are passed to GCC.</para> 143 147 144 148 <para>Install the package:</para> -
chapter08/expect.xml
r0eb03e9d r0fe3bb0 48 48 <sect2 role="installation"> 49 49 <title>Installation of Expect</title> 50 51 <para>Update two config scripts to allow building this package for52 AArch64:</para>53 54 <screen><userinput remap="pre">tar -C tclconfig -xf ../autoconf-&autoconf-version;.tar.xz --strip-components=2 \55 autoconf-&autoconf-version;/build-aux/config.{guess,sub}</userinput></screen>56 50 57 51 <para>Prepare Expect for compilation:</para> -
chapter08/gcc.xml
r0eb03e9d r0fe3bb0 55 55 <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen> 56 56 --> 57 <para>On ARM64 hosts, set the default directory name for 58 64-bit libraries to <quote>lib</quote>:</para> 59 60 <screen><userinput remap="pre">sed -e '/lp64=/s/lib64/lib/' \ 61 -i.orig gcc/config/aarch64/t-aarch64-linux</userinput></screen> 57 <para>If building on x86_64, change the default directory name for 64-bit 58 libraries to <quote>lib</quote>:</para> 59 60 <screen><userinput remap="pre">case $(uname -m) in 61 x86_64) 62 sed -e '/m64=/s/lib64/lib/' \ 63 -i.orig gcc/config/i386/t-linux64 64 ;; 65 esac</userinput></screen> 62 66 63 67 <para>The GCC documentation recommends building GCC in a dedicated build directory:</para> … … 169 173 <ulink url="https://gcc.gnu.org/ml/gcc-testresults/"/>.</para> 170 174 171 <para> 172 <!-- https://gcc.gnu.org/PR107915 and https://gcc.gnu.org/PR109353 --> 175 <para>Two tests named <filename>pr104610.c</filename> and 176 <filename>pr69482-1.c</filename> are known to fail because the test 177 files does not account for the 178 <parameter>--enable-default-ssp</parameter> option. 179 <!-- https://gcc.gnu.org/PR106375 and https://gcc.gnu.org/PR109353 --> 173 180 Two tests named <filename>copy.cc</filename> and 174 <filename> contracts-tmpl-spec2.C</filename> are known to fail.175 < /para>176 177 < !-- Need further investigation -->178 <para>Many gcc and g++ tests related to hwasan are known to fail.</para>181 <filename>pr56837.c</filename> are known to fail. 182 <!-- https://gcc.gnu.org/PR107855#c6 --> 183 Additionally, several tests in the 184 <filename class='directory'>vect</filename> directory are known to fail 185 if the hardware does not support AVX.</para> 179 186 180 187 <para>A few unexpected failures cannot always be avoided. The GCC developers … … 235 242 platform-specific differences in the dynamic linker name):</para> 236 243 237 <screen><computeroutput>[Requesting program interpreter: /lib /ld-linux-aarch64.so.1]</computeroutput></screen>244 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen> 238 245 239 246 <para>Now make sure that we're set up to use the correct start files:</para> … … 243 250 <para>The output of the last command should be:</para> 244 251 245 <screen><computeroutput>/usr/lib/gcc/ aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded246 /usr/lib/gcc/ aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded247 /usr/lib/gcc/ aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>252 <screen><computeroutput>/usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded 253 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded 254 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen> 248 255 249 256 <para>Depending on your machine architecture, the above may differ slightly. … … 262 269 263 270 <screen><computeroutput>#include <...> search starts here: 264 /usr/lib/gcc/ aarch64-unknown-linux-gnu/&gcc-version;/include271 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include 265 272 /usr/local/include 266 /usr/lib/gcc/ aarch64-unknown-linux-gnu/&gcc-version;/include-fixed273 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include-fixed 267 274 /usr/include</computeroutput></screen> 268 275 … … 277 284 be ignored, but otherwise the output of the last command should be:</para> 278 285 279 <screen><computeroutput>SEARCH_DIR("/usr/ aarch64-unknown-linux-gnu/lib64")286 <screen><computeroutput>SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") 280 287 SEARCH_DIR("/usr/local/lib64") 281 288 SEARCH_DIR("/lib64") 282 289 SEARCH_DIR("/usr/lib64") 283 SEARCH_DIR("/usr/ aarch64-unknown-linux-gnu/lib")290 SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib") 284 291 SEARCH_DIR("/usr/local/lib") 285 292 SEARCH_DIR("/lib") 286 293 SEARCH_DIR("/usr/lib");</computeroutput></screen> 287 <!-- 294 288 295 <para>A 32-bit system may use a few other directories. For example, here 289 296 is the output from an i686 machine:</para> … … 297 304 SEARCH_DIR("/lib") 298 305 SEARCH_DIR("/usr/lib");</computeroutput></screen> 299 --> 306 300 307 <para>Next make sure that we're using the correct libc:</para> 301 308 … … 313 320 platform-specific differences in dynamic linker name):</para> 314 321 315 <screen><computeroutput>found ld-linux- aarch64.so.1 at /usr/lib/ld-linux-aarch64.so.1</computeroutput></screen>322 <screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen> 316 323 317 324 <para>If the output does not appear as shown above or is not received -
chapter08/glibc.xml
r0eb03e9d r0fe3bb0 435 435 436 436 <para>By default, the dynamic loader (<filename 437 class="libraryfile">/lib/ld-linux -aarch64.so.1</filename>) searches through437 class="libraryfile">/lib/ld-linux.so.2</filename>) searches through 438 438 <filename class="directory">/usr/lib</filename> for dynamic libraries 439 439 that are needed by programs as they are run. However, if there are … … 483 483 <seg>gencat, getconf, getent, iconv, iconvconfig, ldconfig, 484 484 ldd, lddlibc4, 485 ld.so (symlink to ld-linux- aarch64[_be].so.1),485 ld.so (symlink to ld-linux-x86-64.so.2 or ld-linux.so.2), 486 486 locale, localedef, makedb, mtrace, nscd, 487 487 pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace, 488 488 zdump, and zic</seg> 489 <seg>ld-linux- aarch64[_be].so.1,489 <seg>ld-linux-x86-64.so.2, ld-linux.so.2, 490 490 libBrokenLocale.{a,so}, libanl.{a,so}, 491 491 libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so, -
chapter08/gmp.xml
r0eb03e9d r0fe3bb0 41 41 <sect2 role="installation"> 42 42 <title>Installation of GMP</title> 43 44 <note> 45 <para>If you are building for 32-bit x86, but you have a CPU which is 46 capable of running 64-bit code <emphasis>and</emphasis> you have specified 47 <envar>CFLAGS</envar> in the environment, the configure script will 48 attempt to configure for 64-bits and fail. 49 Avoid this by invoking the configure command below with 50 <screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para> 51 </note> 43 52 44 53 <note> … … 98 107 applications using the gmp libraries with the message "Illegal 99 108 instruction". In this case, gmp should be reconfigured with the option 100 --build= aarch64-unknown-linux-gnu and rebuilt.</para></caution>109 --build=x86_64-pc-linux-gnu and rebuilt.</para></caution> 101 110 102 111 <para>Ensure that all 197 tests in the test suite passed. -
chapter08/grub.xml
r0eb03e9d r0fe3bb0 43 43 <note> 44 44 <para> 45 On ARM64 systems, the following instruction builds GRUB for UEFI.46 But the built GRUB lacks some features because a few optional47 dependencies of GRUB for UEFI is beyond the scope of LFS and not48 installed yet.49 </para>50 <para>51 If your system firmware does not support UEFI, you need to skip the52 content of this page and try to figure out how to boot your system.53 </para>54 <para>55 45 If your system has UEFI support and you wish to boot LFS with UEFI, 56 46 you can skip this package in LFS, 57 47 and install GRUB with UEFI support (and its dependencies) by following 58 48 the instructions on 59 <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink> 60 (with <parameter>--target=x86_64</parameter> removed). 49 <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink>. 61 50 </para> 62 51 </note> … … 81 70 82 71 <screen><userinput remap='pre'>patch -Np1 -i ../grub-&grub-version;-upstream_fixes-1.patch</userinput></screen> 83 84 <!--https://git.savannah.gnu.org/cgit/grub.git/commit/?id=69edb312 -->85 <para>Apply an upstream change so GRUB will be capable to load86 compressed kernel image on an ARM64 system:</para>87 88 <screen><userinput remap='pre'>sed '/ARMXX_MAGIC/,+2d' -i grub-core/loader/arm64/linux.c</userinput></screen>89 72 90 73 <para>Prepare GRUB for compilation:</para> -
chapter08/kbd.xml
r0eb03e9d r0fe3bb0 45 45 across the keymaps in the Kbd package. The following patch fixes this 46 46 issue for i386 keymaps:</para> 47 48 <note>49 <para>50 Don't skip the patch just because it mentions "i386". The keymaps51 for the keyboards most common on the market (qwerty or dvorak) are52 in "i386" catagory.53 </para>54 </note>55 47 56 48 <screen><userinput remap="pre">patch -Np1 -i ../&kbd-backspace-patch;</userinput></screen> -
chapter08/libcap.xml
r0eb03e9d r0fe3bb0 60 60 <para>This parameter sets the library directory to 61 61 <filename>/usr/lib</filename> rather than 62 <filename>/usr/lib64</filename> on ARM64.</para> 62 <filename>/usr/lib64</filename> on x86_64. It has no effect on 63 x86.</para> 63 64 </listitem> 64 65 </varlistentry> -
chapter08/libffi.xml
r0eb03e9d r0fe3bb0 77 77 system, use the less capable system as a parameter. For details 78 78 about alternative system types, see <ulink 79 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/ AArch64-Options.html'>80 the AArch64options in the GCC manual</ulink>.</para>79 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/x86-Options.html'> 80 the x86 options in the GCC manual</ulink>.</para> 81 81 </listitem> 82 82 </varlistentry> -
chapter08/stripping.xml
r0eb03e9d r0fe3bb0 47 47 rationale for using the <command>install</command> command here.)</para> 48 48 49 <note><para>The ELF loader's name is ld-linux-aarch64.so.1 on 50 little-endian systems and ld-linux-aarch64_be.so.1 on big-endian systems. 51 The construct below selects the 49 <note><para>The ELF loader's name is ld-linux-x86-64.so.2 on 64-bit systems 50 and ld-linux.so.2 on 32-bit systems. The construct below selects the 52 51 correct name for the current architecture, excluding anything ending 53 52 with <quote>g</quote>, in case the commands below have already been -
chapter08/util-linux.xml
r0eb03e9d r0fe3bb0 139 139 eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck, 140 140 fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, hexdump, hwclock, 141 i onice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,141 i386 (link to setarch), ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, 142 142 lastb (link to last), ldattach, linux32 (link to setarch), linux64 (link to setarch), 143 143 logger, look, losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, lslogins, … … 148 148 swapoff, swapon, switch_root, taskset, uclampset, ul, 149 149 umount, uname26 (link to setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse, 150 wall, wdctl, whereis, wipefs, and zramctl</seg>150 wall, wdctl, whereis, wipefs, x86_64 (link to setarch), and zramctl</seg> 151 151 <seg>libblkid.so, libfdisk.so, libmount.so, 152 152 libsmartcols.so, and libuuid.so</seg> … … 531 531 </varlistentry> 532 532 533 <varlistentry id="i386"> 534 <term><command>i386</command></term> 535 <listitem> 536 <para>A symbolic link to setarch</para> 537 <indexterm zone="ch-system-util-linux i386"> 538 <primary sortas="b-i386">i386</primary> 539 </indexterm> 540 </listitem> 541 </varlistentry> 542 533 543 <varlistentry id="ionice"> 534 544 <term><command>ionice</command></term> … … 1280 1290 </varlistentry> 1281 1291 1292 <varlistentry id="x86_64"> 1293 <term><command>x86_64</command></term> 1294 <listitem> 1295 <para>A symbolic link to setarch</para> 1296 <indexterm zone="ch-system-util-linux x86_64"> 1297 <primary sortas="b-x86_64">x86_64</primary> 1298 </indexterm> 1299 </listitem> 1300 </varlistentry> 1301 1282 1302 <varlistentry id="zramctl"> 1283 1303 <term><command>zramctl</command></term> -
chapter10/grub.xml
r0eb03e9d r0fe3bb0 19 19 <note> 20 20 <para> 21 This section assume your system has UEFI support and you wish to boot 22 LFS with UEFI and GRUB built following the instructions in Chapter 8. 23 </para> 24 <para> 25 If you've installed GRUB for UEFI with optional dependencies following 26 BLFS, you should skip this page, and configure GRUB with UEFI support 21 If your system has UEFI support and you wish to boot LFS with UEFI, 22 you should skip this page, and configure GRUB with UEFI support 27 23 using the instructions provided in 28 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>, 29 but replace <parameter>--target=x86_64-efi</parameter> with 30 <parameter>--target=arm64-efi</parameter> for the ARM64 system. 31 </para> 32 <para> 33 If your system does not support UEFI or you don't want to use it, 34 you'll need to figure out how to configure the booting process of 35 the system on your own. 24 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>. 36 25 </para> 37 26 </note> … … 46 35 LILO.</para></warning> 47 36 48 <para> Ensure that an emergency boot disk is ready to <quote>rescue</quote>37 <para> Ensure that an emergency boot disk is ready to <quote>rescue</quote> 49 38 the computer if the computer becomes unusable (un-bootable). If you do not 50 already have a boot device, you can create one. To create a emergency 51 boot device for UEFI, consult section <quote>Create an Emergency Boot 52 Disk</quote> in 53 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.</para> 54 55 </sect2> 56 57 <sect2> 58 <title>Turn off Secure Boot</title> 59 60 <para>LFS does not have the essential packages to support Secure Boot. 61 To set up the boot process following the instructions in this section, 62 Secure Boot must be turned off from the configuration interface of the 63 firmware. Read the documentation provided by the manufacturer of your 64 system to find out how.</para> 39 already have a boot device, you can create one. In order for the procedure 40 below to work, you need to jump ahead to BLFS and install 41 <userinput>xorriso</userinput> from the <ulink 42 url="&blfs-book;multimedia/libisoburn.html"> 43 libisoburn</ulink> package.</para> 44 45 <screen role="nodump"><userinput>cd /tmp 46 grub-mkrescue --output=grub-img.iso 47 xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen> 48 65 49 </sect2> 66 50 … … 88 72 <title>Setting Up the Configuration</title> 89 73 90 <para>GRUB works by creating an EFI executable in the EFI System 91 Partition (ESP). You can find the ESP with:</para> 92 93 <screen role="nodump"><userinput>fdisk -l | grep 'EFI System'</userinput></screen> 94 95 <para>If no ESP exists on your hard drive (for example, you are building 96 LFS on a fresh new system with a Live CD as the host distro), read 97 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink> 98 for the instruction to create an ESP on your hard drive.</para> 99 100 <para>If the ESP is not mounted at 101 <filename class="directory">/boot/efi</filename> (in the chroot), 102 mount it now:</para> 103 104 <screen role="nodump"><userinput>mkdir -pv /boot/efi 105 mount /boot/efi</userinput></screen> 106 107 <note> 108 <para>The path to the device node is intentionally omitted in the 109 command. We expect the entry for mounting the ESP to 110 <filename class="directory">/boot/efi</filename> is already in 111 <filename>/etc/fstab</filename>. Add the entry before running the 112 command if you forgot to create an entry for the ESP in 113 <xref linkend="ch-bootable-fstab"/>.</para> 114 </note> 74 <para>GRUB works by writing data to the first physical track of the 75 hard disk. This area is not part of any file system. The programs 76 there access GRUB modules in the boot partition. The default location 77 is /boot/grub/.</para> 115 78 116 79 <para>The location of the boot partition is a choice of the user that … … 137 100 138 101 <para>Install the GRUB files into <filename 139 class="directory">/boot/grub</filename> and the GRUB EFI executable into 140 <filename class="directory">/boot/efi/EFI/BOOT/BOOTAA64.EFI</filename>:</para> 102 class="directory">/boot/grub</filename> and set up the boot track:</para> 141 103 142 104 <warning> 143 <para>The following command will overwrite 144 <filename>BOOTAA64.EFI</filename>. Do not run the command if this is 145 not desired, for example, if it contains a third party boot manager. 146 You can backup it with <command>cp</command> as it's a regular 147 file.</para> 105 <para>The following command will overwrite the current boot loader. Do not 106 run the command if this is not desired, for example, if using a third party 107 boot manager to manage the Master Boot Record (MBR).</para> 148 108 </warning> 149 109 150 <screen role="nodump"><userinput>grub-install --removable</userinput></screen>110 <screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen> 151 111 152 112 <note> 153 <para> 154 <parameter>--removable</parameter> may seem strange here. The UEFI 155 firmware searches EFI executables for boot loaders in a hardcoded 156 path, <filename>EFI/BOOT/BOOTAA64.EFI</filename> in the ESP, and other 157 boot loader paths listed in the EFI variables. We've not installed 158 the utilities for manipulating EFI variables so we need to install 159 the EFI executable into the hardcoded path. The hardcoded path is 160 usually used by removable devices (for example, USB thumb devices) 161 so the <command>grub-install</command> option for this purpose is 162 named <parameter>--removable</parameter>. 163 </para> 164 <para> 165 UEFI implementation usually prefers the boot loaders with paths 166 recorded in an EFI variable, to the boot loader with the hardcoded 167 search path. You may need to invoke the boot device selection menu 168 or setting interface of your EFI firmware on next boot to explicitly 169 select the bootloader. 170 </para> 171 <para> 172 Some UEFI implementation may completely skip the hardcoded path if 173 there are other boot loaders in the same hard drive with paths 174 recorded in an EFI variable. Then you need to create an EFI 175 variable for the newly installed boot loader. Install 176 <ulink url="&blfs-book;postlfs/efibootmgr.html">efibootmgr</ulink>, 177 then run the following commands: 178 179 <screen role="nodump"><userinput>mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars 180 efibootmgr -B -L LFS || true 181 efibootmgr -c -L LFS -l '\EFI\BOOT\BOOTAA64.EFI' -d /dev/sda 182 umount /sys/firmware/efi/efivars</userinput></screen> 183 184 Replace <filename>/dev/sda</filename> with the device node of the 185 hard drive where you are installing GRUB into. For some UEFI 186 firmwares, <option>-e 3</option> option may be needed for the 187 <command>efibootmgr -c</command> command. 188 </para> 113 <para>If the system has been booted using UEFI, 114 <command>grub-install</command> will try to install files for the 115 <emphasis>x86_64-efi</emphasis> target, but those files 116 have not been installed in <xref linkend="chapter-building-system"/>. 117 If this is the case, add <option>--target i386-pc</option> to the 118 command above.</para> 189 119 </note> 190 120 … … 214 144 insmod ext2 215 145 set root=(hd0,2) 216 217 insmod all_video218 146 219 147 menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" { -
chapter10/kernel.xml
r0eb03e9d r0fe3bb0 142 142 [*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG] 143 143 Device Drivers ---> 144 Firmware Drivers --->145 EFI (Extensible Firmware Interface) Support --->146 [*] Enable the generic EFI decompressor [CONFIG_EFI_ZBOOT]147 144 Graphics support ---> 148 145 Frame buffer Devices ---> … … 186 183 Firmware Drivers ---> 187 184 [*] Export DMI identification via sysfs to userspace [CONFIG_DMIID] 188 EFI (Extensible Firmware Interface) Support --->189 [*] Enable the generic EFI decompressor [CONFIG_EFI_ZBOOT]190 185 Graphics support ---> 191 186 Frame buffer Devices ---> … … 198 193 [*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL]</screen> 199 194 195 <para>Enable some additional features if you are building a 64-bit 196 system. If you are using menuconfig, enable them in the order of 197 <parameter>CONFIG_PCI_MSI</parameter> first, then 198 <parameter>CONFIG_IRQ_REMAP</parameter>, at last 199 <parameter>CONFIG_X86_X2APIC</parameter> because an option only 200 shows up after its dependencies are selected.</para> 201 202 <screen role="nodump">Processor type and features ---> 203 [*] Support x2apic [CONFIG_X86_X2APIC] 204 Device Drivers ---> 205 [*] PCI Support ---> [CONFIG_PCI] 206 [*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI] 207 [*] IOMMU Hardware Support ---> [CONFIG_IOMMU_SUPPORT] 208 [*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP]</screen> 209 210 <para>If you are building a 32-bit system running on a hardware 211 with RAM more than 4GB, adjust the configuration so the kernel will 212 be able to use up to 64GB physical RAM:</para> 213 214 <screen role="nodump">Processor type and features ---> 215 High Memory Support ---> 216 (X) 64GB [CONFIG_HIGHMEM64G]</screen> 217 200 218 <para>If the partition for the LFS system is in a NVME SSD (i. e. the 201 219 device node for the partition is <filename>/dev/nvme*</filename> … … 310 328 upon switching to root filesystem just before starting 311 329 init.</para> 312 </listitem>313 </varlistentry>314 315 <varlistentry>316 <term><parameter>Enable the generic EFI decompressor</parameter></term>317 <listitem>318 <para>Create the bootable image as an EFI application that carries319 the actual kernel image in compressed form. It can make the320 bootable image 50% smaller.</para>321 330 </listitem> 322 331 </varlistentry> … … 336 345 </varlistentry> 337 346 347 <varlistentry> 348 <term><parameter>Support x2apic</parameter></term> 349 <listitem> 350 <para>Support running the interrupt controller of 64-bit x86 351 processors in x2APIC mode. x2APIC may be enabled by firmware on 352 64-bit x86 systems, and a kernel without this option enabled will 353 panic on boot if x2APIC is enabled by firmware. This option has 354 has no effect, but also does no harm if x2APIC is disabled by the 355 firmware.</para> 356 </listitem> 357 </varlistentry> 358 338 359 </variablelist> 339 360 … … 390 411 the filename should be <emphasis>vmlinuz</emphasis> to be compatible with 391 412 the automatic setup of the boot process described in the next section. The 392 following command assumes an ARM64 architecture with an EFI boot loader 393 (for example, GRUB built in &ch-final;):</para> 394 395 <screen><userinput remap="install">cp -iv arch/arm64/boot/vmlinuz.efi /boot/vmlinuz-&linux-version;-lfs-&version;</userinput></screen> 413 following command assumes an x86 architecture:</para> 414 415 <screen><userinput remap="install">cp -iv arch/x86/boot/bzImage /boot/vmlinuz-&linux-version;-lfs-&version;</userinput></screen> 396 416 397 417 <para><filename>System.map</filename> is a symbol file for the kernel. -
git-version.sh
r0eb03e9d r0fe3bb0 49 49 50 50 sha="$(git describe --abbrev=1)" 51 rev= arm64-$(echo "$sha" | sed 's/-g[^-]*$//')51 rev=$(echo "$sha" | sed 's/-g[^-]*$//') 52 52 version="$rev" 53 53 versiond="$rev-systemd" -
prologue/architecture.xml
r0eb03e9d r0fe3bb0 11 11 <title>LFS Target Architectures</title> 12 12 13 <para>The target architectures of this LFS edition are ARM64 (sometimes 14 called AArch64) CPUs. On the other hand, the instructions in this book may 15 work on 32-bit ARM CPUs with some modifications. To build a system that 16 utilizes one of these alternative CPUs, the main prerequisite, in 17 addition to those on 18 the next page, is an existing Linux system such as an earlier LFS 19 installation, Ubuntu, Red Hat/Fedora, SuSE, or other distribution that 20 targets the architecture that you have.</para> 13 <para>The primary target architectures of LFS are the AMD/Intel x86 (32-bit) 14 and x86_64 (64-bit) CPUs. On the other hand, the instructions in this book are 15 also known to work, with some modifications, with the Power PC and ARM CPUs. To 16 build a system that utilizes one of these alternative CPUs, the main prerequisite, in 17 addition to those on the next page, is an existing Linux system such as an 18 earlier LFS installation, Ubuntu, Red Hat/Fedora, SuSE, or some other distribution 19 that targets that architecture. (Note that a 32-bit 20 distribution can be installed and used as a host system on a 64-bit AMD/Intel 21 computer.)</para> 21 22 22 <para>The build results from this LFS edition is considered a 23 <quote>pure</quote> 64-bit system. That is, it supports 64-bit executables 24 only. Building a <quote>multi-lib</quote> system requires compiling many 23 <para>The gain from building on a 64-bit system, as 24 compared to a 32-bit system, is minimal. 25 For example, in a test build of LFS-9.1 on a Core i7-4790 CPU based system, 26 using 4 cores, the following statistics were measured:</para> 27 28 <screen><computeroutput>Architecture Build Time Build Size 29 32-bit 239.9 minutes 3.6 GB 30 64-bit 233.2 minutes 4.4 GB</computeroutput></screen> 31 32 <para>As you can see, on the same hardware, the 64-bit build is only 3% faster 33 (and 22% larger) than the 32-bit build. If you plan to use LFS as a LAMP 34 server, or a firewall, a 32-bit CPU may be good enough. On the other 35 hand, several packages in BLFS now need more than 4 GB of RAM to be built 36 and/or to run; if you plan to use LFS as a desktop, the LFS authors 37 recommend building a 64-bit system.</para> 38 39 <para>The default 64-bit build that results from LFS is a 40 <quote>pure</quote> 64-bit system. That is, it supports 64-bit executables 41 only. Building a <quote>multi-lib</quote> system requires compiling many 25 42 applications twice, once for a 32-bit system and once for a 64-bit system. 26 43 This is not directly supported in LFS because it would interfere with the 27 44 educational objective of providing the minimal instructions needed for a 28 bas e Linux system. Some LFS/BLFS editors maintain a multilib fork45 basic Linux system. Some of the LFS/BLFS editors maintain a multilib fork 29 46 of LFS, accessible at <ulink 30 47 url="https://www.linuxfromscratch.org/~thomas/multilib/index.html"/>. But 31 the multilib edition is for x86_64, and multilib is an advanced topic 32 anyway.</para> 48 that's an advanced topic.</para> 33 49 34 50 </sect1> -
prologue/standards.xml
r0eb03e9d r0fe3bb0 36 36 specifications are architecture specific. There are also two trial 37 37 specifications: Gtk3 and Graphics. LFS attempts to conform to the LSB 38 generic specifications. The architecture specific part of LSB does39 not exist for ARM64.</para>38 specifications for the IA32 (32-bit x86) or AMD64 (x86_64) 39 architectures discussed in the previous section.</para> 40 40 41 41 <note><para>Many people do not agree with these requirements.
Note:
See TracChangeset
for help on using the changeset viewer.