Changes in / [079ced7:1ff846e2]


Ignore:
Files:
4 deleted
32 edited

Legend:

Unmodified
Added
Removed
  • chapter02/hostreqs.xml

    r079ced7 r1ff846e2  
    4646
    4747    <listitem>
    48       <para><emphasis role="strong">Binutils-2.13.1</emphasis> (Versions
     48      <para><emphasis role="strong">Binutils-2.38</emphasis> (Versions
    4949      greater than &binutils-version; are not recommended as they have
    5050      not been tested)</para>
     
    7575
    7676    <listitem>
    77       <!-- Pass 1 GCC FTBFS with GCC-5.1 because of
    78            https://gcc.gnu.org/PR65801. -->
    79       <para><emphasis role="strong">GCC-5.2</emphasis> including the C++
     77      <para><emphasis role="strong">GCC-12.2</emphasis> including the C++
    8078      compiler, <command>g++</command> (Versions greater than &gcc-version; are
    8179      not recommended as they have not been tested). C and C++ standard
     
    9896      that version when building <application>glibc</application> in
    9997      <xref linkend="chapter-cross-tools"/> and
    100       <xref linkend="chapter-building-system"/>, so the workarounds for
    101       older kernels are not enabled and the compiled
    102       <application>glibc</application> is slightly faster and smaller.
    103       As at Feb 2024, &min-kernel; is the oldest kernel release still
    104       supported by the kernel developers.  Some kernel releases older than
    105       &min-kernel; may be still supported by third-party teams, but they
    106       are not considered official upstream kernel releases; read
    107       <ulink url='https://kernel.org/category/releases.html'/> for the
    108       details.</para>
    109 
    110       <para>If the host kernel is earlier than &min-kernel; you will need to replace
    111       the kernel with a more up-to-date version. There are two ways
    112       you can go about this. First, see if your Linux vendor provides a &min-kernel;
    113       or later kernel package. If so, you may wish to install it. If your
    114       vendor doesn't offer an acceptable kernel package, or you would prefer not to
    115       install it, you can compile a kernel yourself. Instructions for
    116       compiling the kernel and configuring the boot loader (assuming the host
    117       uses GRUB) are located in <xref linkend="chapter-bootable"/>.</para>
     98      <xref linkend="chapter-building-system"/>, and
     99      &min-kernel; is the oldest kernel release supported by Glibc for
     100      LoongArch.</para>
     101
     102      <important>
     103        <para>
     104          If a Linux distribution on LoongArch provides a kernel older than
     105          &min-kernel;, it indicates the distribution is using a preliminary
     106          version of the kernel ABI.  The preliminary draft was rejected by
     107          the kernel maintainers and it's fundamentally incompatible with
     108          the packages we will built for LFS.  Such <quote>old-world</quote>
     109          distributions (for example, Loongnix) cannot be used as a host
     110          distro for building LFS.
     111        </para>
     112
     113        <para>
     114          Do not attempt to update the kernel to &min-kernel; or later on
     115          a old-world distro because doing so will cause a boot failure.
     116          Use a <quote>new-world</quote> distribution providing Linux Kernel
     117          &min-kernel; or newer instead.  You may need to contact the vendor
     118          of your hardware to get a firmware update for booting a new-world
     119          distribution because the boot protocol of LoongArch is stabilized
     120          after the launch of the early LoongArch hardwares.
     121        </para>
     122      </important>
    118123
    119124      <para>We require the host kernel to support UNIX 98 pseudo terminal
     
    228233ver_check Coreutils      sort     8.1 || bail "Coreutils too old, stop"
    229234ver_check Bash           bash     3.2
    230 ver_check Binutils       ld       2.13.1
     235ver_check Binutils       ld       2.38
    231236ver_check Bison          bison    2.7
    232237ver_check Diffutils      diff     2.8.1
    233238ver_check Findutils      find     4.2.31
    234239ver_check Gawk           gawk     4.0.1
    235 ver_check GCC            gcc      5.2
    236 ver_check "GCC (C++)"    g++      5.2
     240ver_check GCC            gcc      12.2
     241ver_check "GCC (C++)"    g++      12.2
    237242ver_check Grep           grep     2.5.1a
    238243ver_check Gzip           gzip     1.3.12
  • chapter04/addinguser.xml

    r079ced7 r1ff846e2  
    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,lib64,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

    r079ced7 r1ff846e2  
    2222  <systemitem class="username">root</systemitem>:</para>
    2323
    24 <screen><userinput>mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
     24<screen><userinput>mkdir -pv $LFS/{etc,lib64,var} $LFS/usr/{bin,lib,sbin}
    2525
    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

    r079ced7 r1ff846e2  
    6363mv -v mpc-&mpc-version; mpc</userinput></screen>
    6464
    65     <para>On x86_64 hosts, set the default directory name for
     65    <para>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 's/lib64/lib/' \
     69    -i.orig gcc/config/loongarch/{t-linux,linux.h}</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 LoongArch, LFS does not support a multilib configuration.</para>
    164159        </listitem>
    165160      </varlistentry>
  • chapter05/glibc.xml

    r079ced7 r1ff846e2  
    4444    <title>Installation of Glibc</title>
    4545
    46     <para>First, create a symbolic link for LSB compliance. Additionally,
    47     for x86_64, create a compatibility symbolic link required for proper
     46    <para>Create a compatibility symbolic link required for proper
    4847    operation of the dynamic library loader:</para>
    4948
    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>
     49<screen><userinput remap="pre">ln -sfv ../lib/ld-linux-loongarch-lp64d.so.1 $LFS/lib64</userinput></screen>
    5750
    5851    <note>
     
    212205      and the output of the last command will be of the form:</para>
    213206
    214 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
    215 
     207<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-loongarch-lp64d.so.1]</computeroutput></screen>
     208<!--
    216209      <para>Note that for 32-bit machines, the interpreter name will be
    217210      <filename>/lib/ld-linux.so.2</filename>.</para>
    218 
     211-->
    219212      <para>If the output is not as shown above, or there is no output at all,
    220213      then something is wrong. Investigate and retrace the steps to find out
  • chapter06/gcc-pass2.xml

    r079ced7 r1ff846e2  
    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>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 's/lib64/lib/' \
     64    -i.orig gcc/config/loongarch/{t-linux,linux.h}</userinput></screen>
    6965
    7066    <para>Override the building rule of libgcc and libstdc++ headers, to
  • chapter06/m4.xml

    r079ced7 r1ff846e2  
    5353<screen><userinput remap="configure">./configure --prefix=/usr   \
    5454            --host=$LFS_TGT \
    55             --build=$(build-aux/config.guess)</userinput></screen>
     55            --build=$(build-aux/config.guess) \
     56            sv_cv_stack_direction=-1          \
     57            sv_cv_stack_direction_msg="grows down"</userinput></screen>
    5658
    5759    <para>Compile the package:</para>
  • chapter06/patch.xml

    r079ced7 r1ff846e2  
    4444    <title>Installation of Patch</title>
    4545
     46    &update-config-text;
     47
     48<screen><userinput remap="pre">tar -C build-aux &update-config-arg;</userinput></screen>
     49
    4650    <para>Prepare Patch for compilation:</para>
    4751
  • chapter07/changingowner.xml

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

    r079ced7 r1ff846e2  
    4242    <title>Installation of Binutils</title>
    4343
     44    <!-- https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=029e52bac7f3a6dd8b39f7f3d298b73174da806b -->
     45    <para>First, fix an issue causing some packages fail to build with
     46    Link Time Optimization (LTO).  Note that some BLFS packages will be
     47    built with LTO enabled by default even if you don't enable it
     48    explicitly:</para>
     49
     50<screen><userinput remap="pre">for i in LO12 HI20 ADD; do
     51  sed -e '/DESC64_HI12/a\    case BFD_RELOC_LARCH_TLS_LE_'${i}'_R:' \
     52      -i gas/config/tc-loongarch.c
     53done</userinput></screen>
     54
    4455    <para>The Binutils documentation recommends building Binutils
    4556    in a dedicated build directory:</para>
     
    5263<screen><userinput remap="configure">../configure --prefix=/usr       \
    5364             --sysconfdir=/etc   \
    54              --enable-gold       \
    5565             --enable-ld=default \
    5666             --enable-plugins    \
     
    6676
    6777      <varlistentry>
    68         <term><parameter>--enable-gold</parameter></term>
    69         <listitem>
    70           <para>Build the gold linker and install it as ld.gold (alongside the
    71           default linker).</para>
    72         </listitem>
    73       </varlistentry>
    74 
    75       <varlistentry>
    7678        <term><parameter>--enable-ld=default</parameter></term>
    7779        <listitem>
     
    111113          ultimately be located) is set to <filename
    112114          class="directory">$(exec_prefix)/$(target_alias)</filename>. For
    113           example, x86_64 machines would expand that to <filename
    114           class="directory">/usr/x86_64-pc-linux-gnu</filename>. Because this is
     115          example, 64-bit LoongArch machines would expand that to <filename
     116          class="directory">/usr/loongarch64-unknown-linux-gnu</filename>. Because this is
    115117          a custom system, this target-specific directory in <filename
    116118          class="directory">/usr</filename> is not required. <filename
     
    137139<screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen>
    138140
    139     <para>Twelve tests fail in the gold test suite when the
    140     <option>--enable-default-pie</option> and
    141     <option>--enable-default-ssp</option> options are passed to GCC.</para>
    142 
    143141 <!--    <para>Three tests in the gprofng suite are also known to fail.</para>-->
    144142
     
    162160
    163161      <seglistitem>
    164         <seg>addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, ld.gold, nm,
     162        <seg>addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, nm,
    165163        objcopy, objdump, ranlib, readelf, size, strings, and strip</seg>
    166164        <seg>libbfd.so, libctf.so, libctf-nobfd.so, libgprofng.so,
     
    268266          <indexterm zone="ch-system-binutils ld">
    269267            <primary sortas="b-ld">ld</primary>
    270           </indexterm>
    271         </listitem>
    272       </varlistentry>
    273 
    274       <varlistentry id="ld.gold">
    275         <term><command>ld.gold</command></term>
    276         <listitem>
    277           <para>A cut down version of ld that only supports the
    278           elf object file format</para>
    279           <indexterm zone="ch-system-binutils ld.gold">
    280             <primary sortas="b-ld.gold">ld.gold</primary>
    281268          </indexterm>
    282269        </listitem>
  • chapter08/check.xml

    r079ced7 r1ff846e2  
    4040  <sect2 role="installation">
    4141    <title>Installation of Check</title>
     42
     43    &update-config-text;
     44
     45<screen><userinput remap="pre">tar &update-config-arg;</userinput></screen>
    4246
    4347    <para>Prepare Check for compilation:</para>
  • chapter08/expect.xml

    r079ced7 r1ff846e2  
    6767    GDBM, and of course Expect itself) will fail catastrophically, and other
    6868    subtle breakages may also happen.</para>
     69
     70    &update-config-text;
     71
     72<screen><userinput remap="pre">tar -C tclconfig &update-config-arg;</userinput></screen>
    6973
    7074    <para>Now, make some changes to allow the package with gcc-14.1 or later:</para>
  • chapter08/flex.xml

    r079ced7 r1ff846e2  
    5151    This is not present, so we use an environment variable to skip this process.
    5252    Now, prepare Flex for compilation:</para> -->
     53
     54    &update-config-text;
     55
     56<screen><userinput remap="pre">tar -C build-aux &update-config-arg;</userinput></screen>
    5357
    5458    <para>Prepare Flex for compilation:</para>
  • chapter08/gcc.xml

    r079ced7 r1ff846e2  
    4242    <title>Installation of GCC</title>
    4343
    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>Set the default directory name for
     45    64-bit libraries to <quote>lib</quote>:</para>
     46
     47<screen><userinput remap="pre">sed -e 's/lib64/lib/' \
     48    -i.orig gcc/config/loongarch/{t-linux,linux.h}</userinput></screen>
    5349
    5450    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
     
    147143    <para>Now remove/fix several known test failures:</para>
    148144
    149 <screen><userinput remap="test">sed -e '/cpython/d'               -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
    150 sed -e 's/no-pic /&amp;-no-pie /'     -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c
    151 sed -e 's/300000/(1|300000)/'     -i ../libgomp/testsuite/libgomp.c-c++-common/pr109062.c
    152 sed -e 's/{ target nonpic } //' \
    153     -e '/GOTPCREL/d'              -i ../gcc/testsuite/gcc.target/i386/fentryname3.c</userinput></screen>
     145<screen><userinput remap="test">sed -e '/cpython/d'               -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp</userinput></screen>
    154146
    155147    <para>Test the results as a non-privileged user, but do not stop at errors:</para>
     
    188180    if the hardware does not support AVX.</para>
    189181-->
     182
     183    <!-- gen-vect-*: Likely https://gcc.gnu.org/PR113418
     184         pr108357.c: https://gcc.gnu.org/PR108357#c5
     185         update-threading.c: https://gcc.gnu.org/PR110628
     186         vect-117.c: https://gcc.gnu.org/PR113685
     187         pr64076: Binutils bug (ld crashes), needs a triage -->
     188    <para>The tests named
     189    <filename>gen-vect-11b.c</filename>,
     190    <filename>gen-vect-11c.c</filename>,
     191    <filename>gen-vect-26.c</filename>,
     192    <filename>gen-vect-28.c</filename>,
     193    <filename>pr64076</filename>,
     194    <filename>pr108357.c</filename>,
     195    <filename>update-threading.c</filename>,
     196    and <filename>vect-117.c</filename> are known to fail.</para>
     197
    190198    <para>A few unexpected failures cannot always be avoided. In some cases
    191199    test failures depend on the specific hardware of the system.<!--The GCC developers
     
    237245  platform-specific differences in the dynamic linker name):</para>
    238246
    239 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
     247<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-loongarch-lp64d.so.1]</computeroutput></screen>
    240248
    241249  <para>Now make sure that we're set up to use the correct start files:</para>
     
    245253  <para>The output of the last command should be:</para>
    246254
    247 <screen><computeroutput>/usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded
    248 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded
    249 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>
     255<screen><computeroutput>/usr/lib/gcc/loongarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded
     256/usr/lib/gcc/loongarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded
     257/usr/lib/gcc/loongarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>
    250258
    251259  <para>Depending on your machine architecture, the above may differ slightly.
     
    264272
    265273<screen><computeroutput>#include &lt;...&gt; search starts here:
    266  /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include
     274 /usr/lib/gcc/loongarch64-unknown-linux-gnu/&gcc-version;/include
    267275 /usr/local/include
    268  /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include-fixed
     276 /usr/lib/gcc/loongarch64-unknown-linux-gnu/&gcc-version;/include-fixed
    269277 /usr/include</computeroutput></screen>
    270278
     
    279287  be ignored, but otherwise the output of the last command should be:</para>
    280288
    281 <screen><computeroutput>SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
     289<screen><computeroutput>SEARCH_DIR("/usr/loongarch64-unknown-linux-gnu/lib64")
    282290SEARCH_DIR("/usr/local/lib64")
    283291SEARCH_DIR("/lib64")
    284292SEARCH_DIR("/usr/lib64")
    285 SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
     293SEARCH_DIR("/usr/loongarch64-unknown-linux-gnu/lib")
    286294SEARCH_DIR("/usr/local/lib")
    287295SEARCH_DIR("/lib")
    288296SEARCH_DIR("/usr/lib");</computeroutput></screen>
    289 
     297<!--
    290298   <para>A 32-bit system may use a few other directories. For example, here
    291299   is the output from an i686 machine:</para>
     
    299307SEARCH_DIR("/lib")
    300308SEARCH_DIR("/usr/lib");</computeroutput></screen>
    301 
     309-->
    302310  <para>Next make sure that we're using the correct libc:</para>
    303311
     
    315323  platform-specific differences in dynamic linker name):</para>
    316324
    317 <screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen>
     325<screen><computeroutput>found ld-linux-loongarch-lp64d.so.1 at /usr/lib/ld-linux-loongarch-lp64d.so.1</computeroutput></screen>
    318326
    319327  <para>If the output does not appear as shown above or is not received
  • chapter08/grub.xml

    r079ced7 r1ff846e2  
    4343    <note>
    4444      <para>
    45         If your system has UEFI support and you wish to boot LFS with UEFI,
    46         you need to install GRUB with UEFI support (and its dependencies) by
    47         following the instructions on
    48         <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink>.
    49         You may skip this package, or install this package and the BLFS
    50         GRUB for UEFI package without conflict (the BLFS page provides
    51         instructions for both cases).
     45        On LoongArch systems, the following instruction builds GRUB for UEFI.
     46        But because LFS lacks the FreeType package and the Unifont data
     47        file, GRUB won't install any font for the boot loader and
     48        the GRUB boot menu will be displayed using a coarse font or in a
     49        smaller region on the screen.
     50        If wanted, after the LFS system is finished, install
     51        <ulink url="&blfs-book;general/freetype.html">FreeType</ulink>
     52        and then install the GRUB compoents not installed from LFS following
     53        <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS
     54        instruction</ulink>, but remove the <option>--target=x86_64</option>
     55        option and skip the command to install the
     56        <filename class='directory'>/usr/lib/grub/x86_64-efi</filename>
     57        directory.
     58      </para>
     59      <para>
     60        If your system firmware does not support UEFI, you need to skip the
     61        content of this page and try to figure out how to boot your system.
    5262      </para>
    5363    </note>
  • chapter08/libcap.xml

    r079ced7 r1ff846e2  
    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 64-bit LoongArch.</para>
    6463        </listitem>
    6564      </varlistentry>
  • chapter08/libffi.xml

    r079ced7 r1ff846e2  
    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/LoongArch-Options.html'>
     80          the LoongArch options in the GCC manual</ulink>.</para>
    8181        </listitem>
    8282      </varlistentry>
  • chapter08/patch.xml

    r079ced7 r1ff846e2  
    4242  <sect2 role="installation">
    4343    <title>Installation of Patch</title>
     44
     45    &update-config-text;
     46
     47<screen><userinput remap="pre">tar -C build-aux &update-config-arg;</userinput></screen>
    4448
    4549    <para>Prepare Patch for compilation:</para>
  • chapter08/python.xml

    r079ced7 r1ff846e2  
    9090    automatically re-run failed tests.  If a test failed but then passed
    9191    when re-run, it should be considered as passed.</para>
     92
     93    <!-- https://github.com/python/cpython/pull/120227
     94         The typical page size of LoongArch Linux is 16 KiB so this issu
     95         can be triggered.  -->
     96    <para>One test named <literal>test.test_asyncio.test_sendfile</literal>
     97    is known to fail depending on the version and configuration of the host
     98    kernel.</para>
    9299
    93100    <para>Install the package:</para>
  • chapter08/stripping.xml

    r079ced7 r1ff846e2  
    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 may vary on different systems.
     53  The construct below selects the
    5454  correct name for the current architecture, excluding anything ending
    5555  with <literal>g</literal>, in case the commands below have already been
  • chapter08/udev.xml

    r079ced7 r1ff846e2  
    6666cd       build
    6767
     68CFLAGS+=" -Wno-format-overflow" \
    6869meson setup ..                  \
    6970      --prefix=/usr             \
  • chapter08/util-linux.xml

    r079ced7 r1ff846e2  
    122122       does not have the option <option>CONFIG_CRYPTO_USER_API_HASH</option>
    123123       enabled or does not have any options providing a SHA256 implementation
    124        (for example, <option>CONFIG_CRYPTO_SHA256</option>, or
    125        <option>CONFIG_CRYPTO_SHA256_SSSE3</option> if the CPU supports
    126        Supplemental SSE3) enabled. In addition, the lsfd: inotify test will
     124       (for example, <option>CONFIG_CRYPTO_SHA256</option>)
     125       enabled. In addition, the lsfd: inotify test will
    127126       fail if the kernel option <option>CONFIG_NETLINK_DIAG</option> is not
    128127       enabled.
     
    152151        eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck,
    153152        fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, hexdump, hwclock,
    154         i386 (link to setarch), ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,
     153        ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,
    155154        lastb (link to last), ldattach, linux32 (link to setarch), linux64 (link to setarch),
    156155        logger, look, losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, lslogins,
     
    161160        swapoff, swapon, switch_root, taskset, uclampset, ul,
    162161        umount, uname26 (link to setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse,
    163         wall, wdctl, whereis, wipefs, x86_64 (link to setarch), and zramctl</seg>
     162        wall, wdctl, whereis, wipefs, and zramctl</seg>
    164163        <seg>libblkid.so, libfdisk.so, libmount.so,
    165164        libsmartcols.so, and libuuid.so</seg>
     
    544543      </varlistentry>
    545544
    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 
    556545      <varlistentry id="ionice">
    557546        <term><command>ionice</command></term>
     
    13051294      </varlistentry>
    13061295
    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 
    13171296      <varlistentry id="zramctl">
    13181297        <term><command>zramctl</command></term>
  • chapter10/grub.xml

    r079ced7 r1ff846e2  
    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
    23       syntax of <filename>grub.cfg</filename> and the method to specify
    24       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>.
     21      This section assume your system has UEFI support and you wish to boot
     22      LFS with UEFI.
     23      If your system does not support UEFI or you don't want to use it,
     24      you'll need to figure out how to configure the booting process of
     25      the system on your own.
    2726    </para>
    2827  </note>
     
    3736    LILO.</para></warning>
    3837
    39     <para> Ensure that an emergency boot disk is ready to <quote>rescue</quote>
     38    <para>Ensure that an emergency boot disk is ready to <quote>rescue</quote>
    4039    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 
     40    already have a boot device, you can create one.  To create a emergency
     41    boot device for UEFI, consult section <quote>Create an Emergency Boot
     42    Disk</quote> in
     43        <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.</para>
     44
     45  </sect2>
     46
     47  <sect2>
     48    <title>Turn off Secure Boot</title>
     49
     50    <para>LFS does not have the essential packages to support Secure Boot.
     51    To set up the boot process following the instructions in this section,
     52    Secure Boot must be turned off from the configuration interface of the
     53    firmware. Read the documentation provided by the manufacturer of your
     54    system to find out how.</para>
    5155  </sect2>
    5256
     
    7478    <title>Setting Up the Configuration</title>
    7579
    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>
     80    <para>GRUB works by creating an EFI executable in the EFI System
     81    Partition (ESP).  You can find the ESP with:</para>
     82
     83<screen role="nodump"><userinput>fdisk -l | grep 'EFI System'</userinput></screen>
     84
     85    <para>If no ESP exists on your hard drive (for example, you are building
     86    LFS on a fresh new system with a Live CD as the host distro), read
     87    <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>
     88    for the instruction to create an ESP on your hard drive.</para>
     89
     90    <para>If the ESP is not mounted at
     91    <filename class="directory">/boot/efi</filename> (in the chroot),
     92    mount it now:</para>
     93
     94<screen role="nodump"><userinput>mkdir -pv /boot/efi
     95mount /boot/efi</userinput></screen>
     96
     97    <note>
     98      <para>The path to the device node is intentionally omitted in the
     99      command.  We expect the entry for mounting the ESP to
     100      <filename class="directory">/boot/efi</filename> is already in
     101      <filename>/etc/fstab</filename>.  Add the entry before running the
     102      command if you forgot to create an entry for the ESP in
     103      <xref linkend="ch-bootable-fstab"/>.</para>
     104    </note>
    80105
    81106    <para>The location of the boot partition is a choice of the user that
     
    102127
    103128    <para>Install the GRUB files into <filename
    104     class="directory">/boot/grub</filename> and set up the boot track:</para>
     129    class="directory">/boot/grub</filename> and the GRUB EFI executable into
     130    <filename>/boot/efi/EFI/BOOT/BOOTLOONGARCH64.EFI</filename>:</para>
    105131
    106132    <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>
     133      <para>The following command will overwrite
     134      <filename>BOOTLOONGARCH64.EFI</filename>. Do not run the command if
     135      this is not desired, for example, if it contains a third party boot
     136      manager.  You can backup it with <command>cp</command> as it's a
     137      regular file.</para>
    110138    </warning>
    111139
    112 <screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen>
     140<screen role="nodump"><userinput>grub-install --removable</userinput></screen>
    113141
    114142    <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>
     143      <para>
     144        <parameter>--removable</parameter> may seem strange here.  The UEFI
     145        firmware searches EFI executables for boot loaders in a hardcoded
     146        path, <filename>EFI/BOOT/BOOTLOONGARCH64.EFI</filename> in the ESP, and other
     147        boot loader paths listed in the EFI variables.  We've not installed
     148        the utilities for manipulating EFI variables so we need to install
     149        the EFI executable into the hardcoded path.  The hardcoded path is
     150        usually used by removable devices (for example, USB thumb devices)
     151        so the <command>grub-install</command> option for this purpose is
     152        named <parameter>--removable</parameter>.
     153      </para>
     154      <para>
     155        UEFI implementation usually prefers the boot loaders with paths
     156        recorded in an EFI variable, to the boot loader with the hardcoded
     157        search path.  You may need to invoke the boot device selection menu
     158        or setting interface of your EFI firmware on next boot to explicitly
     159        select the bootloader.
     160      </para>
     161      <para>
     162        Some UEFI implementation may completely skip the hardcoded path if
     163        there are other boot loaders in the same hard drive with paths
     164        recorded in an EFI variable.  Then you need to create an EFI
     165        variable for the newly installed boot loader.  Install
     166        <ulink url="&blfs-book;postlfs/efibootmgr.html">efibootmgr</ulink>,
     167        and follow
     168        <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS
     169        instruction</ulink> to run the <command>grub-install</command>
     170        command without the <parameter>--removable</parameter> option then.
     171      </para>
    121172    </note>
    122173
     
    136187insmod ext2
    137188set root=(hd0,2)
     189
     190insmod all_video
    138191
    139192menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
  • chapter10/kernel.xml

    r079ced7 r1ff846e2  
    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 a LoongArch platform with an EFI boot loader
     339    (for example, GRUB built in &ch-final;):</para>
     340
     341<screen><userinput remap="install">cp -iv arch/loongarch/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

    r079ced7 r1ff846e2  
    2424if_stack = []
    2525
    26 expand_var_mp = { 'SRCARCH': 'x86' }
     26expand_var_mp = { 'SRCARCH': 'loongarch' }
    2727main_dep = {}
    2828
     
    171171            if line.startswith('source') or line.startswith('\tsource'):
    172172                sub = expand_var(line.strip().split()[1].strip('"'))
     173                # Ugly.  TODO: remove once this is resolved in kernel.
     174                if file[:4] == 'arch' and sub == 'drivers/firmware/Kconfig':
     175                    continue
    173176                r += load_kconfig(sub)
    174177            elif line.startswith('config') or line.startswith('menu'):
  • chapter10/kernel/systemd.xml

    r079ced7 r1ff846e2  
    1818  [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt;            [EXPERT]
    1919
    20 <emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
    21   [*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel                                   [RELOCATABLE]
    22   [*]   <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
     20<emphasis role='blue'>K</emphasis>ernel type and options ---&gt;
     21  [*] <emphasis role='blue'>R</emphasis>elocatable kernel                                           [RELOCATABLE]
     22  [*]   <emphasis role='blue'>R</emphasis>andomize the address of the kernel (KASLR)             [RANDOMIZE_BASE]
    2323
    2424<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
  • chapter10/kernel/sysv.toml

    r079ced7 r1ff846e2  
    1515DRM=' *M'
    1616
     17EFI_ZBOOT='*'
     18
    1719revision='sysv'
    1820
  • chapter10/kernel/sysv.xml

    r079ced7 r1ff846e2  
    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 type and options ---&gt;
     18  [*] <emphasis role='blue'>R</emphasis>elocatable kernel                                           [RELOCATABLE]
     19  [*]   <emphasis role='blue'>R</emphasis>andomize the address of the kernel (KASLR)             [RANDOMIZE_BASE]
    2020
    2121<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
     
    2929    [*]   <emphasis role='blue'>A</emphasis>utomount devtmpfs at /dev, after the kernel mounted the rootfs
    3030                                                           ...  [DEVTMPFS_MOUNT]
     31  <emphasis role='blue'>F</emphasis>irmware Drivers ---&gt;
     32    <emphasis role='blue'>E</emphasis>FI (Extensible Firmware Interface) Support ---&gt;
     33      [*] <emphasis role='blue'>E</emphasis>nable the generic EFI decompressor                        [EFI_ZBOOT]
    3134  <emphasis role='blue'>G</emphasis>raphics support ---&gt;
    3235    &lt; /*/M&gt; <emphasis role='blue'>D</emphasis>irect Rendering Manager (XFree86 4.1.0 and higher DRI support) ---&gt;
  • general.ent

    r079ced7 r1ff846e2  
    9393<!ENTITY secadv          "&lfs-root;lfs/advisories/">
    9494
    95 <!-- 4.19 EOL is Dec 2024
    96      so for LFS 12.3 we may consider moving to 5.4 -->
    97 <!ENTITY min-kernel      "4.19">
     95<!ENTITY min-kernel      "5.19">
    9896
    9997<!--
     
    142140<!ENTITY % patches-entities SYSTEM "patches.ent">
    143141%patches-entities;
     142
     143<!ENTITY update-config-text
     144  "<para>Update the auxilary scripts of the building system to allow
     145   building this package for LoongArch:</para>">
     146
     147<!-- Use "tar &update-config-arg" or "tar -C build-aux update-config-arg"
     148     We cannot append -C build-aux after these arguments because -C only
     149     affects options that follow.  -->
     150<!ENTITY update-config-arg
     151  "-xvf ../autoconf-&autoconf-version;.tar.xz --strip-components=2 \
     152    autoconf-&autoconf-version;/build-aux/config.{guess,sub}">
  • git-version.sh

    r079ced7 r1ff846e2  
    5252full_date="$month $day$suffix, $year"
    5353
    54 sha="$(git describe --abbrev=1)"
    55 rev=$(echo "$sha" | sed 's/-g[^-]*$//')
     54sha="$(git describe --abbrev=1 --match='xry111/loongarch-r*')"
     55rev=$(echo "$sha" | sed 's/-g[^-]*$//; s|^xry111/||')
    5656version="$rev"
    5757versiond="$rev-systemd"
  • prologue/architecture.xml

    r079ced7 r1ff846e2  
    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
     13<para>The primary target architectures of this LFS edition are LoongArch
     14CPUs.
     15<!--On the other hand, the instructions in this book are
     16also known to work, with some modifications, with the Power PC and ARM
     17CPUs. -->
     18To build a system that utilizes one of these CPUs, the main prerequisite, in
    1719addition 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>
     20earlier LFS installation, Loong Arch Linux, CLFS for LoongArch, Gentoo,
     21Slackware, or other distribution that targets LoongArch.</para>
    2222
    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
     23<para>The build that results from this LFS edition is a
     24<quote>pure</quote> lp64d system. That is, it supports executables with
     25the lp64d ABI
    4126only. Building a <quote>multi-lib</quote> system requires compiling many
    42 applications twice, once for a 32-bit system and once for a 64-bit system.
     27applications multiple times, once for each ABI to be supported.
    4328This is not directly supported in LFS because it would interfere with the
    4429educational objective of providing the minimal instructions needed for a
     
    4631of LFS, accessible at <ulink
    4732url="https://www.linuxfromscratch.org/~thomas/multilib/index.html"/>. But
    48 that's an advanced topic.</para>
     33the multilib edition is for x86_64, and multilib is an advanced topic
     34anyway.</para>
    4935
    5036</sect1>
  • prologue/bookinfo.xml

    r079ced7 r1ff846e2  
    5050    Linus Torvalds.</para>
    5151
     52    <para><trademark class='registered'>LoongArch</trademark> is a
     53    registered trademark of Loongson Technology Co., Ltd.</para>
    5254  </legalnotice>
    5355
Note: See TracChangeset for help on using the changeset viewer.