Changes in / [2c5dbc3:fdc96d4]
- Files:
-
- 4 added
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter01/whatsnew.xml
r2c5dbc3 rfdc96d4 314 314 315 315 <listitem> 316 <para>elfutils-0.189-loongarch-3.patch</para>317 </listitem>318 319 <listitem>320 316 <para>glibc-2.38-memalign_fix-1.patch</para> 321 317 </listitem> -
chapter02/hostreqs.xml
r2c5dbc3 rfdc96d4 46 46 47 47 <listitem> 48 <para><emphasis role="strong">Binutils-2. 38</emphasis> (Versions48 <para><emphasis role="strong">Binutils-2.13.1</emphasis> (Versions 49 49 greater than &binutils-version; are not recommended as they have 50 50 not been tested)</para> … … 75 75 76 76 <listitem> 77 <para><emphasis role="strong">GCC-12.2</emphasis> including the C++ 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++ 78 80 compiler, <command>g++</command> (Versions greater than &gcc-version; are 79 81 not recommended as they have not been tested). C and C++ standard … … 96 98 that version when building <application>glibc</application> in 97 99 <xref linkend="chapter-cross-tools"/> and 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> 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> 123 118 124 119 <para>We require the host kernel to support UNIX 98 pseudo terminal … … 233 228 ver_check Coreutils sort 8.1 || bail "Coreutils too old, stop" 234 229 ver_check Bash bash 3.2 235 ver_check Binutils ld 2. 38230 ver_check Binutils ld 2.13.1 236 231 ver_check Bison bison 2.7 237 232 ver_check Diffutils diff 2.8.1 238 233 ver_check Findutils find 4.2.31 239 234 ver_check Gawk gawk 4.0.1 240 ver_check GCC gcc 12.2241 ver_check "GCC (C++)" g++ 12.2235 ver_check GCC gcc 5.2 236 ver_check "GCC (C++)" g++ 5.2 242 237 ver_check Grep grep 2.5.1a 243 238 ver_check Gzip gzip 1.3.12 -
chapter04/addinguser.xml
r2c5dbc3 rfdc96d4 81 81 <systemitem class="username">lfs</systemitem> the owner:</para> 82 82 83 <screen><userinput>chown -v lfs $LFS/{usr{,/*},lib,lib64,var,etc,bin,sbin,tools}</userinput></screen> 83 <screen><userinput>chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools} 84 case $(uname -m) in 85 x86_64) chown -v lfs $LFS/lib64 ;; 86 esac</userinput></screen> 84 87 85 88 <note><para>In some host systems, the following <command>su</command> command does not complete -
chapter04/creatingminlayout.xml
r2c5dbc3 rfdc96d4 22 22 <systemitem class="username">root</systemitem>:</para> 23 23 24 <screen><userinput>mkdir -pv $LFS/{etc, lib64,var} $LFS/usr/{bin,lib,sbin}24 <screen><userinput>mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} 25 25 26 26 for i in bin lib sbin; do 27 27 ln -sv usr/$i $LFS/$i 28 done</userinput></screen> 28 done 29 30 case $(uname -m) in 31 x86_64) mkdir -pv $LFS/lib64 ;; 32 esac</userinput></screen> 29 33 30 34 <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled -
chapter05/gcc-pass1.xml
r2c5dbc3 rfdc96d4 44 44 <title>Installation of Cross GCC</title> 45 45 46 <!-- https://gcc.gnu.org/r14-4674 -->47 <para>At first, fix an issue producing illegal instructions in linked48 executables and shared libraries with GCC &gcc-version; and49 Binutils-2.42:</para>50 51 <screen><userinput remap='pre'>sed -e '/ASM_OUTPUT_ALIGN_WITH_NOP/,+1d' \52 -i gcc/config/loongarch/loongarch.h</userinput></screen>53 54 46 <para>GCC requires the GMP, MPFR and MPC packages. As these packages may 55 47 not be included in your host distribution, they will be built with … … 71 63 mv -v mpc-&mpc-version; mpc</userinput></screen> 72 64 73 <para> Set the default directory name for65 <para>On x86_64 hosts, set the default directory name for 74 66 64-bit libraries to <quote>lib</quote>:</para> 75 67 76 <screen><userinput remap="pre">sed -e 's/lib64/lib/' \ 77 -i.orig gcc/config/loongarch/{t-linux,linux.h}</userinput></screen> 68 <screen><userinput remap="pre">case $(uname -m) in 69 x86_64) 70 sed -e '/m64=/s/lib64/lib/' \ 71 -i.orig gcc/config/i386/t-linux64 72 ;; 73 esac</userinput></screen> 78 74 79 75 <para>The GCC documentation recommends building GCC … … 164 160 <term><parameter>--disable-multilib</parameter></term> 165 161 <listitem> 166 <para>On LoongArch, 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> 167 164 </listitem> 168 165 </varlistentry> -
chapter05/glibc.xml
r2c5dbc3 rfdc96d4 44 44 <title>Installation of Glibc</title> 45 45 46 <para>Create a compatibility symbolic link required for proper 46 <para>First, create a symbolic link for LSB compliance. Additionally, 47 for x86_64, create a compatibility symbolic link required for proper 47 48 operation of the dynamic library loader:</para> 48 49 49 <screen><userinput remap="pre">ln -sfv ../lib/ld-linux-loongarch-lp64d.so.1 $LFS/lib64</userinput></screen> 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> 50 57 51 58 <note> … … 205 212 and the output of the last command will be of the form:</para> 206 213 207 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux- loongarch-lp64d.so.1]</computeroutput></screen>208 <!-- 214 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen> 215 209 216 <para>Note that for 32-bit machines, the interpreter name will be 210 217 <filename>/lib/ld-linux.so.2</filename>.</para> 211 --> 218 212 219 <para>If the output is not as shown above, or there is no output at all, 213 220 then something is wrong. Investigate and retrace the steps to find out -
chapter06/gcc-pass2.xml
r2c5dbc3 rfdc96d4 48 48 <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen> 49 49 --> 50 51 <!-- https://gcc.gnu.org/r14-4674 -->52 <para>Again, fix an issue producing illegal instructions in linked53 executables and shared libraries with GCC &gcc-version; and54 Binutils-2.42:</para>55 56 <screen><userinput remap='pre'>sed -e '/ASM_OUTPUT_ALIGN_WITH_NOP/,+1d' \57 -i gcc/config/loongarch/loongarch.h</userinput></screen>58 59 50 <para>As in the first build of GCC, the GMP, MPFR, and MPC packages are 60 51 required. Unpack the tarballs and move them into the required directories:</para> … … 67 58 mv -v mpc-&mpc-version; mpc</userinput></screen> 68 59 69 <para> Set the default directory name for70 64-bitlibraries to <quote>lib</quote>:</para>60 <para>If building on x86_64, change the default directory name for 64-bit 61 libraries to <quote>lib</quote>:</para> 71 62 72 <screen><userinput remap="pre">sed -e 's/lib64/lib/' \ 73 -i.orig gcc/config/loongarch/{t-linux,linux.h}</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 ;; 68 esac</userinput></screen> 74 69 75 70 <para>Override the building rule of libgcc and libstdc++ headers, to -
chapter06/m4.xml
r2c5dbc3 rfdc96d4 53 53 <screen><userinput remap="configure">./configure --prefix=/usr \ 54 54 --host=$LFS_TGT \ 55 --build=$(build-aux/config.guess) \ 56 sv_cv_stack_direction=-1 \ 57 sv_cv_stack_direction_msg="grows down"</userinput></screen> 55 --build=$(build-aux/config.guess)</userinput></screen> 58 56 59 57 <para>Compile the package:</para> -
chapter06/patch.xml
r2c5dbc3 rfdc96d4 44 44 <title>Installation of Patch</title> 45 45 46 &update-config-text;47 48 <screen><userinput remap="pre">tar -C build-aux &update-config-arg;</userinput></screen>49 50 46 <para>Prepare Patch for compilation:</para> 51 47 -
chapter07/changingowner.xml
r2c5dbc3 rfdc96d4 34 34 command:</para> 35 35 36 <screen><userinput>chown -R root:root $LFS/{usr,lib,lib64,var,etc,bin,sbin,tools}</userinput></screen> 36 <screen><userinput>chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools} 37 case $(uname -m) in 38 x86_64) chown -R root:root $LFS/lib64 ;; 39 esac</userinput></screen> 37 40 38 41 </sect1> -
chapter08/binutils.xml
r2c5dbc3 rfdc96d4 42 42 <title>Installation of Binutils</title> 43 43 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 with46 Link Time Optimization (LTO). Note that some BLFS packages will be47 built with LTO enabled by default even if you don't enable it48 explicitly:</para>49 50 <screen><userinput remap="pre">for i in LO12 HI20 ADD; do51 sed -e '/DESC64_HI12/a\ case BFD_RELOC_LARCH_TLS_LE_'${i}'_R:' \52 -i gas/config/tc-loongarch.c53 done</userinput></screen>54 55 44 <para>The Binutils documentation recommends building Binutils 56 45 in a dedicated build directory:</para> … … 63 52 <screen><userinput remap="configure">../configure --prefix=/usr \ 64 53 --sysconfdir=/etc \ 54 --enable-gold \ 65 55 --enable-ld=default \ 66 56 --enable-plugins \ … … 75 65 76 66 <varlistentry> 67 <term><parameter>--enable-gold</parameter></term> 68 <listitem> 69 <para>Build the gold linker and install it as ld.gold (alongside the 70 default linker).</para> 71 </listitem> 72 </varlistentry> 73 74 <varlistentry> 77 75 <term><parameter>--enable-ld=default</parameter></term> 78 76 <listitem> … … 112 110 ultimately be located) is set to <filename 113 111 class="directory">$(exec_prefix)/$(target_alias)</filename>. For 114 example, 64-bit LoongArchmachines would expand that to <filename115 class="directory">/usr/ loongarch64-unknown-linux-gnu</filename>. Because this is112 example, x86_64 machines would expand that to <filename 113 class="directory">/usr/x86_64-pc-linux-gnu</filename>. Because this is 116 114 a custom system, this target-specific directory in <filename 117 115 class="directory">/usr</filename> is not required. <filename … … 138 136 <screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen> 139 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> 141 140 142 <!-- <para>Three tests in the gprofng suite are also known to fail.</para>--> 141 143 … … 159 161 160 162 <seglistitem> 161 <seg>addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, nm,163 <seg>addr2line, ar, as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, ld.gold, nm, 162 164 objcopy, objdump, ranlib, readelf, size, strings, and strip</seg> 163 165 <seg>libbfd.so, libctf.so, libctf-nobfd.so, libgprofng.so, … … 265 267 <indexterm zone="ch-system-binutils ld"> 266 268 <primary sortas="b-ld">ld</primary> 269 </indexterm> 270 </listitem> 271 </varlistentry> 272 273 <varlistentry id="ld.gold"> 274 <term><command>ld.gold</command></term> 275 <listitem> 276 <para>A cut down version of ld that only supports the 277 elf object file format</para> 278 <indexterm zone="ch-system-binutils ld.gold"> 279 <primary sortas="b-ld.gold">ld.gold</primary> 267 280 </indexterm> 268 281 </listitem> -
chapter08/check.xml
r2c5dbc3 rfdc96d4 40 40 <sect2 role="installation"> 41 41 <title>Installation of Check</title> 42 43 &update-config-text;44 45 <screen><userinput remap="pre">tar &update-config-arg;</userinput></screen>46 42 47 43 <para>Prepare Check for compilation:</para> -
chapter08/expect.xml
r2c5dbc3 rfdc96d4 67 67 GDBM, and of course Expect itself) will fail catastrophically, and other 68 68 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>73 69 74 70 <para>Prepare Expect for compilation:</para> -
chapter08/flex.xml
r2c5dbc3 rfdc96d4 51 51 This is not present, so we use an environment variable to skip this process. 52 52 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>57 53 58 54 <para>Prepare Flex for compilation:</para> -
chapter08/gcc.xml
r2c5dbc3 rfdc96d4 55 55 <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen> 56 56 --> 57 58 <!-- https://gcc.gnu.org/r14-4674 --> 59 <para>Again, fix an issue producing illegal instructions in linked 60 executables and shared libraries with GCC &gcc-version; and 61 Binutils-2.42:</para> 62 63 <screen><userinput remap='pre'>sed -e '/ASM_OUTPUT_ALIGN_WITH_NOP/,+1d' \ 64 -i gcc/config/loongarch/loongarch.h</userinput></screen> 65 66 <para>Set the default directory name for 67 64-bit libraries to <quote>lib</quote>:</para> 68 69 <screen><userinput remap="pre">sed -e 's/lib64/lib/' \ 70 -i.orig gcc/config/loongarch/{t-linux,linux.h}</userinput></screen> 57 <para>If building on x86_64, change the default directory name for 64-bit 58 libraries to <quote>lib</quote>:</para> 59 60 <screen><userinput remap="pre">case $(uname -m) in 61 x86_64) 62 sed -e '/m64=/s/lib64/lib/' \ 63 -i.orig gcc/config/i386/t-linux64 64 ;; 65 esac</userinput></screen> 71 66 72 67 <para>The GCC documentation recommends building GCC in a dedicated build directory:</para> … … 179 174 180 175 <para> 181 Twelve gcc tests (out of over 150,000): 182 seven tests in the <filename class='directory'>analyzer</filename> 183 directory, one test named <filename>gcc.dg/uninit-pred-9_b.c</filename>, 184 one test named <filename>pr108357.c</filename>, one test named 185 <filename>ssa-dom-cse-2.c</filename>, and two 186 <quote>stack-check-cfa-*.c</quote> tests are known to fail. 187 188 For g++, 23 tests (out of approximately 250,000): 14 176 Eight gcc tests (out of over 185,000): 177 <!-- https://gcc.gnu.org/PR106375 --><filename>pr56837.c</filename> 178 and seven tests in the <filename class='directory'>analyzer</filename> 179 directory are known to fail. 180 181 <!-- https://gcc.gnu.org/PR109353 --> 182 One libstdc++ test (out of over 15000), <filename>copy.cc</filename>, is 183 known to fail. 184 185 For g++, 21 tests (out of approximately 250,000): 14 189 186 <quote>AddressSanitizer*</quote> 190 tests, 7 <filename>interception-malloc-test-1.C</filename> tests, 191 one <filename>pr90883.C</filename> test, and one 192 <filename>pr64076</filename> test are known to fail. 193 </para> 187 tests and 7 <filename>interception-malloc-test-1.C</filename> tests, are 188 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> 194 193 195 194 <para>A few unexpected failures cannot always be avoided. The GCC developers … … 241 240 platform-specific differences in the dynamic linker name):</para> 242 241 243 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux- loongarch-lp64d.so.1]</computeroutput></screen>242 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen> 244 243 245 244 <para>Now make sure that we're set up to use the correct start files:</para> … … 249 248 <para>The output of the last command should be:</para> 250 249 251 <screen><computeroutput>/usr/lib/gcc/ loongarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded252 /usr/lib/gcc/ loongarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded253 /usr/lib/gcc/ loongarch64-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> 254 253 255 254 <para>Depending on your machine architecture, the above may differ slightly. … … 268 267 269 268 <screen><computeroutput>#include <...> search starts here: 270 /usr/lib/gcc/ loongarch64-unknown-linux-gnu/&gcc-version;/include269 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include 271 270 /usr/local/include 272 /usr/lib/gcc/ loongarch64-unknown-linux-gnu/&gcc-version;/include-fixed271 /usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/include-fixed 273 272 /usr/include</computeroutput></screen> 274 273 … … 283 282 be ignored, but otherwise the output of the last command should be:</para> 284 283 285 <screen><computeroutput>SEARCH_DIR("/usr/ loongarch64-unknown-linux-gnu/lib64")284 <screen><computeroutput>SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") 286 285 SEARCH_DIR("/usr/local/lib64") 287 286 SEARCH_DIR("/lib64") 288 287 SEARCH_DIR("/usr/lib64") 289 SEARCH_DIR("/usr/ loongarch64-unknown-linux-gnu/lib")288 SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib") 290 289 SEARCH_DIR("/usr/local/lib") 291 290 SEARCH_DIR("/lib") 292 291 SEARCH_DIR("/usr/lib");</computeroutput></screen> 293 <!-- 292 294 293 <para>A 32-bit system may use a few other directories. For example, here 295 294 is the output from an i686 machine:</para> … … 303 302 SEARCH_DIR("/lib") 304 303 SEARCH_DIR("/usr/lib");</computeroutput></screen> 305 --> 304 306 305 <para>Next make sure that we're using the correct libc:</para> 307 306 … … 319 318 platform-specific differences in dynamic linker name):</para> 320 319 321 <screen><computeroutput>found ld-linux- loongarch-lp64d.so.1 at /usr/lib/ld-linux-loongarch-lp64d.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> 322 321 323 322 <para>If the output does not appear as shown above or is not received -
chapter08/gdbm.xml
r2c5dbc3 rfdc96d4 49 49 <screen><userinput remap="pre">sed -r -i '/^char.*parseopt_program_(doc|args)/d' src/parseopt.c</userinput></screen> 50 50 --> 51 &update-config-text;52 53 <screen><userinput remap="pre">tar -C build-aux &update-config-arg;</userinput></screen>54 55 51 <para>Prepare GDBM for compilation:</para> 56 52 -
chapter08/grub.xml
r2c5dbc3 rfdc96d4 43 43 <note> 44 44 <para> 45 On LoongArch 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> 55 If your system firmware supports UEFI and you want a fully 56 functional GRUB, you can skip the content of this page, 57 and install GRUB with UEFI support (and its dependencies) following 58 <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink> 59 (with <parameter>--target=x86_64</parameter> removed) at the end of 60 this chapter. 45 If your system has UEFI support and you wish to boot LFS with UEFI, 46 you can skip this package in LFS, 47 and install GRUB with UEFI support (and its dependencies) by following 48 the instructions on 49 <ulink url="&blfs-book;postlfs/grub-efi.html">the BLFS page</ulink>. 61 50 </para> 62 51 </note> -
chapter08/libcap.xml
r2c5dbc3 rfdc96d4 60 60 <para>This parameter sets the library directory to 61 61 <filename>/usr/lib</filename> rather than 62 <filename>/usr/lib64</filename> on 64-bit LoongArch.</para> 62 <filename>/usr/lib64</filename> on x86_64. It has no effect on 63 x86.</para> 63 64 </listitem> 64 65 </varlistentry> -
chapter08/libffi.xml
r2c5dbc3 rfdc96d4 77 77 system, use the less capable system as a parameter. For details 78 78 about alternative system types, see <ulink 79 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/ LoongArch-Options.html'>80 the LoongArchoptions in the GCC manual</ulink>.</para>79 url='https://gcc.gnu.org/onlinedocs/gcc-&gcc-version;/gcc/x86-Options.html'> 80 the x86 options in the GCC manual</ulink>.</para> 81 81 </listitem> 82 82 </varlistentry> -
chapter08/patch.xml
r2c5dbc3 rfdc96d4 42 42 <sect2 role="installation"> 43 43 <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>48 44 49 45 <para>Prepare Patch for compilation:</para> -
chapter08/stripping.xml
r2c5dbc3 rfdc96d4 50 50 rationale for using the <command>install</command> command here.)</para> 51 51 52 <note><para>The ELF loader's name may vary on different systems.53 The construct below selects the52 <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 54 54 correct name for the current architecture, excluding anything ending 55 55 with <literal>g</literal>, in case the commands below have already been -
chapter08/systemd.xml
r2c5dbc3 rfdc96d4 62 62 cd build 63 63 64 CFLAGS+=" -Wno-format-overflow" \65 64 meson setup \ 66 65 --prefix=/usr \ -
chapter08/udev.xml
r2c5dbc3 rfdc96d4 66 66 cd build 67 67 68 CFLAGS+=" -Wno-format-overflow" \69 68 meson setup \ 70 69 --prefix=/usr \ -
chapter08/util-linux.xml
r2c5dbc3 rfdc96d4 116 116 known to fail.</para> 117 117 118 <!-- Related to non-4K page size. -->119 <para>Two tests named <filename>fadvise/drop</filename> and120 <filename>fincore/count</filename> are known to fail.</para>121 122 118 <para>Install the package:</para> 123 119 … … 143 139 eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck, 144 140 fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, hexdump, hwclock, 145 i onice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last,141 i386 (link to setarch), ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, 146 142 lastb (link to last), ldattach, linux32 (link to setarch), linux64 (link to setarch), 147 143 logger, look, losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, lslogins, … … 152 148 swapoff, swapon, switch_root, taskset, uclampset, ul, 153 149 umount, uname26 (link to setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse, 154 wall, wdctl, whereis, wipefs, and zramctl</seg>150 wall, wdctl, whereis, wipefs, x86_64 (link to setarch), and zramctl</seg> 155 151 <seg>libblkid.so, libfdisk.so, libmount.so, 156 152 libsmartcols.so, and libuuid.so</seg> … … 535 531 </varlistentry> 536 532 533 <varlistentry id="i386"> 534 <term><command>i386</command></term> 535 <listitem> 536 <para>A symbolic link to setarch</para> 537 <indexterm zone="ch-system-util-linux i386"> 538 <primary sortas="b-i386">i386</primary> 539 </indexterm> 540 </listitem> 541 </varlistentry> 542 537 543 <varlistentry id="ionice"> 538 544 <term><command>ionice</command></term> … … 1286 1292 </varlistentry> 1287 1293 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 1288 1304 <varlistentry id="zramctl"> 1289 1305 <term><command>zramctl</command></term> -
chapter10/grub.xml
r2c5dbc3 rfdc96d4 19 19 <note> 20 20 <para> 21 This section assume your system has UEFI support and you wish to boot 22 LFS with UEFI and GRUB built following the instructions in Chapter 8. 23 </para> 24 <para> 25 If you've installed GRUB for UEFI with optional dependencies following 26 BLFS, you should skip 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 27 23 syntax of <filename>grub.cfg</filename> and the method to specify 28 24 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=loongarch64-efi</parameter> for the 64-bit 33 LoongArch system. 34 </para> 35 <para> 36 If your system does not support UEFI or you don't want to use it, 37 you'll need to figure out how to configure the booting process of 38 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>. 39 27 </para> 40 28 </note> … … 49 37 LILO.</para></warning> 50 38 51 <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> 52 40 the computer if the computer becomes unusable (un-bootable). If you do not 53 already have a boot device, you can create one. To create a emergency 54 boot device for UEFI, consult section <quote>Create an Emergency Boot 55 Disk</quote> in 56 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink>.</para> 57 58 </sect2> 59 60 <sect2> 61 <title>Turn off Secure Boot</title> 62 63 <para>LFS does not have the essential packages to support Secure Boot. 64 To set up the boot process following the instructions in this section, 65 Secure Boot must be turned off from the configuration interface of the 66 firmware. Read the documentation provided by the manufacturer of your 67 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 48 grub-mkrescue --output=grub-img.iso 49 xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></screen> 50 68 51 </sect2> 69 52 … … 91 74 <title>Setting Up the Configuration</title> 92 75 93 <para>GRUB works by creating an EFI executable in the EFI System 94 Partition (ESP). You can find the ESP with:</para> 95 96 <screen role="nodump"><userinput>fdisk -l | grep 'EFI System'</userinput></screen> 97 98 <para>If no ESP exists on your hard drive (for example, you are building 99 LFS on a fresh new system with a Live CD as the host distro), read 100 <ulink url="&blfs-book;postlfs/grub-setup.html">the BLFS page</ulink> 101 for the instruction to create an ESP on your hard drive.</para> 102 103 <para>If the ESP is not mounted at 104 <filename class="directory">/boot/efi</filename> (in the chroot), 105 mount it now:</para> 106 107 <screen role="nodump"><userinput>mkdir -pv /boot/efi 108 mount /boot/efi</userinput></screen> 109 110 <note> 111 <para>The path to the device node is intentionally omitted in the 112 command. We expect the entry for mounting the ESP to 113 <filename class="directory">/boot/efi</filename> is already in 114 <filename>/etc/fstab</filename>. Add the entry before running the 115 command if you forgot to create an entry for the ESP in 116 <xref linkend="ch-bootable-fstab"/>.</para> 117 </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> 118 80 119 81 <para>The location of the boot partition is a choice of the user that … … 140 102 141 103 <para>Install the GRUB files into <filename 142 class="directory">/boot/grub</filename> and the GRUB EFI executable into 143 <filename>/boot/efi/EFI/BOOT/BOOTLOONGARCH64.EFI</filename>:</para> 104 class="directory">/boot/grub</filename> and set up the boot track:</para> 144 105 145 106 <warning> 146 <para>The following command will overwrite 147 <filename>BOOTLOONGARCH64.EFI</filename>. Do not run the command if 148 this is not desired, for example, if it contains a third party boot 149 manager. You can backup it with <command>cp</command> as it's a 150 regular 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> 151 110 </warning> 152 111 153 <screen role="nodump"><userinput>grub-install --removable</userinput></screen>112 <screen role="nodump"><userinput>grub-install /dev/sda</userinput></screen> 154 113 155 114 <note> 156 <para> 157 <parameter>--removable</parameter> may seem strange here. The UEFI 158 firmware searches EFI executables for boot loaders in a hardcoded 159 path, <filename>EFI/BOOT/BOOTLOONGARCH64.EFI</filename> in the ESP, and other 160 boot loader paths listed in the EFI variables. We've not installed 161 the utilities for manipulating EFI variables so we need to install 162 the EFI executable into the hardcoded path. The hardcoded path is 163 usually used by removable devices (for example, USB thumb devices) 164 so the <command>grub-install</command> option for this purpose is 165 named <parameter>--removable</parameter>. 166 </para> 167 <para> 168 UEFI implementation usually prefers the boot loaders with paths 169 recorded in an EFI variable, to the boot loader with the hardcoded 170 search path. You may need to invoke the boot device selection menu 171 or setting interface of your EFI firmware on next boot to explicitly 172 select the bootloader. 173 </para> 174 <para> 175 Some UEFI implementation may completely skip the hardcoded path if 176 there are other boot loaders in the same hard drive with paths 177 recorded in an EFI variable. Then you need to create an EFI 178 variable for the newly installed boot loader. Install 179 <ulink url="&blfs-book;postlfs/efibootmgr.html">efibootmgr</ulink>, 180 then run the following commands: 181 182 <screen role="nodump"><userinput>mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars 183 efibootmgr -B -L LFS || true 184 efibootmgr -c -L LFS -l '\EFI\BOOT\BOOTLOONGARCH64.EFI' -d /dev/sda 185 umount /sys/firmware/efi/efivars</userinput></screen> 186 187 Replace <filename>/dev/sda</filename> with the device node of the 188 hard drive where you are installing GRUB into. 189 </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> 190 121 </note> 191 122 … … 205 136 insmod ext2 206 137 set root=(hd0,2) 207 208 insmod all_video209 138 210 139 menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" { -
chapter10/kernel.xml
r2c5dbc3 rfdc96d4 141 141 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 142 142 href="kernel/systemd.xml"/> 143 144 <para>Enable some additional features if you are building a 64-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"/> 143 160 144 161 <para>If the partition for the LFS system is in a NVME SSD (i. e. the … … 257 274 258 275 <varlistentry> 259 <term><parameter>Enable the generic EFI decompressor</parameter></term>260 <listitem>261 <para>Create the bootable image as an EFI application that carries262 the actual kernel image in compressed form. It can make the263 bootable image 50% smaller.</para>264 </listitem>265 </varlistentry>266 267 <varlistentry>268 276 <term> 269 277 <parameter> … … 278 286 enabled, you should enable these two options as well or you'll see 279 287 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> 280 300 </listitem> 281 301 </varlistentry> … … 294 314 configuration menus and create the kernel configuration from 295 315 scratch.</para> 296 297 <!-- https://git.kernel.org/torvalds/c/2772ae4d66d1 (simplified) -->298 <para>Now fix an issue causing the kernel fail to build with Binutils299 2.42 on LoongArch:</para>300 301 <screen><userinput remap="pre">sed -e '/case EM_LOONG/aif (r_type == 100 || r_type == 102) continue;' \302 -i scripts/mod/modpost.c</userinput></screen>303 316 304 317 <para>Compile the kernel image and modules:</para> … … 343 356 the filename should be <emphasis>vmlinuz</emphasis> to be compatible with 344 357 the automatic setup of the boot process described in the next section. The 345 following command assumes a LoongArch platform with an EFI boot loader 346 (for example, GRUB built in &ch-final;):</para> 347 348 <screen><userinput remap="install">cp -iv arch/loongarch/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> 349 361 350 362 <para><filename>System.map</filename> is a symbol file for the kernel. -
chapter10/kernel/kernel-config.py
r2c5dbc3 rfdc96d4 24 24 if_stack = [] 25 25 26 expand_var_mp = { 'SRCARCH': ' loongarch' }26 expand_var_mp = { 'SRCARCH': 'x86' } 27 27 main_dep = {} 28 28 … … 171 171 if line.startswith('source') or line.startswith('\tsource'): 172 172 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 continue176 173 r += load_kconfig(sub) 177 174 elif line.startswith('config') or line.startswith('menu'): -
chapter10/kernel/systemd.xml
r2c5dbc3 rfdc96d4 16 16 [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---> [EXPERT] 17 17 18 <emphasis role='blue'> K</emphasis>ernel type and options --->19 [*] <emphasis role='blue'> R</emphasis>elocatable kernel[RELOCATABLE]20 [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel (KASLR)[RANDOMIZE_BASE]18 <emphasis role='blue'>P</emphasis>rocessor type and features ---> 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] 21 21 22 22 <emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---> -
chapter10/kernel/sysv.toml
r2c5dbc3 rfdc96d4 15 15 DRM=' *M' 16 16 17 EFI_ZBOOT='*'18 19 17 revision='sysv' 20 18 -
chapter10/kernel/sysv.xml
r2c5dbc3 rfdc96d4 15 15 [ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---> [EXPERT] 16 16 17 <emphasis role='blue'> K</emphasis>ernel type and options --->18 [*] <emphasis role='blue'> R</emphasis>elocatable kernel[RELOCATABLE]19 [*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel (KASLR)[RANDOMIZE_BASE]17 <emphasis role='blue'>P</emphasis>rocessor type and features ---> 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] 20 20 21 21 <emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---> … … 29 29 [*] <emphasis role='blue'>A</emphasis>utomount devtmpfs at /dev, after the kernel mounted the rootfs 30 30 ... [DEVTMPFS_MOUNT] 31 <emphasis role='blue'>F</emphasis>irmware Drivers --->32 <emphasis role='blue'>E</emphasis>FI (Extensible Firmware Interface) Support --->33 [*] <emphasis role='blue'>E</emphasis>nable the generic EFI decompressor [EFI_ZBOOT]34 31 <emphasis role='blue'>G</emphasis>raphics support ---> 35 32 < /*/M> <emphasis role='blue'>D</emphasis>irect Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> -
general.ent
r2c5dbc3 rfdc96d4 93 93 <!ENTITY secadv "&lfs-root;lfs/advisories/"> 94 94 95 <!ENTITY min-kernel "5.19"> 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"> 96 98 97 99 <!-- … … 140 142 <!ENTITY % patches-entities SYSTEM "patches.ent"> 141 143 %patches-entities; 142 143 <!ENTITY update-config-text144 "<para>Update the auxilary scripts of the building system to allow145 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 only149 affects options that follow. -->150 <!ENTITY update-config-arg151 "-xvf ../autoconf-&autoconf-version;.tar.xz --strip-components=2 \152 autoconf-&autoconf-version;/build-aux/config.{guess,sub}"> -
git-version.sh
r2c5dbc3 rfdc96d4 53 53 54 54 sha="$(git describe --abbrev=1)" 55 rev= loongarch-$(echo "$sha" | sed 's/-g[^-]*$//')55 rev=$(echo "$sha" | sed 's/-g[^-]*$//') 56 56 version="$rev" 57 57 versiond="$rev-systemd" -
prologue/architecture.xml
r2c5dbc3 rfdc96d4 11 11 <title>LFS Target Architectures</title> 12 12 13 <para>The primary target architectures of this LFS edition are LoongArch 14 CPUs. 15 <!--On the other hand, the instructions in this book are 16 also known to work, with some modifications, with the Power PC and ARM 17 CPUs. --> 18 To build a system that utilizes one of these CPUs, the main prerequisite, in 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 19 17 addition to those on the next page, is an existing Linux system such as an 20 earlier LFS installation, Loong Arch Linux, CLFS for LoongArch, Gentoo, 21 Slackware, or other distribution that targets LoongArch.</para> 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> 22 22 23 <para>The build that results from this LFS edition is a 24 <quote>pure</quote> lp64d system. That is, it supports executables with 25 the lp64d ABI 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 26 41 only. Building a <quote>multi-lib</quote> system requires compiling many 27 applications multiple times, once for each ABI to be supported.42 applications twice, once for a 32-bit system and once for a 64-bit system. 28 43 This is not directly supported in LFS because it would interfere with the 29 44 educational objective of providing the minimal instructions needed for a … … 31 46 of LFS, accessible at <ulink 32 47 url="https://www.linuxfromscratch.org/~thomas/multilib/index.html"/>. But 33 the multilib edition is for x86_64, and multilib is an advanced topic 34 anyway.</para> 48 that's an advanced topic.</para> 35 49 36 50 </sect1> -
prologue/bookinfo.xml
r2c5dbc3 rfdc96d4 50 50 Linus Torvalds.</para> 51 51 52 <para><trademark class='registered'>LoongArch</trademark> is a53 registered trademark of Loongson Technology Co., Ltd.</para>54 52 </legalnotice> 55 53
Note:
See TracChangeset
for help on using the changeset viewer.