Changes in / [328eb6f:23f4367]


Ignore:
Files:
4 added
26 edited

Legend:

Unmodified
Added
Removed
  • chapter02/creatingpartition.xml

    r328eb6f r23f4367  
    104104    occurrence, the best solution is to purchase more RAM for your
    105105    system.</para> </sect3>
     106
     107    <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>
    106124
    107125    <sect3>
  • chapter04/addinguser.xml

    r328eb6f r23f4367  
    8181  <systemitem class="username">lfs</systemitem> the owner:</para>
    8282
    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}
     84case $(uname -m) in
     85  x86_64) chown -v lfs $LFS/lib64 ;;
     86esac</userinput></screen>
    8487
    8588<note><para>In some host systems, the following <command>su</command> command does not complete
  • chapter04/creatingminlayout.xml

    r328eb6f r23f4367  
    2626for i in bin lib sbin; do
    2727  ln -sv usr/$i $LFS/$i
    28 done</userinput></screen>
     28done
     29
     30case $(uname -m) in
     31  x86_64) mkdir -pv $LFS/lib64 ;;
     32esac</userinput></screen>
    2933
    3034  <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled
  • chapter05/gcc-pass1.xml

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

    r328eb6f r23f4367  
    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    ;;
     56esac</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>
    4567
    4668    <para>Some of the Glibc programs use the non-FHS-compliant
     
    190212      and the output of the last command will be of the form:</para>
    191213
    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>
     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>
    196218
    197219      <para>If the output is not as shown above, or there is no output at all,
  • chapter06/gcc-pass2.xml

    r328eb6f r23f4367  
    5858mv -v mpc-&mpc-version; mpc</userinput></screen>
    5959
    60     <para>On ARM64 hosts, set the default directory name for
    61     64-bit libraries 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>
    6262
    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/' \
     66        -i.orig gcc/config/i386/t-linux64
     67  ;;
     68esac</userinput></screen>
    6569
    6670    <para>Override the building rule of libgcc and libstdc++ headers, to
  • chapter07/changingowner.xml

    r328eb6f r23f4367  
    3434  command:</para>
    3535
    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}
     37case $(uname -m) in
     38  x86_64) chown -R root:root $LFS/lib64 ;;
     39esac</userinput></screen>
    3740
    3841</sect1>
  • chapter08/binutils.xml

    r328eb6f r23f4367  
    110110          ultimately be located) is set to <filename
    111111          class="directory">$(exec_prefix)/$(target_alias)</filename>. For
    112           example, ARM64 machines would expand that to <filename
    113           class="directory">/usr/aarch64-unknown-linux-gnu</filename>. Because this is
     112          example, x86_64 machines would expand that to <filename
     113          class="directory">/usr/x86_64-pc-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>
    137141
    138142 <!--    <para>Three tests in the gprofng suite are also known to fail.</para>-->
  • chapter08/expect.xml

    r328eb6f r23f4367  
    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>
    7569
    7670    <para>Prepare Expect for compilation:</para>
  • chapter08/gcc.xml

    r328eb6f r23f4367  
    5555    <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen>
    5656-->
    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  ;;
     65esac</userinput></screen>
    6266
    6367    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
     
    170174
    171175    <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>
    183176    Eight gcc tests (out of over 185,000):
    184177    <!-- https://gcc.gnu.org/PR106375 --><filename>pr56837.c</filename>
     
    194187    tests and 7 <filename>interception-malloc-test-1.C</filename> tests, are
    195188    known to fail.
    196     </para>
     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>
    197193
    198194    <para>A few unexpected failures cannot always be avoided. The GCC developers
     
    244240  platform-specific differences in the dynamic linker name):</para>
    245241
    246 <screen><computeroutput>[Requesting program interpreter: /lib/ld-linux-aarch64.so.1]</computeroutput></screen>
     242<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
    247243
    248244  <para>Now make sure that we're set up to use the correct start files:</para>
     
    252248  <para>The output of the last command should be:</para>
    253249
    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>
     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>
    257253
    258254  <para>Depending on your machine architecture, the above may differ slightly.
     
    271267
    272268<screen><computeroutput>#include &lt;...&gt; search starts here:
    273  /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/include
     269 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include
    274270 /usr/local/include
    275  /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/include-fixed
     271 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include-fixed
    276272 /usr/include</computeroutput></screen>
    277273
     
    286282  be ignored, but otherwise the output of the last command should be:</para>
    287283
    288 <screen><computeroutput>SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib64")
     284<screen><computeroutput>SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
    289285SEARCH_DIR("/usr/local/lib64")
    290286SEARCH_DIR("/lib64")
    291287SEARCH_DIR("/usr/lib64")
    292 SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib")
     288SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
    293289SEARCH_DIR("/usr/local/lib")
    294290SEARCH_DIR("/lib")
    295291SEARCH_DIR("/usr/lib");</computeroutput></screen>
    296 <!--
     292
    297293   <para>A 32-bit system may use a few other directories. For example, here
    298294   is the output from an i686 machine:</para>
     
    306302SEARCH_DIR("/lib")
    307303SEARCH_DIR("/usr/lib");</computeroutput></screen>
    308 -->
     304
    309305  <para>Next make sure that we're using the correct libc:</para>
    310306
     
    322318  platform-specific differences in dynamic linker name):</para>
    323319
    324 <screen><computeroutput>found ld-linux-aarch64.so.1 at /usr/lib/ld-linux-aarch64.so.1</computeroutput></screen>
     320<screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen>
    325321
    326322  <para>If the output does not appear as shown above or is not received
  • chapter08/glibc.xml

    r328eb6f r23f4367  
    574574
    575575    <para>By default, the dynamic loader (<filename
    576     class="libraryfile">/lib/ld-linux-aarch64.so.1</filename>) searches through
     576    class="libraryfile">/lib/ld-linux.so.2</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-aarch64[_be].so.1),
     624        ld.so (symlink to ld-linux-x86-64.so.2 or ld-linux.so.2),
    625625        locale, localedef, makedb, mtrace,
    626626        pcprofiledump, pldd, sln, sotruss, sprof, tzselect, xtrace,
    627627        zdump, and zic</seg>
    628         <seg>ld-linux-aarch64[_be].so.1,
     628        <seg>ld-linux-x86-64.so.2, ld-linux.so.2,
    629629        libBrokenLocale.{a,so}, libanl.{a,so},
    630630        libc.{a,so}, libc_nonshared.a, libc_malloc_debug.so,
  • chapter08/gmp.xml

    r328eb6f r23f4367  
    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>
    4352
    4453    <note>
  • chapter08/grub.xml

    r328eb6f r23f4367  
    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>
    5545        If your system has UEFI support and you wish to boot LFS with UEFI,
    5646        you can skip this package in LFS,
    5747        and install GRUB with UEFI support (and its dependencies) by following
    5848        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>.
    6150      </para>
    6251    </note>
  • chapter08/kbd.xml

    r328eb6f r23f4367  
    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>
    5547
    5648<screen><userinput remap="pre">patch -Np1 -i ../&kbd-backspace-patch;</userinput></screen>
  • chapter08/libcap.xml

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

    r328eb6f r23f4367  
    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/AArch64-Options.html'>
    80           the AArch64 options 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>
    8181        </listitem>
    8282      </varlistentry>
  • chapter08/stripping.xml

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

    r328eb6f r23f4367  
    139139        eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck,
    140140        fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, hexdump, hwclock,
    141         ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,
     141        i386 (link to setarch), 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, and zramctl</seg>
     150        wall, wdctl, whereis, wipefs, x86_64 (link to setarch), 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
    533543      <varlistentry id="ionice">
    534544        <term><command>ionice</command></term>
     
    12821292      </varlistentry>
    12831293
     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
    12841304      <varlistentry id="zramctl">
    12851305        <term><command>zramctl</command></term>
  • chapter10/grub.xml

    r328eb6f r23f4367  
    1919  <note>
    2020    <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 the instructions in this page but still learn the
     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
    2723      syntax of <filename>grub.cfg</filename> and the method to specify
    2824      a partition in the file from this page, and configure GRUB with UEFI
    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.
     25      support using the instructions provided in
     26      <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.
    3827    </para>
    3928  </note>
     
    4837    LILO.</para></warning>
    4938
    50     <para>Ensure that an emergency boot disk is ready to <quote>rescue</quote>
     39    <para> Ensure that an emergency boot disk is ready to <quote>rescue</quote>
    5140    the computer if the computer becomes unusable (un-bootable).  If you do not
    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>
     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
     48grub-mkrescue --output=grub-img.iso
     49xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen>
     50
    6751  </sect2>
    6852
     
    9074    <title>Setting Up the Configuration</title>
    9175
    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>
     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>
    11780
    11881    <para>The location of the boot partition is a choice of the user that
     
    139102
    140103    <para>Install the GRUB files into <filename
    141     class="directory">/boot/grub</filename> and the GRUB EFI executable into
    142         <filename class="directory">/boot/efi/EFI/BOOT/BOOTAA64.EFI</filename>:</para>
     104    class="directory">/boot/grub</filename> and set up the boot track:</para>
    143105
    144106    <warning>
    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>
     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>
    150110    </warning>
    151111
    152 <screen role="nodump"><userinput>grub-install --removable</userinput></screen>
     112<screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>
    153113
    154114    <note>
    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>
     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>
    191121    </note>
    192122
     
    206136insmod ext2
    207137set root=(hd0,2)
    208 
    209 insmod all_video
    210138
    211139menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
  • chapter10/kernel.xml

    r328eb6f r23f4367  
    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"/>
    143160
    144161      <para>If the partition for the LFS system is in a NVME SSD (i. e. the
     
    257274
    258275      <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>
    268276        <term>
    269277          <parameter>
     
    278286          enabled, you should enable these two options as well or you'll see
    279287          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>
    280300        </listitem>
    281301      </varlistentry>
     
    336356    the filename should be <emphasis>vmlinuz</emphasis> to be compatible with
    337357    the automatic setup of the boot process described in the next section.  The
    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>
     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>
    342361
    343362    <para><filename>System.map</filename> is a symbol file for the kernel.
  • chapter10/kernel/kernel-config.py

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

    r328eb6f r23f4367  
    1616  [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt;            [EXPERT]
    1717
    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]
     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]
    2121
    2222<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
  • chapter10/kernel/sysv.xml

    r328eb6f r23f4367  
    1515  [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt;            [EXPERT]
    1616
    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]
     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]
    2020
    2121<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
  • git-version.sh

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

    r328eb6f r23f4367  
    1111  <title>LFS Target Architectures</title>
    1212
    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)
     14and x86_64 (64-bit) CPUs.  On the other hand, the instructions in this book are
     15also known to work, with some modifications, with the Power PC and ARM CPUs. To
     16build a system that utilizes one of these alternative CPUs, the main prerequisite, in
     17addition to those on the next page, is an existing Linux system such as an
     18earlier LFS installation, Ubuntu, Red Hat/Fedora, SuSE, or some other distribution
     19that targets that architecture. (Note that a 32-bit
     20distribution can be installed and used as a host system on a 64-bit AMD/Intel
     21computer.)</para>
    2122
    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
     24compared to a 32-bit system, is minimal.
     25For example, in a test build of LFS-9.1 on a Core i7-4790 CPU based system,
     26using 4 cores, the following statistics were measured:</para>
     27
     28<screen><computeroutput>Architecture Build Time     Build Size
     2932-bit       239.9 minutes  3.6 GB
     3064-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
     34server, or a firewall, a 32-bit CPU may be good enough. On the other
     35hand, several packages in BLFS now need more than 4 GB of RAM to be built
     36and/or to run; if you plan to use LFS as a desktop, the LFS authors
     37recommend 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
     41only. Building a <quote>multi-lib</quote> system requires compiling many
    2542applications twice, once for a 32-bit system and once for a 64-bit system.
    2643This is not directly supported in LFS because it would interfere with the
    2744educational objective of providing the minimal instructions needed for a
    28 base Linux system. Some LFS/BLFS editors maintain a multilib fork
     45basic Linux system. Some of the LFS/BLFS editors maintain a multilib fork
    2946of LFS, accessible at <ulink
    3047url="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>
     48that's an advanced topic.</para>
    3349
    3450</sect1>
  • prologue/standards.xml

    r328eb6f r23f4367  
    3636        specifications are architecture specific.  There are also two trial
    3737        specifications: Gtk3 and Graphics.  LFS attempts to conform to the LSB
    38         generic specifications.  The architecture specific part of LSB does
    39         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>
    4040
    4141        <note><para>Many people do not agree with these requirements.
Note: See TracChangeset for help on using the changeset viewer.