Changes in / [5ff2f2e4:161a267]
- Files:
-
- 4 deleted
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter02/creatingpartition.xml
r5ff2f2e4 r161a267 106 106 107 107 <sect3> 108 <title>The Grub Bios Partition</title>109 110 <para>If the <emphasis>boot disk</emphasis> has been partitioned with a111 GUID Partition Table (GPT), then a small, typically 1 MB, partition must be112 created if it does not already exist. This partition is not formatted, but113 must be available for GRUB to use during installation of the boot114 loader. This partition will normally be labeled 'BIOS Boot' if using115 <command>fdisk</command> or have a code of <emphasis>EF02</emphasis> if116 using the <command>gdisk</command> command.</para>117 118 <note><para>The Grub Bios partition must be on the drive that the BIOS119 uses to boot the system. This is not necessarily the drive that holds120 the LFS root partition. The disks on a system may use different121 partition table types. The necessity of the Grub Bios partition depends122 only on the partition table type of the boot disk.</para></note>123 </sect3>124 125 <sect3>126 108 <title>Convenience Partitions</title> 127 109 -
chapter04/addinguser.xml
r5ff2f2e4 r161a267 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} 84 case $(uname -m) in 85 x86_64) chown -v lfs $LFS/lib64 ;; 86 esac</userinput></screen> 83 <screen><userinput>chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}</userinput></screen> 87 84 88 85 <note><para>In some host systems, the following <command>su</command> command does not complete -
chapter04/creatingminlayout.xml
r5ff2f2e4 r161a267 26 26 for i in bin lib sbin; do 27 27 ln -sv usr/$i $LFS/$i 28 done 29 30 case $(uname -m) in 31 x86_64) mkdir -pv $LFS/lib64 ;; 32 esac</userinput></screen> 28 done</userinput></screen> 33 29 34 30 <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled -
chapter05/gcc-pass1.xml
r5ff2f2e4 r161a267 63 63 mv -v mpc-&mpc-version; mpc</userinput></screen> 64 64 65 <para>On x86_64 hosts, set the default directory name for65 <para>On ARM64 hosts, set the default directory name for 66 66 64-bit libraries to <quote>lib</quote>:</para> 67 67 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> 68 <screen><userinput remap="pre">sed -e '/lp64=/s/lib64/lib/' \ 69 -i.orig gcc/config/aarch64/t-aarch64-linux</userinput></screen> 74 70 75 71 <para>The GCC documentation recommends building GCC … … 160 156 <term><parameter>--disable-multilib</parameter></term> 161 157 <listitem> 162 <para>On x86_64, LFS does not support a multilib configuration. 163 This switch is harmless for x86.</para> 158 <para>On ARM64, LFS does not support a multilib configuration.</para> 164 159 </listitem> 165 160 </varlistentry> -
chapter05/glibc.xml
r5ff2f2e4 r161a267 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 proper48 operation of the dynamic library loader:</para>49 50 <screen><userinput remap="pre">case $(uname -m) in51 i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.352 ;;53 x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib6454 ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.355 ;;56 esac</userinput></screen>57 58 <note>59 <para>60 The above command is correct. The <command>ln</command> command has61 several syntactic versions, so be sure to check62 <command>info coreutils ln</command> and <ulink role='man'63 url='&man;ln.1'>ln(1)</ulink> before reporting what may appear to be64 an error.65 </para>66 </note>67 45 68 46 <para>Some of the Glibc programs use the non-FHS-compliant … … 212 190 and the output of the last command will be of the form:</para> 213 191 214 <screen><computeroutput>[Requesting program interpreter: /lib 64/ld-linux-x86-64.so.2]</computeroutput></screen>215 216 <para>Note that for 32-bitmachines, the interpreter name will be217 <filename>/lib/ld-linux.so.2</filename>.</para>192 <screen><computeroutput>[Requesting program interpreter: /lib/ld-linux-aarch64.so.1]</computeroutput></screen> 193 194 <para>Note that for big-endian machines, the interpreter name will be 195 <filename>/lib/ld-linux-aarch64_be.so.1</filename>.</para> 218 196 219 197 <para>If the output is not as shown above, or there is no output at all, -
chapter06/gcc-pass2.xml
r5ff2f2e4 r161a267 58 58 mv -v mpc-&mpc-version; mpc</userinput></screen> 59 59 60 <para> If building on x86_64, change the default directory name for 64-bit61 libraries to <quote>lib</quote>:</para>60 <para>On ARM64 hosts, set the default directory name for 61 64-bit libraries to <quote>lib</quote>:</para> 62 62 63 <screen><userinput remap="pre">case $(uname -m) in 64 x86_64) 65 sed -e '/m64=/s/lib64/lib/' \ 66 -i.orig gcc/config/i386/t-linux64 67 ;; 68 esac</userinput></screen> 63 <screen><userinput remap="pre">sed -e '/lp64=/s/lib64/lib/' \ 64 -i.orig gcc/config/aarch64/t-aarch64-linux</userinput></screen> 69 65 70 66 <para>Override the building rule of libgcc and libstdc++ headers, to -
chapter07/changingowner.xml
r5ff2f2e4 r161a267 34 34 command:</para> 35 35 36 <screen><userinput>chown --from lfs -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools} 37 case $(uname -m) in 38 x86_64) chown --from lfs -R root:root $LFS/lib64 ;; 39 esac</userinput></screen> 36 <screen><userinput>chown -R --from lfs root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}</userinput></screen> 40 37 41 38 </sect1> -
chapter08/binutils.xml
r5ff2f2e4 r161a267 110 110 ultimately be located) is set to <filename 111 111 class="directory">$(exec_prefix)/$(target_alias)</filename>. For 112 example, x86_64 machines would expand that to <filename113 class="directory">/usr/ x86_64-pc-linux-gnu</filename>. Because this is112 example, ARM64 machines would expand that to <filename 113 class="directory">/usr/aarch64-unknown-linux-gnu</filename>. Because this is 114 114 a custom system, this target-specific directory in <filename 115 115 class="directory">/usr</filename> is not required. <filename … … 135 135 136 136 <screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen> 137 138 <para>Twelve tests fail in the gold test suite when the139 <option>--enable-default-pie</option> and140 <option>--enable-default-ssp</option> options are passed to GCC.</para>141 137 142 138 <!-- <para>Three tests in the gprofng suite are also known to fail.</para>--> -
chapter08/expect.xml
r5ff2f2e4 r161a267 67 67 GDBM, and of course Expect itself) will fail catastrophically, and other 68 68 subtle breakages may also happen.</para> 69 70 <para>Update two config scripts to allow building this package for 71 AArch64:</para> 72 73 <screen><userinput remap="pre">tar -C tclconfig -xf ../autoconf-&autoconf-version;.tar.xz --strip-components=2 \ 74 autoconf-&autoconf-version;/build-aux/config.{guess,sub}</userinput></screen> 69 75 70 76 <para>Now, make some changes to allow the package with gcc-14.1 or later:</para> -
chapter08/gcc.xml
r5ff2f2e4 r161a267 42 42 <title>Installation of GCC</title> 43 43 44 <para>If building on x86_64, change the default directory name for 64-bit 45 libraries to <quote>lib</quote>:</para> 46 47 <screen><userinput remap="pre">case $(uname -m) in 48 x86_64) 49 sed -e '/m64=/s/lib64/lib/' \ 50 -i.orig gcc/config/i386/t-linux64 51 ;; 52 esac</userinput></screen> 44 <para>On ARM64 hosts, set the default directory name for 45 64-bit libraries to <quote>lib</quote>:</para> 46 47 <screen><userinput remap="pre">sed -e '/lp64=/s/lib64/lib/' \ 48 -i.orig gcc/config/aarch64/t-aarch64-linux</userinput></screen> 53 49 54 50 <para>The GCC documentation recommends building GCC in a dedicated build directory:</para> … … 188 184 if the hardware does not support AVX.</para> 189 185 --> 186 187 <para>On ARM64, many tests in the 188 <filename class='directory'>c-c++-common/hwasan</filename> 189 directory are known to fail in both gcc and g++ tests<!-- why? -->, 190 and many tests in the 191 <!-- https://gcc.gnu.org/PR111124 --> 192 <filename class='directory'>g++.dg/modules</filename> 193 directory are known to fail in g++ tests.</para> 194 190 195 <para>A few unexpected failures cannot always be avoided. In some cases 191 196 test failures depend on the specific hardware of the system.<!--The GCC developers … … 237 242 platform-specific differences in the dynamic linker name):</para> 238 243 239 <screen><computeroutput>[Requesting program interpreter: /lib 64/ld-linux-x86-64.so.2]</computeroutput></screen>244 <screen><computeroutput>[Requesting program interpreter: /lib/ld-linux-aarch64.so.1]</computeroutput></screen> 240 245 241 246 <para>Now make sure that we're set up to use the correct start files:</para> … … 245 250 <para>The output of the last command should be:</para> 246 251 247 <screen><computeroutput>/usr/lib/gcc/ x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded248 /usr/lib/gcc/ x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded249 /usr/lib/gcc/ x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>252 <screen><computeroutput>/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded 253 /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded 254 /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen> 250 255 251 256 <para>Depending on your machine architecture, the above may differ slightly. … … 264 269 265 270 <screen><computeroutput>#include <...> search starts here: 266 /usr/lib/gcc/ x86_64-pc-linux-gnu/&gcc-version;/include271 /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/include 267 272 /usr/local/include 268 /usr/lib/gcc/ x86_64-pc-linux-gnu/&gcc-version;/include-fixed273 /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/include-fixed 269 274 /usr/include</computeroutput></screen> 270 275 … … 279 284 be ignored, but otherwise the output of the last command should be:</para> 280 285 281 <screen><computeroutput>SEARCH_DIR("/usr/ x86_64-pc-linux-gnu/lib64")286 <screen><computeroutput>SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib64") 282 287 SEARCH_DIR("/usr/local/lib64") 283 288 SEARCH_DIR("/lib64") 284 289 SEARCH_DIR("/usr/lib64") 285 SEARCH_DIR("/usr/ x86_64-pc-linux-gnu/lib")290 SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib") 286 291 SEARCH_DIR("/usr/local/lib") 287 292 SEARCH_DIR("/lib") 288 293 SEARCH_DIR("/usr/lib");</computeroutput></screen> 289 294 <!-- 290 295 <para>A 32-bit system may use a few other directories. For example, here 291 296 is the output from an i686 machine:</para> … … 299 304 SEARCH_DIR("/lib") 300 305 SEARCH_DIR("/usr/lib");</computeroutput></screen> 301 306 --> 302 307 <para>Next make sure that we're using the correct libc:</para> 303 308 … … 315 320 platform-specific differences in dynamic linker name):</para> 316 321 317 <screen><computeroutput>found ld-linux- x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen>322 <screen><computeroutput>found ld-linux-aarch64.so.1 at /usr/lib/ld-linux-aarch64.so.1</computeroutput></screen> 318 323 319 324 <para>If the output does not appear as shown above or is not received -
chapter08/glibc.xml
r5ff2f2e4 r161a267 571 571 572 572 <para>By default, the dynamic loader (<filename 573 class="libraryfile">/lib/ld-linux .so.2</filename>) searches through573 class="libraryfile">/lib/ld-linux-aarch64.so.1</filename>) searches through 574 574 <filename class="directory">/usr/lib</filename> for dynamic libraries 575 575 that are needed by programs as they are run. However, if there are … … 619 619 <seg>gencat, getconf, getent, iconv, iconvconfig, ldconfig, 620 620 ldd, lddlibc4, 621 ld.so (symlink to ld-linux- x86-64.so.2 or ld-linux.so.2),621 ld.so (symlink to ld-linux-aarch64[_be].so.1), 622 622 locale, localedef, makedb, mtrace, 623 623 pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace, 624 624 zdump, and zic</seg> 625 <seg>ld-linux- x86-64.so.2, ld-linux.so.2,625 <seg>ld-linux-aarch64[_be].so.1, 626 626 libBrokenLocale.{a,so}, libanl.{a,so}, 627 627 libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so, -
chapter08/gmp.xml
r5ff2f2e4 r161a267 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 is46 capable of running 64-bit code <emphasis>and</emphasis> you have specified47 <envar>CFLAGS</envar> in the environment, the configure script will48 attempt to configure for 64-bits and fail.49 Avoid this by invoking the configure command below with50 <screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para>51 </note>52 43 53 44 <note> -
chapter08/grub.xml
r5ff2f2e4 r161a267 42 42 43 43 <note> 44 <para> 45 On ARM64 systems, the following instruction builds GRUB for UEFI. 46 But the built GRUB lacks some features because a few optional 47 dependencies of GRUB for UEFI is beyond the scope of LFS and not 48 installed yet. 49 </para> 50 <para> 51 If your system firmware does not support UEFI, you need to skip the 52 content of this page and try to figure out how to boot your system. 53 </para> 44 54 <para> 45 55 If your system has UEFI support and you wish to boot LFS with UEFI, -
chapter08/kbd.xml
r5ff2f2e4 r161a267 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 keymaps 51 for the keyboards most common on the market (qwerty or dvorak) are 52 in "i386" catagory. 53 </para> 54 </note> 47 55 48 56 <screen><userinput remap="pre">patch -Np1 -i ../&kbd-backspace-patch;</userinput></screen> -
chapter08/libcap.xml
r5ff2f2e4 r161a267 60 60 <para>This parameter sets the library directory to 61 61 <filename>/usr/lib</filename> rather than 62 <filename>/usr/lib64</filename> on x86_64. It has no effect on 63 x86.</para> 62 <filename>/usr/lib64</filename> on ARM64.</para> 64 63 </listitem> 65 64 </varlistentry> -
chapter08/libffi.xml
r5ff2f2e4 r161a267 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/ x86-Options.html'>80 the x86options in the GCC manual</ulink>.</para>79 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/AArch64-Options.html'> 80 the AArch64 options in the GCC manual</ulink>.</para> 81 81 </listitem> 82 82 </varlistentry> -
chapter08/stripping.xml
r5ff2f2e4 r161a267 50 50 rationale for using the <command>install</command> command here.)</para> 51 51 52 <note><para>The ELF loader's name is ld-linux-x86-64.so.2 on 64-bit systems 53 and ld-linux.so.2 on 32-bit systems. The construct below selects the 52 <note><para>The ELF loader's name is ld-linux-aarch64.so.1 on 53 little-endian systems and ld-linux-aarch64_be.so.1 on big-endian systems. 54 The construct below selects the 54 55 correct name for the current architecture, excluding anything ending 55 56 with <literal>g</literal>, in case the commands below have already been -
chapter08/util-linux.xml
r5ff2f2e4 r161a267 152 152 eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck, 153 153 fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, hexdump, hwclock, 154 i 386 (link to setarch), ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,154 ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, 155 155 lastb (link to last), ldattach, linux32 (link to setarch), linux64 (link to setarch), 156 156 logger, look, losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, lslogins, … … 161 161 swapoff, swapon, switch_root, taskset, uclampset, ul, 162 162 umount, uname26 (link to setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse, 163 wall, wdctl, whereis, wipefs, x86_64 (link to setarch),and zramctl</seg>163 wall, wdctl, whereis, wipefs, and zramctl</seg> 164 164 <seg>libblkid.so, libfdisk.so, libmount.so, 165 165 libsmartcols.so, and libuuid.so</seg> … … 544 544 </varlistentry> 545 545 546 <varlistentry id="i386">547 <term><command>i386</command></term>548 <listitem>549 <para>A symbolic link to setarch</para>550 <indexterm zone="ch-system-util-linux i386">551 <primary sortas="b-i386">i386</primary>552 </indexterm>553 </listitem>554 </varlistentry>555 556 546 <varlistentry id="ionice"> 557 547 <term><command>ionice</command></term> … … 1305 1295 </varlistentry> 1306 1296 1307 <varlistentry id="x86_64">1308 <term><command>x86_64</command></term>1309 <listitem>1310 <para>A symbolic link to setarch</para>1311 <indexterm zone="ch-system-util-linux x86_64">1312 <primary sortas="b-x86_64">x86_64</primary>1313 </indexterm>1314 </listitem>1315 </varlistentry>1316 1317 1297 <varlistentry id="zramctl"> 1318 1298 <term><command>zramctl</command></term> -
chapter10/grub.xml
r5ff2f2e4 r161a267 19 19 <note> 20 20 <para> 21 If your system has UEFI support and you wish to boot LFS with UEFI, 22 you should skip the instructions in this page but still learn the 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 the instructions in this page but still learn the 23 27 syntax of <filename>grub.cfg</filename> and the method to specify 24 28 a partition in the file from this page, and configure GRUB with UEFI 25 support using the instructions provided in 26 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>. 29 using the instructions provided in 30 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>, 31 but replace <parameter>--target=x86_64-efi</parameter> with 32 <parameter>--target=arm64-efi</parameter> for the ARM64 system. 33 </para> 34 <para> 35 If your system does not support UEFI or you don't want to use it, 36 you'll need to figure out how to configure the booting process of 37 the system on your own. 27 38 </para> 28 39 </note> … … 37 48 LILO.</para></warning> 38 49 39 <para> 50 <para>Ensure that an emergency boot disk is ready to <quote>rescue</quote> 40 51 the computer if the computer becomes unusable (un-bootable). If you do not 41 already have a boot device, you can create one. In order for the procedure 42 below to work, you need to jump ahead to BLFS and install 43 <userinput>xorriso</userinput> from the <ulink 44 url="&blfs-book;multimedia/libisoburn.html"> 45 libisoburn</ulink> package.</para> 46 47 <screen role="nodump"><userinput>cd /tmp 48 grub-mkrescue --output=grub-img.iso 49 xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen> 50 52 already have a boot device, you can create one. To create a emergency 53 boot device for UEFI, consult section <quote>Create an Emergency Boot 54 Disk</quote> in 55 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.</para> 56 57 </sect2> 58 59 <sect2> 60 <title>Turn off Secure Boot</title> 61 62 <para>LFS does not have the essential packages to support Secure Boot. 63 To set up the boot process following the instructions in this section, 64 Secure Boot must be turned off from the configuration interface of the 65 firmware. Read the documentation provided by the manufacturer of your 66 system to find out how.</para> 51 67 </sect2> 52 68 … … 74 90 <title>Setting Up the Configuration</title> 75 91 76 <para>GRUB works by writing data to the first physical track of the 77 hard disk. This area is not part of any file system. The programs 78 there access GRUB modules in the boot partition. The default location 79 is /boot/grub/.</para> 92 <para>GRUB works by creating an EFI executable in the EFI System 93 Partition (ESP). You can find the ESP with:</para> 94 95 <screen role="nodump"><userinput>fdisk -l | grep 'EFI System'</userinput></screen> 96 97 <para>If no ESP exists on your hard drive (for example, you are building 98 LFS on a fresh new system with a Live CD as the host distro), read 99 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink> 100 for the instruction to create an ESP on your hard drive.</para> 101 102 <para>If the ESP is not mounted at 103 <filename class="directory">/boot/efi</filename> (in the chroot), 104 mount it now:</para> 105 106 <screen role="nodump"><userinput>mkdir -pv /boot/efi 107 mount /boot/efi</userinput></screen> 108 109 <note> 110 <para>The path to the device node is intentionally omitted in the 111 command. We expect the entry for mounting the ESP to 112 <filename class="directory">/boot/efi</filename> is already in 113 <filename>/etc/fstab</filename>. Add the entry before running the 114 command if you forgot to create an entry for the ESP in 115 <xref linkend="ch-bootable-fstab"/>.</para> 116 </note> 80 117 81 118 <para>The location of the boot partition is a choice of the user that … … 102 139 103 140 <para>Install the GRUB files into <filename 104 class="directory">/boot/grub</filename> and set up the boot track:</para> 141 class="directory">/boot/grub</filename> and the GRUB EFI executable into 142 <filename class="directory">/boot/efi/EFI/BOOT/BOOTAA64.EFI</filename>:</para> 105 143 106 144 <warning> 107 <para>The following command will overwrite the current boot loader. Do not 108 run the command if this is not desired, for example, if using a third party 109 boot manager to manage the Master Boot Record (MBR).</para> 145 <para>The following command will overwrite 146 <filename>BOOTAA64.EFI</filename>. Do not run the command if this is 147 not desired, for example, if it contains a third party boot manager. 148 You can backup it with <command>cp</command> as it's a regular 149 file.</para> 110 150 </warning> 111 151 112 <screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>152 <screen role="nodump"><userinput>grub-install --removable</userinput></screen> 113 153 114 154 <note> 115 <para>If the system has been booted using UEFI, 116 <command>grub-install</command> will try to install files for the 117 <emphasis>x86_64-efi</emphasis> target, but those files 118 have not been installed in <xref linkend="chapter-building-system"/>. 119 If this is the case, add <option>--target i386-pc</option> to the 120 command above.</para> 155 <para> 156 <parameter>--removable</parameter> may seem strange here. The UEFI 157 firmware searches EFI executables for boot loaders in a hardcoded 158 path, <filename>EFI/BOOT/BOOTAA64.EFI</filename> in the ESP, and other 159 boot loader paths listed in the EFI variables. We've not installed 160 the utilities for manipulating EFI variables so we need to install 161 the EFI executable into the hardcoded path. The hardcoded path is 162 usually used by removable devices (for example, USB thumb devices) 163 so the <command>grub-install</command> option for this purpose is 164 named <parameter>--removable</parameter>. 165 </para> 166 <para> 167 UEFI implementation usually prefers the boot loaders with paths 168 recorded in an EFI variable, to the boot loader with the hardcoded 169 search path. You may need to invoke the boot device selection menu 170 or setting interface of your EFI firmware on next boot to explicitly 171 select the bootloader. 172 </para> 173 <para> 174 Some UEFI implementation may completely skip the hardcoded path if 175 there are other boot loaders in the same hard drive with paths 176 recorded in an EFI variable. Then you need to create an EFI 177 variable for the newly installed boot loader. Install 178 <ulink url="&blfs-book;postlfs/efibootmgr.html">efibootmgr</ulink>, 179 then run the following commands: 180 181 <screen role="nodump"><userinput>mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars 182 efibootmgr -B -L LFS || true 183 efibootmgr -c -L LFS -l '\EFI\BOOT\BOOTAA64.EFI' -d /dev/sda 184 umount /sys/firmware/efi/efivars</userinput></screen> 185 186 Replace <filename>/dev/sda</filename> with the device node of the 187 hard drive where you are installing GRUB into. For some UEFI 188 firmwares, <option>-e 3</option> option may be needed for the 189 <command>efibootmgr -c</command> command. 190 </para> 121 191 </note> 122 192 … … 136 206 insmod ext2 137 207 set root=(hd0,2) 208 209 insmod all_video 138 210 139 211 menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" { -
chapter10/kernel.xml
r5ff2f2e4 r161a267 141 141 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 142 142 href="kernel/systemd.xml"/> 143 144 <para>Enable some additional features if you are building a 64-bit145 system. If you are using menuconfig, enable them in the order of146 <parameter>CONFIG_PCI_MSI</parameter> first, then147 <parameter>CONFIG_IRQ_REMAP</parameter>, at last148 <parameter>CONFIG_X86_X2APIC</parameter> because an option only149 shows up after its dependencies are selected.</para>150 151 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"152 href="kernel/x2apic.xml"/>153 154 <para>If you are building a 32-bit system running on a hardware155 with RAM more than 4GB, adjust the configuration so the kernel will156 be able to use up to 64GB physical RAM:</para>157 158 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"159 href="kernel/highmem.xml"/>160 143 161 144 <para>If the partition for the LFS system is in a NVME SSD (i. e. the … … 274 257 275 258 <varlistentry> 259 <term><parameter>Enable the generic EFI decompressor</parameter></term> 260 <listitem> 261 <para>Create the bootable image as an EFI application that carries 262 the actual kernel image in compressed form. It can make the 263 bootable image 50% smaller.</para> 264 </listitem> 265 </varlistentry> 266 267 <varlistentry> 276 268 <term> 277 269 <parameter> … … 286 278 enabled, you should enable these two options as well or you'll see 287 279 a blank screen once the DRI driver is loaded.</para> 288 </listitem>289 </varlistentry>290 291 <varlistentry>292 <term><parameter>Support x2apic</parameter></term>293 <listitem>294 <para>Support running the interrupt controller of 64-bit x86295 processors in x2APIC mode. x2APIC may be enabled by firmware on296 64-bit x86 systems, and a kernel without this option enabled will297 panic on boot if x2APIC is enabled by firmware. This option298 has no effect, but also does no harm if x2APIC is disabled by the299 firmware.</para>300 280 </listitem> 301 281 </varlistentry> … … 356 336 the filename should be <emphasis>vmlinuz</emphasis> to be compatible with 357 337 the automatic setup of the boot process described in the next section. The 358 following command assumes an x86 architecture:</para> 359 360 <screen><userinput remap="install">cp -iv arch/x86/boot/bzImage /boot/vmlinuz-&linux-version;-lfs-&version;</userinput></screen> 338 following command assumes an ARM64 architecture with an EFI boot loader 339 (for example, GRUB built in &ch-final;):</para> 340 341 <screen><userinput remap="install">cp -iv arch/arm64/boot/vmlinuz.efi /boot/vmlinuz-&linux-version;-lfs-&version;</userinput></screen> 361 342 362 343 <para><filename>System.map</filename> is a symbol file for the kernel. -
chapter10/kernel/kernel-config.py
r5ff2f2e4 r161a267 24 24 if_stack = [] 25 25 26 expand_var_mp = { 'SRCARCH': ' x86' }26 expand_var_mp = { 'SRCARCH': 'arm64' } 27 27 main_dep = {} 28 28 -
chapter10/kernel/systemd.xml
r5ff2f2e4 r161a267 15 15 [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---> [EXPERT] 16 16 17 <emphasis role='blue'> P</emphasis>rocessor type and features --->18 [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel 19 [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR)[RANDOMIZE_BASE]17 <emphasis role='blue'>K</emphasis>ernel Features ---> 18 [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel image [RELOCATABLE] 19 [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image [RANDOMIZE_BASE] 20 20 21 21 <emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---> -
chapter10/kernel/sysv.xml
r5ff2f2e4 r161a267 15 15 [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---> [EXPERT] 16 16 17 <emphasis role='blue'> P</emphasis>rocessor type and features --->18 [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel 19 [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR)[RANDOMIZE_BASE]17 <emphasis role='blue'>K</emphasis>ernel Features ---> 18 [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel image [RELOCATABLE] 19 [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image [RANDOMIZE_BASE] 20 20 21 21 <emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---> -
git-version.sh
r5ff2f2e4 r161a267 53 53 54 54 sha="$(git describe --abbrev=1)" 55 rev= $(echo "$sha" | sed 's/-g[^-]*$//')55 rev=arm64-$(echo "$sha" | sed 's/-g[^-]*$//') 56 56 version="$rev" 57 57 versiond="$rev-systemd" -
prologue/architecture.xml
r5ff2f2e4 r161a267 11 11 <title>LFS Target Architectures</title> 12 12 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> 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> 22 21 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 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 42 25 applications twice, once for a 32-bit system and once for a 64-bit system. 43 26 This is not directly supported in LFS because it would interfere with the 44 27 educational objective of providing the minimal instructions needed for a 45 bas ic Linux system. Some of the LFS/BLFS editors maintain a multilib fork28 base Linux system. Some LFS/BLFS editors maintain a multilib fork 46 29 of LFS, accessible at <ulink 47 30 url="https://www.linuxfromscratch.org/~thomas/multilib/index.html"/>. But 48 that's an advanced topic.</para> 31 the multilib edition is for x86_64, and multilib is an advanced topic 32 anyway.</para> 49 33 50 34 </sect1> -
prologue/standards.xml
r5ff2f2e4 r161a267 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 specifications for the IA32 (32-bit x86) or AMD64 (x86_64)39 architectures discussed in the previous section.</para>38 generic specifications. The architecture specific part of LSB does 39 not exist for ARM64.</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.