Changes in / [23f4367:328eb6f]


Ignore:
Files:
4 deleted
26 edited

Legend:

Unmodified
Added
Removed
  • chapter02/creatingpartition.xml

    r23f4367 r328eb6f  
    106106
    107107    <sect3>
    108     <title>The Grub Bios Partition</title>
    109 
    110     <para>If the <emphasis>boot disk</emphasis> has been partitioned with a
    111     GUID Partition Table (GPT), then a small, typically 1 MB, partition must be
    112     created if it does not already exist.  This partition is not formatted, but
    113     must be available for GRUB to use during installation of the boot
    114     loader. This partition will normally be labeled 'BIOS Boot' if using
    115     <command>fdisk</command> or have a code of <emphasis>EF02</emphasis> if
    116     using the <command>gdisk</command> command.</para>
    117 
    118     <note><para>The Grub Bios partition must be on the drive that the BIOS
    119     uses to boot the system.  This is not necessarily the drive that holds
    120     the LFS root partition. The disks on a system may use different
    121     partition table types. The necessity of the Grub Bios partition depends
    122     only on the partition table type of the boot disk.</para></note>
    123     </sect3>
    124 
    125     <sect3>
    126108    <title>Convenience Partitions</title>
    127109
  • chapter04/addinguser.xml

    r23f4367 r328eb6f  
    8181  <systemitem class="username">lfs</systemitem> the owner:</para>
    8282
    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>
    8784
    8885<note><para>In some host systems, the following <command>su</command> command does not complete
  • chapter04/creatingminlayout.xml

    r23f4367 r328eb6f  
    2626for i in bin lib sbin; do
    2727  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>
     28done</userinput></screen>
    3329
    3430  <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled
  • chapter05/gcc-pass1.xml

    r23f4367 r328eb6f  
    6363mv -v mpc-&mpc-version; mpc</userinput></screen>
    6464
    65     <para>On x86_64 hosts, set the default directory name for
     65    <para>On ARM64 hosts, set the default directory name for
    6666    64-bit libraries to <quote>lib</quote>:</para>
    6767
    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>
    7470
    7571    <para>The GCC documentation recommends building GCC
     
    160156        <term><parameter>--disable-multilib</parameter></term>
    161157        <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>
    164159        </listitem>
    165160      </varlistentry>
  • chapter05/glibc.xml

    r23f4367 r328eb6f  
    4343  <sect2 role="installation">
    4444    <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 <ulink role='man'
    63         url='&man;ln.1'>ln(1)</ulink> before reporting what may appear to be
    64         an error.
    65       </para>
    66     </note>
    6745
    6846    <para>Some of the Glibc programs use the non-FHS-compliant
     
    212190      and the output of the last command will be of the form:</para>
    213191
    214 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
    215 
    216       <para>Note that for 32-bit machines, the interpreter name will be
    217       <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>
    218196
    219197      <para>If the output is not as shown above, or there is no output at all,
  • chapter06/gcc-pass2.xml

    r23f4367 r328eb6f  
    5858mv -v mpc-&mpc-version; mpc</userinput></screen>
    5959
    60     <para>If building on x86_64, change the default directory name for 64-bit
    61     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>
    6262
    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>
    6965
    7066    <para>Override the building rule of libgcc and libstdc++ headers, to
  • chapter07/changingowner.xml

    r23f4367 r328eb6f  
    3434  command:</para>
    3535
    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>
     36<screen><userinput>chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}</userinput></screen>
    4037
    4138</sect1>
  • chapter08/binutils.xml

    r23f4367 r328eb6f  
    110110          ultimately be located) is set to <filename
    111111          class="directory">$(exec_prefix)/$(target_alias)</filename>. For
    112           example, x86_64 machines would expand that to <filename
    113           class="directory">/usr/x86_64-pc-linux-gnu</filename>. Because this is
     112          example, ARM64 machines would expand that to <filename
     113          class="directory">/usr/aarch64-unknown-linux-gnu</filename>. Because this is
    114114          a custom system, this target-specific directory in <filename
    115115          class="directory">/usr</filename> is not required. <filename
     
    135135
    136136<screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen>
    137 
    138     <para>Twelve tests fail in the gold test suite when the
    139     <option>--enable-default-pie</option> and
    140     <option>--enable-default-ssp</option> options are passed to GCC.</para>
    141137
    142138 <!--    <para>Three tests in the gprofng suite are also known to fail.</para>-->
  • chapter08/expect.xml

    r23f4367 r328eb6f  
    6767    GDBM, and of course Expect itself) will fail catastrophically, and other
    6868    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>
    6975
    7076    <para>Prepare Expect for compilation:</para>
  • chapter08/gcc.xml

    r23f4367 r328eb6f  
    5555    <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen>
    5656-->
    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>
     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>
    6662
    6763    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
     
    174170
    175171    <para>
     172    <!-- https://gcc.gnu.org/PR107915 and https://gcc.gnu.org/PR109353 -->
     173    One test named <filename>contracts-tmpl-spec2.C</filename> is known to fail.
     174    <!-- https://gcc.gnu.org/PR111224 -->
     175    Some C++ module tests named <filename>xtreme-*</filename> are known to
     176    fail.
     177    </para>
     178
     179    <!-- Need further investigation -->
     180    <para>Many gcc and g++ tests related to hwasan are known to fail.</para>
     181
     182    <para>
    176183    Eight gcc tests (out of over 185,000):
    177184    <!-- https://gcc.gnu.org/PR106375 --><filename>pr56837.c</filename>
     
    187194    tests and 7 <filename>interception-malloc-test-1.C</filename> tests, are
    188195    known to fail.
    189 
    190     Additionally, several tests in the
    191     <filename class='directory'>vect</filename> directory are known to fail
    192     if the hardware does not support AVX.</para>
     196    </para>
    193197
    194198    <para>A few unexpected failures cannot always be avoided. The GCC developers
     
    240244  platform-specific differences in the dynamic linker name):</para>
    241245
    242 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
     246<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux-aarch64.so.1]</computeroutput></screen>
    243247
    244248  <para>Now make sure that we're set up to use the correct start files:</para>
     
    248252  <para>The output of the last command should be:</para>
    249253
    250 <screen><computeroutput>/usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded
    251 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded
    252 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>
     254<screen><computeroutput>/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded
     255/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded
     256/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>
    253257
    254258  <para>Depending on your machine architecture, the above may differ slightly.
     
    267271
    268272<screen><computeroutput>#include &lt;...&gt; search starts here:
    269  /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include
     273 /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/include
    270274 /usr/local/include
    271  /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include-fixed
     275 /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/include-fixed
    272276 /usr/include</computeroutput></screen>
    273277
     
    282286  be ignored, but otherwise the output of the last command should be:</para>
    283287
    284 <screen><computeroutput>SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
     288<screen><computeroutput>SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib64")
    285289SEARCH_DIR("/usr/local/lib64")
    286290SEARCH_DIR("/lib64")
    287291SEARCH_DIR("/usr/lib64")
    288 SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
     292SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib")
    289293SEARCH_DIR("/usr/local/lib")
    290294SEARCH_DIR("/lib")
    291295SEARCH_DIR("/usr/lib");</computeroutput></screen>
    292 
     296<!--
    293297   <para>A 32-bit system may use a few other directories. For example, here
    294298   is the output from an i686 machine:</para>
     
    302306SEARCH_DIR("/lib")
    303307SEARCH_DIR("/usr/lib");</computeroutput></screen>
    304 
     308-->
    305309  <para>Next make sure that we're using the correct libc:</para>
    306310
     
    318322  platform-specific differences in dynamic linker name):</para>
    319323
    320 <screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen>
     324<screen><computeroutput>found ld-linux-aarch64.so.1 at /usr/lib/ld-linux-aarch64.so.1</computeroutput></screen>
    321325
    322326  <para>If the output does not appear as shown above or is not received
  • chapter08/glibc.xml

    r23f4367 r328eb6f  
    574574
    575575    <para>By default, the dynamic loader (<filename
    576     class="libraryfile">/lib/ld-linux.so.2</filename>) searches through
     576    class="libraryfile">/lib/ld-linux-aarch64.so.1</filename>) searches through
    577577    <filename class="directory">/usr/lib</filename> for dynamic libraries
    578578    that are needed by programs as they are run. However, if there are
     
    622622        <seg>gencat, getconf, getent, iconv, iconvconfig, ldconfig,
    623623        ldd, lddlibc4,
    624         ld.so (symlink to ld-linux-x86-64.so.2 or ld-linux.so.2),
     624        ld.so (symlink to ld-linux-aarch64[_be].so.1),
    625625        locale, localedef, makedb, mtrace,
    626626        pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace,
    627627        zdump, and zic</seg>
    628         <seg>ld-linux-x86-64.so.2, ld-linux.so.2,
     628        <seg>ld-linux-aarch64[_be].so.1,
    629629        libBrokenLocale.{a,so}, libanl.{a,so},
    630630        libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so,
  • chapter08/gmp.xml

    r23f4367 r328eb6f  
    4141  <sect2 role="installation">
    4242    <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>
    5243
    5344    <note>
  • chapter08/grub.xml

    r23f4367 r328eb6f  
    4343    <note>
    4444      <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>
     54      <para>
    4555        If your system has UEFI support and you wish to boot LFS with UEFI,
    4656        you can skip this package in LFS,
    4757        and install GRUB with UEFI support (and its dependencies) by following
    4858        the instructions on
    49         <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink>.
     59        <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink>
     60        (with <parameter>--target=x86_64</parameter> removed).
    5061      </para>
    5162    </note>
  • chapter08/kbd.xml

    r23f4367 r328eb6f  
    4545    across the keymaps in the Kbd package. The following patch fixes this
    4646    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>
    4755
    4856<screen><userinput remap="pre">patch -Np1 -i ../&kbd-backspace-patch;</userinput></screen>
  • chapter08/libcap.xml

    r23f4367 r328eb6f  
    6060          <para>This parameter sets the library directory to
    6161          <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>
    6463        </listitem>
    6564      </varlistentry>
  • chapter08/libffi.xml

    r23f4367 r328eb6f  
    7777          system, use the less capable system as a parameter. For details
    7878          about alternative system types, see <ulink
    79           url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/x86-Options.html'>
    80           the x86 options 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>
    8181        </listitem>
    8282      </varlistentry>
  • chapter08/stripping.xml

    r23f4367 r328eb6f  
    5050  rationale for using the <command>install</command> command here.)</para>
    5151
    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
    5455  correct name for the current architecture, excluding anything ending
    5556  with <literal>g</literal>, in case the commands below have already been
  • chapter08/util-linux.xml

    r23f4367 r328eb6f  
    139139        eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck,
    140140        fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, hexdump, hwclock,
    141         i386 (link to setarch), ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,
     141        ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,
    142142        lastb (link to last), ldattach, linux32 (link to setarch), linux64 (link to setarch),
    143143        logger, look, losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, lslogins,
     
    148148        swapoff, swapon, switch_root, taskset, uclampset, ul,
    149149        umount, uname26 (link to setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse,
    150         wall, wdctl, whereis, wipefs, x86_64 (link to setarch), and zramctl</seg>
     150        wall, wdctl, whereis, wipefs, and zramctl</seg>
    151151        <seg>libblkid.so, libfdisk.so, libmount.so,
    152152        libsmartcols.so, and libuuid.so</seg>
     
    531531      </varlistentry>
    532532
    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 
    543533      <varlistentry id="ionice">
    544534        <term><command>ionice</command></term>
     
    12921282      </varlistentry>
    12931283
    1294       <varlistentry id="x86_64">
    1295         <term><command>x86_64</command></term>
    1296         <listitem>
    1297           <para>A symbolic link to setarch</para>
    1298           <indexterm zone="ch-system-util-linux x86_64">
    1299             <primary sortas="b-x86_64">x86_64</primary>
    1300           </indexterm>
    1301         </listitem>
    1302       </varlistentry>
    1303 
    13041284      <varlistentry id="zramctl">
    13051285        <term><command>zramctl</command></term>
  • chapter10/grub.xml

    r23f4367 r328eb6f  
    1919  <note>
    2020    <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
    2327      syntax of <filename>grub.cfg</filename> and the method to specify
    2428      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.
    2738    </para>
    2839  </note>
     
    3748    LILO.</para></warning>
    3849
    39     <para> Ensure that an emergency boot disk is ready to <quote>rescue</quote>
     50    <para>Ensure that an emergency boot disk is ready to <quote>rescue</quote>
    4051    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>
    5167  </sect2>
    5268
     
    7490    <title>Setting Up the Configuration</title>
    7591
    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
     107mount /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>
    80117
    81118    <para>The location of the boot partition is a choice of the user that
     
    102139
    103140    <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>
    105143
    106144    <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>
    110150    </warning>
    111151
    112 <screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>
     152<screen role="nodump"><userinput>grub-install --removable</userinput></screen>
    113153
    114154    <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
     182efibootmgr -B -L LFS || true
     183efibootmgr -c -L LFS -l '\EFI\BOOT\BOOTAA64.EFI' -d /dev/sda
     184umount /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>
    121191    </note>
    122192
     
    136206insmod ext2
    137207set root=(hd0,2)
     208
     209insmod all_video
    138210
    139211menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
  • chapter10/kernel.xml

    r23f4367 r328eb6f  
    141141      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
    142142        href="kernel/systemd.xml"/>
    143    
    144       <para>Enable some additional features if you are building a 64-bit
    145       system.  If you are using menuconfig, enable them in the order of
    146       <parameter>CONFIG_PCI_MSI</parameter> first, then
    147       <parameter>CONFIG_IRQ_REMAP</parameter>, at last
    148       <parameter>CONFIG_X86_X2APIC</parameter> because an option only
    149       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 hardware
    155       with RAM more than 4GB, adjust the configuration so the kernel will
    156       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"/>
    160143
    161144      <para>If the partition for the LFS system is in a NVME SSD (i. e. the
     
    274257
    275258      <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>
    276268        <term>
    277269          <parameter>
     
    286278          enabled, you should enable these two options as well or you'll see
    287279          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 x86
    295           processors in x2APIC mode.  x2APIC may be enabled by firmware on
    296           64-bit x86 systems, and a kernel without this option enabled will
    297           panic on boot if x2APIC is enabled by firmware.  This option
    298           has no effect, but also does no harm if x2APIC is disabled by the
    299           firmware.</para>
    300280        </listitem>
    301281      </varlistentry>
     
    356336    the filename should be <emphasis>vmlinuz</emphasis> to be compatible with
    357337    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>
    361342
    362343    <para><filename>System.map</filename> is a symbol file for the kernel.
  • chapter10/kernel/kernel-config.py

    r23f4367 r328eb6f  
    2424if_stack = []
    2525
    26 expand_var_mp = { 'SRCARCH': 'x86' }
     26expand_var_mp = { 'SRCARCH': 'arm64' }
    2727main_dep = {}
    2828
  • chapter10/kernel/systemd.xml

    r23f4367 r328eb6f  
    1616  [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt;            [EXPERT]
    1717
    18 <emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
    19   [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel                                   [RELOCATABLE]
    20   [*]   <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
     18<emphasis role='blue'>K</emphasis>ernel Features ---&gt;
     19  [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel image                             [RELOCATABLE]
     20  [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image                 [RANDOMIZE_BASE]
    2121
    2222<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
  • chapter10/kernel/sysv.xml

    r23f4367 r328eb6f  
    1515  [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt;            [EXPERT]
    1616
    17 <emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
    18   [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel                                   [RELOCATABLE]
    19   [*]   <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
     17<emphasis role='blue'>K</emphasis>ernel Features ---&gt;
     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]
    2020
    2121<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
  • git-version.sh

    r23f4367 r328eb6f  
    5353
    5454sha="$(git describe --abbrev=1)"
    55 rev=$(echo "$sha" | sed 's/-g[^-]*$//')
     55rev=arm64-$(echo "$sha" | sed 's/-g[^-]*$//')
    5656version="$rev"
    5757versiond="$rev-systemd"
  • prologue/architecture.xml

    r23f4367 r328eb6f  
    1111  <title>LFS Target Architectures</title>
    1212
    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
     14called AArch64) CPUs.  On the other hand, the instructions in this book may
     15work on 32-bit ARM CPUs with some modifications. To build a system that
     16utilizes one of these alternative CPUs, the main prerequisite, in
     17addition to those on
     18the next page, is an existing Linux system such as an earlier LFS
     19installation, Ubuntu, Red Hat/Fedora, SuSE, or other distribution that
     20targets the architecture that you have.</para>
    2221
    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
     24only.  Building a <quote>multi-lib</quote> system requires compiling many
    4225applications twice, once for a 32-bit system and once for a 64-bit system.
    4326This is not directly supported in LFS because it would interfere with the
    4427educational objective of providing the minimal instructions needed for a
    45 basic Linux system. Some of the LFS/BLFS editors maintain a multilib fork
     28base Linux system. Some LFS/BLFS editors maintain a multilib fork
    4629of LFS, accessible at <ulink
    4730url="https://www.linuxfromscratch.org/~thomas/multilib/index.html"/>. But
    48 that's an advanced topic.</para>
     31the multilib edition is for x86_64, and multilib is an advanced topic
     32anyway.</para>
    4933
    5034</sect1>
  • prologue/standards.xml

    r23f4367 r328eb6f  
    3636        specifications are architecture specific.  There are also two trial
    3737        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>
    4040
    4141        <note><para>Many people do not agree with these requirements.
Note: See TracChangeset for help on using the changeset viewer.