Size: 2449
Comment:
|
Size: 78227
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 12: | Line 12: |
AAAA |
|
Line 13: | Line 16: |
# https://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-11.3-NOCHUNKS.html |
|
Line 23: | Line 28: |
# As root cd sources chmod 666 . -R export LFS=/home/vagrant/lfs echo $LFS mkdir -pv $LFS cd $LFS mkdir sources wget https://www.linuxfromscratch.org/lfs/downloads/stable/wget-list xargs -l wget < wget-list cd .. cat > version-check.sh << "EOF" #!/bin/bash # Simple script to list version numbers of critical development tools export LC_ALL=C bash --version | head -n1 | cut -d" " -f2-4 MYSH=$(readlink -f /bin/sh) echo "/bin/sh -> $MYSH" echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash" unset MYSH echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3- bison --version | head -n1 if [ -h /usr/bin/yacc ]; then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`"; elif [ -x /usr/bin/yacc ]; then echo yacc is `/usr/bin/yacc --version | head -n1` else echo "yacc not found" fi echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2 diff --version | head -n1 find --version | head -n1 gawk --version | head -n1 if [ -h /usr/bin/awk ]; then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`"; elif [ -x /usr/bin/awk ]; then echo awk is `/usr/bin/awk --version | head -n1` else echo "awk not found" fi gcc --version | head -n1 g++ --version | head -n1 grep --version | head -n1 gzip --version | head -n1 cat /proc/version m4 --version | head -n1 make --version | head -n1 patch --version | head -n1 echo Perl `perl -V:version` python3 --version sed --version | head -n1 tar --version | head -n1 makeinfo --version | head -n1 # texinfo version xz --version | head -n1 echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c if [ -x dummy ] then echo "g++ compilation OK"; else echo "g++ compilation failed"; fi rm -f dummy.c dummy EOF sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh sudo apt install bison texinfo gawk bash version-check.sh # As root user sudo bash export LFS=/home/vagrant/lfs mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} for i in bin lib sbin; do ln -sv usr/$i $LFS/$i done case $(uname -m) in x86_64) mkdir -pv $LFS/lib64 ;; esac mkdir -pv $LFS/tools groupadd lfs useradd -s /bin/bash -g lfs -m -k /dev/null lfs echo -e "lfs\nlfs\n" | passwd lfs chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools,sources} chgrp -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools,sources} chmod 755 sources/ case $(uname -m) in x86_64) chown -v lfs $LFS/lib64 ;; esac # Logged in as lfs user su - lfs cat > ~/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF cat > ~/.bashrc << "EOF" set +h umask 022 LFS=/home/vagrant/lfs LC_ALL=POSIX LFS_TGT=$(uname -m)-lfs-linux-gnu PATH=/usr/bin if [ ! -L /bin ]; then PATH=/bin:$PATH; fi PATH=$LFS/tools/bin:$PATH CONFIG_SITE=$LFS/usr/share/config.site export LFS LC_ALL LFS_TGT PATH CONFIG_SITE EOF source ~/.bash_profile source ~/.bashrc echo $LFS # Basic build steps # cd /mnt/lfs/sources/ # untar package as lfs user # go to package folder # build # go back to /mnt/lfs/sources/ # delete extracted package # binutils as lfs user cd $LFS/sources/ tar xvif binutils*.xz cd $(ls binutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) mkdir -v build cd build ../configure --prefix=$LFS/tools \ --with-sysroot=$LFS \ --target=$LFS_TGT \ --disable-nls \ --enable-gprofng=no \ --disable-werror make make install cd $LFS/sources/ rm -rf $(ls binutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # gcc cd $LFS/sources/ tar xvif gcc*.xz cd $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) tar -xf ../mpfr-4.2.0.tar.xz mv -v mpfr-4.2.0 mpfr tar -xf ../gmp-6.2.1.tar.xz mv -v gmp-6.2.1 gmp tar -xf ../mpc-1.3.1.tar.gz mv -v mpc-1.3.1 mpc case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' \ -i.orig gcc/config/i386/t-linux64 ;; esac mkdir -v build cd build ../configure \ --target=$LFS_TGT \ --prefix=$LFS/tools \ --with-glibc-version=2.37 \ --with-sysroot=$LFS \ --with-newlib \ --without-headers \ --enable-default-pie \ --enable-default-ssp \ --disable-nls \ --disable-shared \ --disable-multilib \ --disable-threads \ --disable-libatomic \ --disable-libgomp \ --disable-libquadmath \ --disable-libssp \ --disable-libvtv \ --disable-libstdcxx \ --enable-languages=c,c++ make make install 38m cd $LFS/sources/ rm -rf $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # Linux-6.1.11 API Headers cd $LFS/sources/ tar xvif linux*.xz cd $(ls linux*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) make mrproper make headers find usr/include -type f ! -name '*.h' -delete cp -rv usr/include $LFS/usr cd $LFS/sources/ rm -rf $(ls linux*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # glibc cd $LFS/sources/ tar xvif glibc*.xz cd $(ls glibc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) case $(uname -m) in i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3 ;; x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64 ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3 ;; esac patch -Np1 -i ../glibc-2.37-fhs-1.patch mkdir -v build cd build echo "rootsbindir=/usr/sbin" > configparms ../configure \ --prefix=/usr \ --host=$LFS_TGT \ --build=$(../scripts/config.guess) \ --enable-kernel=3.2 \ --with-headers=$LFS/usr/include \ libc_cv_slibdir=/usr/lib make make DESTDIR=$LFS install sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd echo 'int main(){}' | $LFS_TGT-gcc -xc - readelf -l a.out | grep ld-linux rm -v a.out $LFS/tools/libexec/gcc/$LFS_TGT/12.2.0/install-tools/mkheaders cd $LFS/sources/ rm -rf $(ls glibc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # Libstdc++ cd $LFS/sources/ tar xvif gcc*.xz cd $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) mkdir -v build cd build ../libstdc++-v3/configure \ --host=$LFS_TGT \ --build=$(../config.guess) \ --prefix=/usr \ --disable-multilib \ --disable-nls \ --disable-libstdcxx-pch \ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0 make make DESTDIR=$LFS install rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la cd $LFS/sources/ rm -rf $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # m4 cd $LFS/sources/ tar xvif m4*.xz cd $(ls m4*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) make make[1]: Leaving directory '/home/vagrant/lfs/sources/m4-1.4.19' make: *** [Makefile:1974: all] Error 2 cd $LFS/sources/ tar xvif gcc*.xz cd $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include/limits.h $LFS/tools/libexec/gcc/$LFS_TGT/12.2.0/install-tools/mkheaders cd $LFS/sources/ cd $(ls m4*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) rm -rf $(ls m4*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # ncurses cd $LFS/sources/ tar xvzf ncurses*.gz cd $(ls ncurses*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) sed -i s/mawk// configure mkdir build pushd build ../configure make -C include make -C progs tic popd ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(./config.guess) \ --mandir=/usr/share/man \ --with-manpage-format=normal \ --with-shared \ --without-normal \ --with-cxx-shared \ --without-debug \ --without-ada \ --disable-stripping \ --enable-widec time make make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so cd $LFS/sources/ rm -rf $(ls ncurses*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # bash cd $LFS/sources/ tar xvzf bash*.gz cd $(ls bash*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) ./configure --prefix=/usr \ --build=$(sh support/config.guess) \ --host=$LFS_TGT \ --without-bash-malloc time make make DESTDIR=$LFS install ln -sv bash $LFS/bin/sh cd $LFS/sources/ rm -rf $(ls bash*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # coreutils cd $LFS/sources/ tar xvif coreutils*.xz cd $(ls coreutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) \ --enable-install-program=hostname \ --enable-no-install-program=kill,uptime time make make DESTDIR=$LFS install mv -v $LFS/usr/bin/chroot $LFS/usr/sbin mkdir -pv $LFS/usr/share/man/man8 mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8 cd $LFS/sources/ rm -rf $(ls coreutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # diffutils cd $LFS/sources/ tar xvif diffutils*.xz cd $(ls diffutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr --host=$LFS_TGT time make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls diffutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # file cd $LFS/sources/ tar xvzf file*.gz cd $(ls file*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) mkdir build pushd build ../configure --disable-bzlib \ --disable-libseccomp \ --disable-xzlib \ --disable-zlib make popd ./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess) time make FILE_COMPILE=$(pwd)/build/src/file make DESTDIR=$LFS install rm -v $LFS/usr/lib/libmagic.la cd $LFS/sources/ rm -rf $(ls file*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # findutils cd $LFS/sources/ tar xvif findutils*.xz cd $(ls findutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --localstatedir=/var/lib/locate \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls findutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # gawk cd $LFS/sources/ APP=gawk tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) sed -i 's/extras//' Makefile.in ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # grep cd $LFS/sources/ APP=grep tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --host=$LFS_TGT make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # gzip cd $LFS/sources/ APP=gzip tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr --host=$LFS_TGT make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # make cd $LFS/sources/ APP=make tar xvif $APP*.gz cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) sed -e '/ifdef SIGPIPE/,+2 d' \ -e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \ -i src/main.c ./configure --prefix=/usr \ --without-guile \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # patch cd $LFS/sources/ APP=patch tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # sed cd $LFS/sources/ APP=sed tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --host=$LFS_TGT make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # tar cd $LFS/sources/ APP=tar tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) make make DESTDIR=$LFS install cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # xz cd $LFS/sources/ APP=xz tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --host=$LFS_TGT \ --build=$(build-aux/config.guess) \ --disable-static \ --docdir=/usr/share/doc/xz-5.4.1 make make DESTDIR=$LFS install rm -v $LFS/usr/lib/liblzma.la cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # binutils pass 2 cd $LFS/sources/ APP=binutils tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) sed '6009s/$add_dir//' -i ltmain.sh mkdir -v build cd build ../configure \ --prefix=/usr \ --build=$(../config.guess) \ --host=$LFS_TGT \ --disable-nls \ --enable-shared \ --enable-gprofng=no \ --disable-werror \ --enable-64-bit-bfd make make DESTDIR=$LFS install rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.{a,la} cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # gcc part 2 cd $LFS/sources/ APP=gcc tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) tar -xf ../mpfr-4.2.0.tar.xz mv -v mpfr-4.2.0 mpfr tar -xf ../gmp-6.2.1.tar.xz mv -v gmp-6.2.1 gmp tar -xf ../mpc-1.3.1.tar.gz mv -v mpc-1.3.1 mpc case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 ;; esac sed '/thread_header =/s/@.*@/gthr-posix.h/' \ -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in mkdir -v build cd build ../configure \ --build=$(../config.guess) \ --host=$LFS_TGT \ --target=$LFS_TGT \ LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \ --prefix=/usr \ --with-build-sysroot=$LFS \ --enable-default-pie \ --enable-default-ssp \ --disable-nls \ --disable-multilib \ --disable-libatomic \ --disable-libgomp \ --disable-libquadmath \ --disable-libssp \ --disable-libvtv \ --enable-languages=c,c++ make make DESTDIR=$LFS install ln -sv gcc $LFS/usr/bin/cc cd $LFS/sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # As root user echo $LFS /home/vagrant/lfs cd $LFS chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools} case $(uname -m) in x86_64) chown -R root:root $LFS/lib64 ;; esac mkdir -pv $LFS/{dev,proc,sys,run} mount -v --bind /dev $LFS/dev mount -v --bind /dev/pts $LFS/dev/pts mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys mount -vt tmpfs tmpfs $LFS/run if [ -h $LFS/dev/shm ]; then mkdir -pv $LFS/$(readlink $LFS/dev/shm) else mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm fi chroot "$LFS" /usr/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/usr/bin:/usr/sbin \ /bin/bash --login # in chroot state the bash prompt will say "I have no name!" mkdir -pv /{boot,home,mnt,opt,srv} mkdir -pv /etc/{opt,sysconfig} mkdir -pv /lib/firmware mkdir -pv /media/{floppy,cdrom} mkdir -pv /usr/{,local/}{include,src} mkdir -pv /usr/local/{bin,lib,sbin} mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man} mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -pv /usr/{,local/}share/man/man{1..8} mkdir -pv /var/{cache,local,log,mail,opt,spool} mkdir -pv /var/lib/{color,misc,locate} ln -sfv /run /var/run ln -sfv /run/lock /var/lock install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp ln -sv /proc/self/mounts /etc/mtab cat > /etc/hosts << "EOF" 127.0.0.1 localhost $(hostname) ::1 localhost EOF cat > /etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/dev/null:/usr/bin/false daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false EOF cat > /etc/group << "EOF" root:x:0: bin:x:1:daemon sys:x:2: kmem:x:3: tape:x:4: tty:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: dialout:x:10: audio:x:11: video:x:12: utmp:x:13: usb:x:14: cdrom:x:15: adm:x:16: messagebus:x:18: input:x:24: mail:x:34: kvm:x:61: uuidd:x:80: wheel:x:97: users:x:999: nogroup:x:65534: EOF echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd echo "tester:x:101:" >> /etc/group install -o tester -d /home/tester exec /usr/bin/bash --login touch /var/log/{btmp,lastlog,faillog,wtmp} chgrp -v utmp /var/log/lastlog chmod -v 664 /var/log/lastlog chmod -v 600 /var/log/btmp # gettext cd /sources/ APP=gettext tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --disable-shared make cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # bison cd /sources/ APP=bison tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --docdir=/usr/share/doc/bison-3.8.2 make make install cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # perl cd /sources/ APP=perl tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) sh Configure -des \ -Dprefix=/usr \ -Dvendorprefix=/usr \ -Dprivlib=/usr/lib/perl5/5.36/core_perl \ -Darchlib=/usr/lib/perl5/5.36/core_perl \ -Dsitelib=/usr/lib/perl5/5.36/site_perl \ -Dsitearch=/usr/lib/perl5/5.36/site_perl \ -Dvendorlib=/usr/lib/perl5/5.36/vendor_perl \ -Dvendorarch=/usr/lib/perl5/5.36/vendor_perl make make install cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # python cd /sources/ APP=Python tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --enable-shared \ --without-ensurepip make make install cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # texinfo cd /sources/ APP=texinfo tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr make make install cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # util-linux cd /sources/ APP=util-linux tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) mkdir -pv /var/lib/hwclock ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ --libdir=/usr/lib \ --docdir=/usr/share/doc/util-linux-2.38.1 \ --disable-chfn-chsh \ --disable-login \ --disable-nologin \ --disable-su \ --disable-setpriv \ --disable-runuser \ --disable-pylibmount \ --disable-static \ --without-python \ runstatedir=/run make make install cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # Cleaning rm -rf /usr/share/{info,man,doc}/* find /usr/{lib,libexec} -name \*.la -delete rm -rf /tools # Backup as root exit # leave chroot echo $LFS mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm umount $LFS/dev/pts umount $LFS/{sys,proc,run,dev} cd $LFS tar -cJpf $HOME/lfs-temp-tools-11.3.tar.xz . # Restore as root if required echo $LFS cd $LFS rm -rf ./* tar -xpf $HOME/lfs-temp-tools-11.3.tar.xz # Prepare Virtual Kernel File Systems findmnt | grep $LFS mkdir -pv $LFS/{dev,proc,sys,run} mount -v --bind /dev $LFS/dev mount -v --bind /dev/pts $LFS/dev/pts mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys mount -vt tmpfs tmpfs $LFS/run if [ -h $LFS/dev/shm ]; then mkdir -pv $LFS/$(readlink $LFS/dev/shm) else mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm fi # Enter the chroot env chroot "$LFS" /usr/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/usr/bin:/usr/sbin \ /bin/bash --login # man pages cd /sources/ APP=man-pages tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) make prefix=/usr install cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # iana cd /sources/ APP=iana tar xvif $APP*.gz cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) cp services protocols /etc cd /sources/ rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # glibc cd /sources/ APP=glibc tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) patch -Np1 -i ../glibc-2.37-fhs-1.patch sed '/width -=/s/workend - string/number_length/' \ -i stdio-common/vfprintf-process-arg.c mkdir -v build cd build echo "rootsbindir=/usr/sbin" > configparms ../configure --prefix=/usr \ --disable-werror \ --enable-kernel=3.2 \ --enable-stack-protector=strong \ --with-headers=/usr/include \ libc_cv_slibdir=/usr/lib make make check touch /etc/ld.so.conf sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile make install sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd mkdir -pv /usr/lib/locale localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 localedef -i pt_PT -f ISO-8859-1 pt_PT localedef -i pt_PT@euro -f ISO-8859-15 pt_PT@euro localedef -i pt_PT -f UTF-8 pt_PT.UTF-8 make localedata/install-locales localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true cat > /etc/nsswitch.conf << "EOF" passwd: files group: files shadow: files hosts: files dns networks: files protocols: files services: files ethers: files rpc: files EOF tar -xf ../../tzdata2022g.tar.gz ZONEINFO=/usr/share/zoneinfo mkdir -pv $ZONEINFO/{posix,right} for tz in etcetera southamerica northamerica europe africa antarctica \ asia australasia backward; do zic -L /dev/null -d $ZONEINFO ${tz} zic -L /dev/null -d $ZONEINFO/posix ${tz} zic -L leapseconds -d $ZONEINFO/right ${tz} done cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO zic -d $ZONEINFO -p America/New_York unset ZONEINFO echo -e "7\n 37\n 1\n 1\n" | tzselect # 7\n 37\n 1\n 1\n # Europe Portugal Mainland yes ln -sfv /usr/share/zoneinfo/Europe/Portugal /etc/localtime cat > /etc/ld.so.conf << "EOF" /usr/local/lib /opt/lib # Add an include directory include /etc/ld.so.conf.d/*.conf EOF mkdir -pv /etc/ld.so.conf.d cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # zlib cd /sources/ APP=zlib tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr make make check make install rm -fv /usr/lib/libz.a cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # bzip2 cd /sources/ APP=bzip2 tar xvif $APP*.gz cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile make -f Makefile-libbz2_so make clean make make PREFIX=/usr install cp -av libbz2.so.* /usr/lib ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so cp -v bzip2-shared /usr/bin/bzip2 for i in /usr/bin/{bzcat,bunzip2}; do ln -sfv bzip2 $i done rm -fv /usr/lib/libbz2.a cd /sources/ rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # xz cd /sources/ APP=xz tar xvif $APP*.xz cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/xz-5.4.1 make make check make install cd /sources/ rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' ) # zstd cd /sources/ APP=zstd tar xvif $APP*.gz cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) make prefix=/usr make check make prefix=/usr install rm -v /usr/lib/libzstd.a cd /sources/ rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # file cd /sources/ APP=file EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # readline cd /sources/ APP=readline tar xvif $APP*.gz cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) sed -i '/MV.*old/d' Makefile.in sed -i '/{OLDSUFF}/c:' support/shlib-install patch -Np1 -i ../readline-8.2-upstream_fix-1.patch ./configure --prefix=/usr \ --disable-static \ --with-curses \ --docdir=/usr/share/doc/readline-8.2 make SHLIB_LIBS="-lncursesw" make SHLIB_LIBS="-lncursesw" install install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2 cd /sources/ rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' ) # m4 cd /sources/ APP=m4 EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # bc cd /sources/ APP=bc EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) CC=gcc ./configure --prefix=/usr -G -O3 -r make make test make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # flex cd /sources/ APP=flex EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --docdir=/usr/share/doc/flex-2.6.4 \ --disable-static make make check make install ln -sv flex /usr/bin/lex cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # tcl cd /sources/ APP=tcl8.6.13-src EXTENSION=gz FOLDER=tcl8.6.13 tar xvzf $APP*.$EXTENSION cd $FOLDER SRCDIR=$(pwd) cd unix ./configure --prefix=/usr \ --mandir=/usr/share/man make sed -e "s|$SRCDIR/unix|/usr/lib|" \ -e "s|$SRCDIR|/usr/include|" \ -i tclConfig.sh sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \ -e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|" \ -i pkgs/tdbc1.1.5/tdbcConfig.sh sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \ -e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|" \ -e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|" \ -i pkgs/itcl4.2.3/itclConfig.sh unset SRCDIR make test make install chmod -v u+w /usr/lib/libtcl8.6.so make install-private-headers ln -sfv tclsh8.6 /usr/bin/tclsh mv /usr/share/man/man3/{Thread,Tcl_Thread}.3 cd .. tar -xf ../tcl8.6.13-html.tar.gz --strip-components=1 mkdir -v -p /usr/share/doc/tcl-8.6.13 cp -v -r ./html/* /usr/share/doc/tcl-8.6.13 cd /sources/ rm -rf $FOLDER # expect cd /sources/ APP=expect EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --with-tcl=/usr/lib \ --enable-shared \ --mandir=/usr/share/man \ --with-tclinclude=/usr/include make make test make install ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # dejagnu cd /sources/ APP=dejagnu EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) mkdir -v build cd build ../configure --prefix=/usr makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi makeinfo --plaintext -o doc/dejagnu.txt ../doc/dejagnu.texi make install install -v -dm755 /usr/share/doc/dejagnu-1.6.3 install -v -m644 doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3 make check cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # binutils cd /sources/ APP=binutils EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) expect -c "spawn ls" mkdir -v build cd build ../configure --prefix=/usr \ --sysconfdir=/etc \ --enable-gold \ --enable-ld=default \ --enable-plugins \ --enable-shared \ --disable-werror \ --enable-64-bit-bfd \ --with-system-zlib make tooldir=/usr make -k check grep '^FAIL:' $(find -name '*.log') # expected to 12 tests fail grep '^FAIL:' $(find -name '*.log') | wc -l make tooldir=/usr install rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,sframe,opcodes}.a rm -fv /usr/share/man/man1/{gprofng,gp-*}.1 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # gmp cd /sources/ APP=gmp EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) cp -v configfsf.guess config.guess cp -v configfsf.sub config.sub ./configure --prefix=/usr \ --enable-cxx \ --disable-static \ --docdir=/usr/share/doc/gmp-6.2.1 make make html make check 2>&1 | tee gmp-check-log awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log # check all 197 pass make install make install-html cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # mpfr cd /sources/ APP=mpfr EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -e 's/+01,234,567/+1,234,567 /' \ -e 's/13.10Pd/13Pd/' \ -i tests/tsprintf.c ./configure --prefix=/usr \ --disable-static \ --enable-thread-safe \ --docdir=/usr/share/doc/mpfr-4.2.0 make make html make check # ensure that all 197 tests passed make install make install-html cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # mpc cd /sources/ APP=mpc EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/mpc-1.3.1 make make html make check make install make install-html cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # attr cd /sources/ APP=attr EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-static \ --sysconfdir=/etc \ --docdir=/usr/share/doc/attr-2.5.1 make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # acl cd /sources/ APP=acl EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/acl-2.3.1 make make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # libcap cd /sources/ APP=libcap EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i '/install -m.*STA/d' libcap/Makefile make prefix=/usr lib=lib make test make prefix=/usr lib=lib install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # shadow cd /sources/ APP=shadow EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i 's/groups$(EXEEXT) //' src/Makefile.in find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \ -e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@' \ -e 's:/var/spool/mail:/var/mail:' \ -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \ -i etc/login.defs # no cracklib support touch /usr/bin/passwd ./configure --sysconfdir=/etc \ --disable-static \ --with-group-name-max-length=32 make make exec_prefix=/usr install make -C man install-man pwconv grpconv mkdir -p /etc/default useradd -D --gid 999 sed -i '/MAIL/s/yes/no/' /etc/default/useradd # input root pwd passwd root cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # gcc cd /sources/ APP=gcc EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) case $(uname -m) in x86_64) sed -e '/m64=/s/lib64/lib/' \ -i.orig gcc/config/i386/t-linux64 ;; esac mkdir -v build cd build ../configure --prefix=/usr \ LD=ld \ --enable-languages=c,c++ \ --enable-default-pie \ --enable-default-ssp \ --disable-multilib \ --disable-bootstrap \ --with-system-zlib time make # 43 SBU # real 65m28.356s ulimit -s 32768 chown -Rv tester . su tester -c "PATH=$PATH make -k check" # started 16:14 ../contrib/test_summary make install chown -v -R root:root \ /usr/lib/gcc/$(gcc -dumpmachine)/12.2.0/include{,-fixed} ln -svr /usr/bin/cpp /usr/lib ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/12.2.0/liblto_plugin.so \ /usr/lib/bfd-plugins/ echo 'int main(){}' > dummy.c cc dummy.c -v -Wl,--verbose &> dummy.log readelf -l a.out | grep ': /lib' # should show # [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log grep -B4 '^ /usr/include' dummy.log grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' grep "/lib.*/libc.so.6 " dummy.log rm -v dummy.c a.out dummy.log mkdir -pv /usr/share/gdb/auto-load/usr/lib mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # pkg-config cd /sources/ APP=pkg-config EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --with-internal-glib \ --disable-host-tool \ --docdir=/usr/share/doc/pkg-config-0.29.2 make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # ncurses cd /sources/ APP=ncurses EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --mandir=/usr/share/man \ --with-shared \ --without-debug \ --without-normal \ --with-cxx-shared \ --enable-pc-files \ --enable-widec \ --with-pkg-config-libdir=/usr/lib/pkgconfig make make DESTDIR=$PWD/dest install install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib rm -v dest/usr/lib/libncursesw.so.6.4 cp -av dest/* / for lib in ncurses form panel menu ; do rm -vf /usr/lib/lib${lib}.so echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc done rm -vf /usr/lib/libcursesw.so echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so ln -sfv libncurses.so /usr/lib/libcurses.so mkdir -pv /usr/share/doc/ncurses-6.4 cp -v -R doc/* /usr/share/doc/ncurses-6.4 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # sed cd /sources/ APP=sed EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make html chown -Rv tester . su tester -c "PATH=$PATH make check" make install install -d -m755 /usr/share/doc/sed-4.9 install -m644 doc/sed.html /usr/share/doc/sed-4.9 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # psmisc cd /sources/ APP=psmisc EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # gettext cd /sources/ APP=gettext EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/gettext-0.21.1 make make check make install chmod -v 0755 /usr/lib/preloadable_libintl.so cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # bison cd /sources/ APP=bison EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2 make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # grep cd /sources/ APP=grep EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i "s/echo/#echo/" src/egrep.sh ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # bash cd /sources/ APP=bash EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --without-bash-malloc \ --with-installed-readline \ --docdir=/usr/share/doc/bash-5.2.15 make chown -Rv tester . su -s /usr/bin/expect tester << EOF set timeout -1 spawn make tests expect eof lassign [wait] _ _ _ value exit $value EOF make install exec /usr/bin/bash --login cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # libtool cd /sources/ APP=libtool EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make -k check make install rm -fv /usr/lib/libltdl.a cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # gdbm cd /sources/ APP=gdbm EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-static \ --enable-libgdbm-compat make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # gperf cd /sources/ APP=gperf EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1 make make -j1 check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # expat cd /sources/ APP=expat EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/expat-2.5.0 make make check make install install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.5.0 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # inetutils cd /sources/ APP=inetutils EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --bindir=/usr/bin \ --localstatedir=/var \ --disable-logger \ --disable-whois \ --disable-rcp \ --disable-rexec \ --disable-rlogin \ --disable-rsh \ --disable-servers make make check make install mv -v /usr/{,s}bin/ifconfig cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # less cd /sources/ APP=less EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr --sysconfdir=/etc make make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # perl cd /sources/ APP=perl EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) export BUILD_ZLIB=False export BUILD_BZIP2=0 sh Configure -des \ -Dprefix=/usr \ -Dvendorprefix=/usr \ -Dprivlib=/usr/lib/perl5/5.36/core_perl \ -Darchlib=/usr/lib/perl5/5.36/core_perl \ -Dsitelib=/usr/lib/perl5/5.36/site_perl \ -Dsitearch=/usr/lib/perl5/5.36/site_perl \ -Dvendorlib=/usr/lib/perl5/5.36/vendor_perl \ -Dvendorarch=/usr/lib/perl5/5.36/vendor_perl \ -Dman1dir=/usr/share/man/man1 \ -Dman3dir=/usr/share/man/man3 \ -Dpager="/usr/bin/less -isR" \ -Duseshrplib \ -Dusethreads make make test make install unset BUILD_ZLIB BUILD_BZIP2 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # XML-Parser cd /sources/ APP=XML-Parser EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) perl Makefile.PL make make test make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # intltool-0.51.0.tar.gz cd /sources/ APP=intltool EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i 's:\\\${:\\\$\\{:' intltool-update.in ./configure --prefix=/usr make make check make install install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # autoconf-2.71.tar.xz cd /sources/ APP=autoconf EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -e 's/SECONDS|/&SHLVL|/' \ -e '/BASH_ARGV=/a\ /^SHLVL=/ d' \ -i.orig tests/local.at ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # automake-1.16.5.tar.xz cd /sources/ APP=automake EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5 make make -j4 check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # openssl-3.0.8.tar.gz cd /sources/ APP=openssl EXTENSION=gz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./config --prefix=/usr \ --openssldir=/etc/ssl \ --libdir=lib \ shared \ zlib-dynamic make make test sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile make MANSUFFIX=ssl install mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.0.8 cp -vfr doc/* /usr/share/doc/openssl-3.0.8 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # kmod-30.tar.xz cd /sources/ APP=kmod EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --sysconfdir=/etc \ --with-openssl \ --with-xz \ --with-zstd \ --with-zlib make make install for target in depmod insmod modinfo modprobe rmmod; do ln -sfv ../bin/kmod /usr/sbin/$target done ln -sfv kmod /usr/bin/lsmod cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # elfutils-0.188.tar.bz2 cd /sources/ APP=elfutils EXTENSION=bz2 tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-debuginfod \ --enable-libdebuginfod=dummy make make check make -C libelf install install -vm644 config/libelf.pc /usr/lib/pkgconfig rm /usr/lib/libelf.a cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # libffi-3.4.4.tar.gz cd /sources/ APP=libffi EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --disable-static \ --with-gcc-arch=native make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # Python-3.11.2.tar.xz cd /sources/ APP=Python-3 EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --enable-shared \ --with-system-expat \ --with-system-ffi \ --enable-optimizations make make install cat > /etc/pip.conf << "EOF" [global] root-user-action = ignore disable-pip-version-check = true EOF install -v -dm755 /usr/share/doc/python-3.11.2/html tar --strip-components=1 \ --no-same-owner \ --no-same-permissions \ -C /usr/share/doc/python-3.11.2/html \ -xvf ../python-3.11.2-docs-html.tar.bz2 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # wheel-0.38.4.tar.gz cd /sources/ APP=wheel EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) PYTHONPATH=src pip3 wheel -w dist --no-build-isolation --no-deps $PWD pip3 install --no-index --find-links=dist wheel cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # ninja-1.11.1.tar.gz cd /sources/ APP=ninja EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) export NINJAJOBS=4 sed -i '/int Guess/a \ int j = 0;\ char* jobs = getenv( "NINJAJOBS" );\ if ( jobs != NULL ) j = atoi( jobs );\ if ( j > 0 ) return j;\ ' src/ninja.cc python3 configure.py --bootstrap ./ninja ninja_test ./ninja_test --gtest_filter=-SubprocessTest.SetWithLots install -vm755 ninja /usr/bin/ install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # meson-1.0.0.tar.gz cd /sources/ APP=meson EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) pip3 wheel -w dist --no-build-isolation --no-deps $PWD pip3 install --no-index --find-links dist meson install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # coreutils-9.1.tar.xz cd /sources/ APP=coreutils EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) patch -Np1 -i ../coreutils-9.1-i18n-1.patch autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \ --prefix=/usr \ --enable-no-install-program=kill,uptime make make NON_ROOT_USERNAME=tester check-root echo "dummy:x:102:tester" >> /etc/group chown -Rv tester . su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check" sed -i '/dummy/d' /etc/group make install mv -v /usr/bin/chroot /usr/sbin mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # check-0.15.2.tar.gz cd /sources/ APP=check EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr --disable-static make make check make docdir=/usr/share/doc/check-0.15.2 install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # diffutils-3.9.tar.xz cd /sources/ APP=diffutils EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # gawk-5.2.1.tar.xz cd /sources/ APP=gawk EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i 's/extras//' Makefile.in ./configure --prefix=/usr make make check make LN='ln -f' install mkdir -pv /usr/share/doc/gawk-5.2.1 cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.2.1 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # findutils-4.9.0.tar.xz cd /sources/ APP=findutils EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) case $(uname -m) in i?86) TIME_T_32_BIT_OK=yes ./configure --prefix=/usr --localstatedir=/var/lib/locate ;; x86_64) ./configure --prefix=/usr --localstatedir=/var/lib/locate ;; esac make chown -Rv tester . su tester -c "PATH=$PATH make check" make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # groff-1.22.4.tar.gz cd /sources/ APP=groff EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) PAGE=A4 ./configure --prefix=/usr make make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # grub-2.06.tar.xz cd /sources/ APP=grub EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) unset {C,CPP,CXX,LD}FLAGS patch -Np1 -i ../grub-2.06-upstream_fixes-1.patch ./configure --prefix=/usr \ --sysconfdir=/etc \ --disable-efiemu \ --disable-werror make make install mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # gzip-1.12.tar.xz cd /sources/ APP=gzip EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # iproute2-6.1.0.tar.xz cd /sources/ APP=iproute2 EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i /ARPD/d Makefile rm -fv man/man8/arpd.8 make NETNS_RUN_DIR=/run/netns make SBINDIR=/usr/sbin install mkdir -pv /usr/share/doc/iproute2-6.1.0 cp -v COPYING README* /usr/share/doc/iproute2-6.1.0 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # kbd-2.5.1.tar.xz cd /sources/ APP=kbd EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) patch -Np1 -i ../kbd-2.5.1-backspace-1.patch sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in ./configure --prefix=/usr --disable-vlock make make check make install mkdir -pv /usr/share/doc/kbd-2.5.1 cp -R -v docs/doc/* /usr/share/doc/kbd-2.5.1 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # libpipeline-1.5.7.tar.gz cd /sources/ APP=libpipeline EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # make-4.4.tar.gz cd /sources/ APP=make EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -e '/ifdef SIGPIPE/,+2 d' \ -e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \ -i src/main.c ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # patch-2.7.6.tar.xz cd /sources/ APP=patch EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # tar-1.34.tar.xz cd /sources/ APP=tar EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) FORCE_UNSAFE_CONFIGURE=1 \ ./configure --prefix=/usr make make check make install make -C doc install-html docdir=/usr/share/doc/tar-1.34 cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # texinfo-7.0.2.tar.xz cd /sources/ APP=texinfo EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr make make check make install make TEXMF=/usr/share/texmf install-tex cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # vim-9.0.1273.tar.xz cd /sources/ APP=vim EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h ./configure --prefix=/usr make chown -Rv tester . su tester -c "LANG=en_US.UTF-8 make -j1 test" &> vim-test.log make install ln -sv vim /usr/bin/vi for L in /usr/share/man/{,*/}man1/vim.1; do ln -sv vim.1 $(dirname $L)/vi.1 done ln -sv ../vim/vim90/doc /usr/share/doc/vim-9.0.1273 cat > /etc/vimrc << "EOF" " Begin /etc/vimrc " Ensure defaults are set before customizing settings, not after source $VIMRUNTIME/defaults.vim let skip_defaults_vim=1 set nocompatible set backspace=2 set mouse= syntax on if (&term == "xterm") || (&term == "putty") set background=dark endif " End /etc/vimrc EOF cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # eudev-3.2.11.tar.gz cd /sources/ APP=eudev EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i '/udevdir/a udev_dir=${udevdir}' src/udev/udev.pc.in ./configure --prefix=/usr \ --bindir=/usr/sbin \ --sysconfdir=/etc \ --enable-manpages \ --disable-static make mkdir -pv /usr/lib/udev/rules.d mkdir -pv /etc/udev/rules.d make check make install tar -xvf ../udev-lfs-20171102.tar.xz make -f udev-lfs-20171102/Makefile.lfs install udevadm hwdb --update cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # man-db-2.11.2.tar.xz cd /sources/ APP=man-db EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --docdir=/usr/share/doc/man-db-2.11.2 \ --sysconfdir=/etc \ --disable-setuid \ --enable-cache-owner=bin \ --with-browser=/usr/bin/lynx \ --with-vgrind=/usr/bin/vgrind \ --with-grap=/usr/bin/grap \ --with-systemdtmpfilesdir= \ --with-systemdsystemunitdir= make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # procps-ng-4.0.2.tar.xz cd /sources/ APP=procps EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure --prefix=/usr \ --docdir=/usr/share/doc/procps-ng-4.0.2 \ --disable-static \ --disable-kill make make check make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # util-linux-2.38.1.tar.xz cd /sources/ APP=util-linux EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ --bindir=/usr/bin \ --libdir=/usr/lib \ --sbindir=/usr/sbin \ --disable-chfn-chsh \ --disable-login \ --disable-nologin \ --disable-su \ --disable-setpriv \ --disable-runuser \ --disable-pylibmount \ --disable-static \ --without-python \ --without-systemd \ --without-systemdsystemunitdir \ --docdir=/usr/share/doc/util-linux-2.38.1 make chown -Rv tester . su tester -c "make -k check" make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # e2fsprogs-1.47.0.tar.gz cd /sources/ APP=e2fsprogs EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) mkdir -v build cd build ../configure --prefix=/usr \ --sysconfdir=/etc \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ --disable-uuidd \ --disable-fsck make make check make install rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a gunzip -v /usr/share/info/libext2fs.info.gz install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo install -v -m644 doc/com_err.info /usr/share/info install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # sysklogd-1.5.1.tar.gz cd /sources/ APP=sysklogd EXTENSION=gz tar xvzf $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c sed -i 's/union wait/int/' syslogd.c make make BINDIR=/sbin install cat > /etc/syslog.conf << "EOF" auth,authpriv.* -/var/log/auth.log *.*;auth,authpriv.none -/var/log/sys.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log mail.* -/var/log/mail.log user.* -/var/log/user.log *.emerg * EOF cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # sysvinit-3.06.tar.xz cd /sources/ APP=sysvinit EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) patch -Np1 -i ../sysvinit-3.06-consolidated-1.patch make make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) # Stripping save_usrlib="$(cd /usr/lib; ls ld-linux*[^g]) libc.so.6 libthread_db.so.1 libquadmath.so.0.0.0 libstdc++.so.6.0.30 libitm.so.1.0.0 libatomic.so.1.2.0" cd /usr/lib for LIB in $save_usrlib; do objcopy --only-keep-debug $LIB $LIB.dbg cp $LIB /tmp/$LIB strip --strip-unneeded /tmp/$LIB objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB install -vm755 /tmp/$LIB /usr/lib rm /tmp/$LIB done online_usrbin="bash find strip" online_usrlib="libbfd-2.40.so libsframe.so.0.0.0 libhistory.so.8.2 libncursesw.so.6.4 libm.so.6 libreadline.so.8.2 libz.so.1.2.13 $(cd /usr/lib; find libnss*.so* -type f)" for BIN in $online_usrbin; do cp /usr/bin/$BIN /tmp/$BIN strip --strip-unneeded /tmp/$BIN install -vm755 /tmp/$BIN /usr/bin rm /tmp/$BIN done for LIB in $online_usrlib; do cp /usr/lib/$LIB /tmp/$LIB strip --strip-unneeded /tmp/$LIB install -vm755 /tmp/$LIB /usr/lib rm /tmp/$LIB done for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ $(find /usr/lib -type f -name \*.a) \ $(find /usr/{bin,sbin,libexec} -type f); do case "$online_usrbin $online_usrlib $save_usrlib" in *$(basename $i)* ) ;; * ) strip --strip-unneeded $i ;; esac done unset BIN LIB save_usrlib online_usrbin online_usrlib # Cleaning Up rm -rf /tmp/* find /usr/lib /usr/libexec -name \*.la -delete find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf userdel -r tester # lfs-bootscripts-20230101.tar.xz cd /sources/ APP=lfs-bootscripts EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) make install cd /sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) bash /usr/lib/udev/init-net-rules.sh cat /etc/udev/rules.d/70-persistent-net.rules cat > /etc/sysconfig/ifconfig.eth0 << "EOF" ONBOOT=yes IFACE=eth0 SERVICE=ipv4-static IP=192.168.1.2 GATEWAY=192.168.1.1 PREFIX=24 BROADCAST=192.168.1.255 EOF cat > /etc/resolv.conf << "EOF" domain <Your Domain Name> nameserver <IP address of your primary nameserver> nameserver <IP address of your secondary nameserver> EOF echo "vitux" > /etc/hostname cat > /etc/hosts << "EOF" 127.0.0.1 localhost.localdomain localhost 127.0.1.1 vitux.bitarus.mooo.com ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters EOF cat > /etc/inittab << "EOF" id:3:initdefault: si::sysinit:/etc/rc.d/init.d/rc S l0:0:wait:/etc/rc.d/init.d/rc 0 l1:S1:wait:/etc/rc.d/init.d/rc 1 l2:2:wait:/etc/rc.d/init.d/rc 2 l3:3:wait:/etc/rc.d/init.d/rc 3 l4:4:wait:/etc/rc.d/init.d/rc 4 l5:5:wait:/etc/rc.d/init.d/rc 5 l6:6:wait:/etc/rc.d/init.d/rc 6 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now su:S06:once:/sbin/sulogin s1:1:respawn:/sbin/sulogin 1:2345:respawn:/sbin/agetty --noclear tty1 9600 2:2345:respawn:/sbin/agetty tty2 9600 3:2345:respawn:/sbin/agetty tty3 9600 4:2345:respawn:/sbin/agetty tty4 9600 5:2345:respawn:/sbin/agetty tty5 9600 6:2345:respawn:/sbin/agetty tty6 9600 EOF cat > /etc/sysconfig/clock << "EOF" UTC=1 # Set this to any options you might need to give to hwclock, # such as machine hardware clock type for Alphas. CLOCKPARAMS= EOF cat > /etc/sysconfig/console << "EOF" KEYMAP="pt-latin1" FONT="lat1-16 -m 8859-1" UNICODE="1" EOF locale -a locale -a | grep -i pt kk_KZ.pt154 pt_BR pt_BR.iso88591 pt_BR.utf8 pt_PT pt_PT.iso88591 pt_PT.iso885915@euro pt_PT.utf8 pt_PT@euro cat > /etc/profile << "EOF" export LANG=pt_PT.utf8 EOF cat > /etc/inputrc << "EOF" # Modified by Chris Lynn <roryo@roryo.dynup.net> # Allow the command prompt to wrap to the next line set horizontal-scroll-mode Off # Enable 8-bit input set meta-flag On set input-meta On # Turns off 8th bit stripping set convert-meta Off # Keep the 8th bit for display set output-meta On # none, visible or audible set bell-style none # All of the following map the escape sequence of the value # contained in the 1st argument to the readline specific functions "\eOd": backward-word "\eOc": forward-word # for linux console "\e[1~": beginning-of-line "\e[4~": end-of-line "\e[5~": beginning-of-history "\e[6~": end-of-history "\e[3~": delete-char "\e[2~": quoted-insert # for xterm "\eOH": beginning-of-line "\eOF": end-of-line # for Konsole "\e[H": beginning-of-line "\e[F": end-of-line EOF cat > /etc/shells << "EOF" /bin/sh /bin/bash EOF cat > /etc/fstab << "EOF" # file system mount-point type options dump fsck # order /dev/<xxx> / <fff> defaults 1 1 /dev/<yyy> swap swap pri=1 0 0 proc /proc proc nosuid,noexec,nodev 0 0 sysfs /sys sysfs nosuid,noexec,nodev 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /run tmpfs defaults 0 0 devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 tmpfs /dev/shm tmpfs nosuid,nodev 0 0 EOF # linux-6.1.11.tar.xz cd /sources/ APP=linux EXTENSION=xz tar xvif $APP*.$EXTENSION cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) make mrproper make menuconfig # Processor type and features ---> # [*] Build a relocatable kernel [CONFIG_RELOCATABLE] # [*] Randomize the address of the kernel image (KASLR) [CONFIG_RANDOMIZE_BASE] # General setup ---> # [ ] Compile the kernel with warnings as errors [CONFIG_WERROR] # < > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS] # General architecture-dependent options ---> # [*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR] # [*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG] # Device Drivers ---> # Graphics support ---> # Frame buffer Devices ---> # <*> Support for frame buffer devices ---> # Console display driver support ---> # [*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE] # Generic Driver Options ---> # [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] # [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] # [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT] # Processor type and features ---> # [*] Support x2apic [CONFIG_X86_X2APIC] # Device Drivers ---> # [*] PCI Support ---> [CONFIG_PCI] # [*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI] # [*] IOMMU Hardware Support ---> [CONFIG_IOMMU_SUPPORT] # [*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP] /sources/linux-6.1.11# find . -name .config ./.config cat .config | grep -e CONFIG_IRQ_REMAP -e CONFIG_IOMMU_SUPPORT=y -e CONFIG_PCI_MSI=y -e CONFIG_PCI=y -e CONFIG_X86_X2APIC=y \ -e CONFIG_DEVTMPFS_MOUNT -e CONFIG_DEVTMPFS=y -e CONFIG_UEVENT_HELPER -e CONFIG_FRAMEBUFFER_CONSOLE=y \ -e CONFIG_STACKPROTECTOR=y -e CONFIG_STACKPROTECTOR_STRONG=y -e CONFIG_RELOCATABLE=y -e CONFIG_RANDOMIZE_BASE=y \ -e CONFIG_WERROR -e CONFIG_IKHEADERS # # CONFIG_WERROR is not set # # CONFIG_IKHEADERS is not set # CONFIG_RELOCATABLE=y # CONFIG_RANDOMIZE_BASE=y # CONFIG_STACKPROTECTOR=y # CONFIG_STACKPROTECTOR_STRONG=y # CONFIG_PCI=y # CONFIG_PCI_MSI=y # # CONFIG_UEVENT_HELPER is not set # CONFIG_DEVTMPFS=y # CONFIG_DEVTMPFS_MOUNT=y # CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_IOMMU_SUPPORT=y # CONFIG_IRQ_REMAP=y # https://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt make help make make modules_install cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.1.11-lfs-11.3 cp -iv System.map /boot/System.map-6.1.11 cp -iv .config /boot/config-6.1.11 install -d /usr/share/doc/linux-6.1.11 cp -r Documentation/* /usr/share/doc/linux-6.1.11 install -v -m755 -d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf << "EOF" install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true EOF cd $LFS/sources/ rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" ) echo 11.3 > /etc/lfs-release cat > /etc/lsb-release << "EOF" DISTRIB_ID="Linux From Scratch" DISTRIB_RELEASE="11.3" DISTRIB_CODENAME="Vitux" DISTRIB_DESCRIPTION="Linux From Scratch" EOF cat > /etc/os-release << "EOF" NAME="Linux From Scratch" VERSION="11.3" ID=lfs PRETTY_NAME="Linux From Scratch 11.3" VERSION_CODENAME="Vitux" EOF cd / # as chroot du . -hs # 2.0G du sources/ -hs # 603M sources/ sh version-check.sh # To make a backup, leave the chroot environment: exit mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm umount $LFS/dev/pts umount $LFS/{sys,proc,run,dev} LFS=/home/vagrant/lfs echo $LFS cd $LFS time tar -cJpf /root/lfs-build-11.3.tar.xz . # real 17m18.550s tar tvaf /root/lfs-build-11.3.tar.xz # -p, --preserve-permissions # -f, --file=ARCHIVE # -J, --xz Filter the archive through xz scp lfs*xz xyz@xyz.com:/media/LFS/ # Add partition to host lfs build ## add dymamic disk 8 GB to debian vagrant .... vagrant halt ## settings storage sata add hard disk ## create VDI dynamically allocated with 8 GB vagrant up ## sd 2:0:0:0: [sdb] 16777216 512-byte logical blocks: (8.59 GB/8.00 GiB) sudo cfdisk /dev/sdb ## label type gpt ## new 8GB linux fs ## write yes quit sudo mkfs -v -t ext4 /dev/sdb1 export LFS=/mnt/lfs sudo mkdir -pv $LFS sudo mount -v -t ext4 /dev/sdb1 $LFS sudo bash cat >>/etc/fstab << "EOF" /dev/sdb1 /mnt/lfs ext4 defaults 1 1 EOF exit sudo bash export LFS=/mnt/lfs cd ~ cp lfs-build-11.3.tar.xz $LFS cd $LFS rm -rf ./* tar -xpf /root/lfs-build-11.3.tar.xz ls chown root:root $LFS/* cat $LFS/etc/inittab cat $LFS/etc/fstab nano $LFS/etc/fstab # /dev/sdb1 / ext4 defaults 1 1 nano /etc/grub.d/40_custom # menuentry "GNU/Linux, Linux 6.1.11-lfs-11.3" { # linux /boot/vmlinuz-6.1.11-lfs-11.3 root=/dev/sdb1 ro # } update-grub vagrant reload # select grun entry for lfs # login with root:root df -h # uses 2.7G rm lfs-build-11.3.tar.xz rm -rf sources/* df -h # uses 1.4 GB |
|
Line 25: | Line 2942: |
AAAAA | |
Line 31: | Line 2949: |
sudo apt install qemu-system | sudo apt install qemu-system genisoimage |
Line 46: | Line 2964: |
# isolinux.cfg cat > debiancd/isolinux/isolinux.cfg << EOF default bootcd prompt 1 timeout 40 label bootcd kernel /install.amd/vmlinuz append initrd=/install.amd/test.cpio.gz vga=788 EOF |
|
Line 58: | Line 2987: |
# build cpio initramfs |
|
Line 59: | Line 2990: |
Line 62: | Line 2992: |
cat > debiancd/isolinux/isolinux.cfg << EOF default bootcd prompt 1 timeout 40 label bootcd kernel /install.amd/vmlinuz append initrd=/install.amd/test.cpio.gz vga=788 EOF |
|
Line 73: | Line 2993: |
mkisofs -o /tmp/output2.iso -R -l -L -D -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "LFS_$(date +%Y%m%d)" /tmp/debiancd/ rm /vagrant/output2.iso cp output2.iso /vagrant |
mkisofs -o /tmp/output.iso -R -l -L -D -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "LFS_$(date +%Y%m%d)" /tmp/debiancd/ rm /vagrant/output.iso cp output.iso /vagrant # the output.iso can be launched in VirtualBox booting the iso in a VM Other Linux, Linux 64 bit # test with qemu qemu-system-x86_64 -kernel debiancd/install.amd/vmlinuz -initrd test.cpio.gz /dev/zero # test with qemu with kernel in debian system qemu-system-x86_64 -kernel /boot/vmlinuz-5.10.0-22-amd64 -initrd test.cpio.gz /dev/zero # test with qemu with kernel from lfs qemu-system-x86_64 -kernel /home/vagrant/lfs/boot/lfskernel -initrd test.cpio.gz /dev/zero # test with qemu with kernel from lfs qemu-system-x86_64 -kernel /home/vagrant/lfs/boot/vmlinuz-6.1.11-lfs-11.3 -initrd test.cpio.gz /dev/zero |
Line 77: | Line 3008: |
qemu-system-x86_64 -kernel debiancd/install.amd/vmlinuz -initrd test.cpio.gz /dev/zero |
LinuxFromScratch
Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code.
https://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-11.3-NOCHUNKS.html
https://www.linuxfromscratch.org/hints/downloads/files/boot-cd_easy.txt
https://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
List of the required downloads for LFS 11.3
AAAA
1 # https://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-11.3-NOCHUNKS.html
2
3 cd ~
4 mkdir lfs
5 cd lfs
6 wget https://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
7 xargs -l wget < wget-list
8
9 # wget --input-file=wget-list --continue --directory-prefix=$LFS/sources
10 mkdir sources
11 mv *patch *xz *gz *bz2 sources/
12
13 # As root
14 cd sources
15 chmod 666 . -R
16
17 export LFS=/home/vagrant/lfs
18 echo $LFS
19 mkdir -pv $LFS
20
21 cd $LFS
22 mkdir sources
23 wget https://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
24 xargs -l wget < wget-list
25 cd ..
26
27 cat > version-check.sh << "EOF"
28 #!/bin/bash
29 # Simple script to list version numbers of critical development tools
30 export LC_ALL=C
31 bash --version | head -n1 | cut -d" " -f2-4
32 MYSH=$(readlink -f /bin/sh)
33 echo "/bin/sh -> $MYSH"
34 echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
35 unset MYSH
36
37 echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
38 bison --version | head -n1
39
40 if [ -h /usr/bin/yacc ]; then
41 echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
42 elif [ -x /usr/bin/yacc ]; then
43 echo yacc is `/usr/bin/yacc --version | head -n1`
44 else
45 echo "yacc not found"
46 fi
47
48 echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
49 diff --version | head -n1
50 find --version | head -n1
51 gawk --version | head -n1
52
53 if [ -h /usr/bin/awk ]; then
54 echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
55 elif [ -x /usr/bin/awk ]; then
56 echo awk is `/usr/bin/awk --version | head -n1`
57 else
58 echo "awk not found"
59 fi
60
61 gcc --version | head -n1
62 g++ --version | head -n1
63 grep --version | head -n1
64 gzip --version | head -n1
65 cat /proc/version
66 m4 --version | head -n1
67 make --version | head -n1
68 patch --version | head -n1
69 echo Perl `perl -V:version`
70 python3 --version
71 sed --version | head -n1
72 tar --version | head -n1
73 makeinfo --version | head -n1 # texinfo version
74 xz --version | head -n1
75
76 echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
77 if [ -x dummy ]
78 then echo "g++ compilation OK";
79 else echo "g++ compilation failed"; fi
80 rm -f dummy.c dummy
81 EOF
82
83 sudo rm /bin/sh
84 sudo ln -s /bin/bash /bin/sh
85 sudo apt install bison texinfo gawk
86
87 bash version-check.sh
88
89 # As root user
90 sudo bash
91 export LFS=/home/vagrant/lfs
92 mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
93
94 for i in bin lib sbin; do
95 ln -sv usr/$i $LFS/$i
96 done
97
98 case $(uname -m) in
99 x86_64) mkdir -pv $LFS/lib64 ;;
100 esac
101
102 mkdir -pv $LFS/tools
103 groupadd lfs
104 useradd -s /bin/bash -g lfs -m -k /dev/null lfs
105 echo -e "lfs\nlfs\n" | passwd lfs
106
107 chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools,sources}
108 chgrp -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools,sources}
109 chmod 755 sources/
110
111 case $(uname -m) in
112 x86_64) chown -v lfs $LFS/lib64 ;;
113 esac
114
115 # Logged in as lfs user
116 su - lfs
117
118 cat > ~/.bash_profile << "EOF"
119 exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
120 EOF
121
122 cat > ~/.bashrc << "EOF"
123 set +h
124 umask 022
125 LFS=/home/vagrant/lfs
126 LC_ALL=POSIX
127 LFS_TGT=$(uname -m)-lfs-linux-gnu
128 PATH=/usr/bin
129 if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
130 PATH=$LFS/tools/bin:$PATH
131 CONFIG_SITE=$LFS/usr/share/config.site
132 export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
133 EOF
134
135 source ~/.bash_profile
136 source ~/.bashrc
137 echo $LFS
138
139 # Basic build steps
140 # cd /mnt/lfs/sources/
141 # untar package as lfs user
142 # go to package folder
143 # build
144 # go back to /mnt/lfs/sources/
145 # delete extracted package
146
147 # binutils as lfs user
148 cd $LFS/sources/
149 tar xvif binutils*.xz
150 cd $(ls binutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
151 mkdir -v build
152 cd build
153 ../configure --prefix=$LFS/tools \
154 --with-sysroot=$LFS \
155 --target=$LFS_TGT \
156 --disable-nls \
157 --enable-gprofng=no \
158 --disable-werror
159 make
160 make install
161 cd $LFS/sources/
162 rm -rf $(ls binutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
163
164 # gcc
165 cd $LFS/sources/
166 tar xvif gcc*.xz
167 cd $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
168
169 tar -xf ../mpfr-4.2.0.tar.xz
170 mv -v mpfr-4.2.0 mpfr
171 tar -xf ../gmp-6.2.1.tar.xz
172 mv -v gmp-6.2.1 gmp
173 tar -xf ../mpc-1.3.1.tar.gz
174 mv -v mpc-1.3.1 mpc
175
176 case $(uname -m) in
177 x86_64)
178 sed -e '/m64=/s/lib64/lib/' \
179 -i.orig gcc/config/i386/t-linux64
180 ;;
181 esac
182
183 mkdir -v build
184 cd build
185
186 ../configure \
187 --target=$LFS_TGT \
188 --prefix=$LFS/tools \
189 --with-glibc-version=2.37 \
190 --with-sysroot=$LFS \
191 --with-newlib \
192 --without-headers \
193 --enable-default-pie \
194 --enable-default-ssp \
195 --disable-nls \
196 --disable-shared \
197 --disable-multilib \
198 --disable-threads \
199 --disable-libatomic \
200 --disable-libgomp \
201 --disable-libquadmath \
202 --disable-libssp \
203 --disable-libvtv \
204 --disable-libstdcxx \
205 --enable-languages=c,c++
206 make
207 make install
208 38m
209
210 cd $LFS/sources/
211 rm -rf $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
212
213 # Linux-6.1.11 API Headers
214 cd $LFS/sources/
215 tar xvif linux*.xz
216 cd $(ls linux*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
217 make mrproper
218 make headers
219 find usr/include -type f ! -name '*.h' -delete
220 cp -rv usr/include $LFS/usr
221 cd $LFS/sources/
222 rm -rf $(ls linux*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
223
224 # glibc
225 cd $LFS/sources/
226 tar xvif glibc*.xz
227 cd $(ls glibc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
228 case $(uname -m) in
229 i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
230 ;;
231 x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
232 ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
233 ;;
234 esac
235
236 patch -Np1 -i ../glibc-2.37-fhs-1.patch
237 mkdir -v build
238 cd build
239 echo "rootsbindir=/usr/sbin" > configparms
240 ../configure \
241 --prefix=/usr \
242 --host=$LFS_TGT \
243 --build=$(../scripts/config.guess) \
244 --enable-kernel=3.2 \
245 --with-headers=$LFS/usr/include \
246 libc_cv_slibdir=/usr/lib
247 make
248
249 make DESTDIR=$LFS install
250
251 sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
252 echo 'int main(){}' | $LFS_TGT-gcc -xc -
253 readelf -l a.out | grep ld-linux
254 rm -v a.out
255
256 $LFS/tools/libexec/gcc/$LFS_TGT/12.2.0/install-tools/mkheaders
257 cd $LFS/sources/
258 rm -rf $(ls glibc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
259
260 # Libstdc++
261 cd $LFS/sources/
262 tar xvif gcc*.xz
263 cd $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
264
265 mkdir -v build
266 cd build
267
268 ../libstdc++-v3/configure \
269 --host=$LFS_TGT \
270 --build=$(../config.guess) \
271 --prefix=/usr \
272 --disable-multilib \
273 --disable-nls \
274 --disable-libstdcxx-pch \
275 --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0
276 make
277
278 make DESTDIR=$LFS install
279 rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la
280 cd $LFS/sources/
281 rm -rf $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
282
283 # m4
284 cd $LFS/sources/
285 tar xvif m4*.xz
286 cd $(ls m4*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
287
288 ./configure --prefix=/usr \
289 --host=$LFS_TGT \
290 --build=$(build-aux/config.guess)
291 make
292 make[1]: Leaving directory '/home/vagrant/lfs/sources/m4-1.4.19'
293 make: *** [Makefile:1974: all] Error 2
294
295 cd $LFS/sources/
296 tar xvif gcc*.xz
297 cd $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
298 cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
299 `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include/limits.h
300 $LFS/tools/libexec/gcc/$LFS_TGT/12.2.0/install-tools/mkheaders
301 cd $LFS/sources/
302 cd $(ls m4*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
303 make
304 make DESTDIR=$LFS install
305 cd $LFS/sources/
306 rm -rf $(ls gcc*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
307 rm -rf $(ls m4*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
308
309 # ncurses
310 cd $LFS/sources/
311 tar xvzf ncurses*.gz
312 cd $(ls ncurses*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
313
314 sed -i s/mawk// configure
315
316 mkdir build
317 pushd build
318 ../configure
319 make -C include
320 make -C progs tic
321 popd
322
323 ./configure --prefix=/usr \
324 --host=$LFS_TGT \
325 --build=$(./config.guess) \
326 --mandir=/usr/share/man \
327 --with-manpage-format=normal \
328 --with-shared \
329 --without-normal \
330 --with-cxx-shared \
331 --without-debug \
332 --without-ada \
333 --disable-stripping \
334 --enable-widec
335 time make
336
337 make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
338 echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
339
340 cd $LFS/sources/
341 rm -rf $(ls ncurses*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
342
343 # bash
344 cd $LFS/sources/
345 tar xvzf bash*.gz
346 cd $(ls bash*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
347
348 ./configure --prefix=/usr \
349 --build=$(sh support/config.guess) \
350 --host=$LFS_TGT \
351 --without-bash-malloc
352
353 time make
354 make DESTDIR=$LFS install
355 ln -sv bash $LFS/bin/sh
356
357 cd $LFS/sources/
358 rm -rf $(ls bash*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
359
360 # coreutils
361 cd $LFS/sources/
362 tar xvif coreutils*.xz
363 cd $(ls coreutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
364
365 ./configure --prefix=/usr \
366 --host=$LFS_TGT \
367 --build=$(build-aux/config.guess) \
368 --enable-install-program=hostname \
369 --enable-no-install-program=kill,uptime
370
371
372 time make
373 make DESTDIR=$LFS install
374
375 mv -v $LFS/usr/bin/chroot $LFS/usr/sbin
376 mkdir -pv $LFS/usr/share/man/man8
377 mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
378 sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8
379
380 cd $LFS/sources/
381 rm -rf $(ls coreutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
382
383 # diffutils
384 cd $LFS/sources/
385 tar xvif diffutils*.xz
386 cd $(ls diffutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
387
388 ./configure --prefix=/usr --host=$LFS_TGT
389 time make
390 make DESTDIR=$LFS install
391
392 cd $LFS/sources/
393 rm -rf $(ls diffutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
394
395 # file
396 cd $LFS/sources/
397 tar xvzf file*.gz
398 cd $(ls file*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
399
400 mkdir build
401 pushd build
402 ../configure --disable-bzlib \
403 --disable-libseccomp \
404 --disable-xzlib \
405 --disable-zlib
406 make
407 popd
408
409 ./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
410 time make FILE_COMPILE=$(pwd)/build/src/file
411 make DESTDIR=$LFS install
412 rm -v $LFS/usr/lib/libmagic.la
413
414 cd $LFS/sources/
415 rm -rf $(ls file*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
416
417 # findutils
418 cd $LFS/sources/
419 tar xvif findutils*.xz
420 cd $(ls findutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
421
422 ./configure --prefix=/usr \
423 --localstatedir=/var/lib/locate \
424 --host=$LFS_TGT \
425 --build=$(build-aux/config.guess)
426 make
427 make DESTDIR=$LFS install
428
429 cd $LFS/sources/
430 rm -rf $(ls findutils*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
431
432 # gawk
433 cd $LFS/sources/
434 APP=gawk
435 tar xvif $APP*.xz
436 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
437
438 sed -i 's/extras//' Makefile.in
439 ./configure --prefix=/usr \
440 --host=$LFS_TGT \
441 --build=$(build-aux/config.guess)
442 make
443 make DESTDIR=$LFS install
444
445 cd $LFS/sources/
446 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
447
448 # grep
449 cd $LFS/sources/
450 APP=grep
451 tar xvif $APP*.xz
452 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
453
454 ./configure --prefix=/usr \
455 --host=$LFS_TGT
456 make
457 make DESTDIR=$LFS install
458
459 cd $LFS/sources/
460 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
461
462 # gzip
463 cd $LFS/sources/
464 APP=gzip
465 tar xvif $APP*.xz
466 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
467
468 ./configure --prefix=/usr --host=$LFS_TGT
469 make
470 make DESTDIR=$LFS install
471
472 cd $LFS/sources/
473 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
474
475 # make
476 cd $LFS/sources/
477 APP=make
478 tar xvif $APP*.gz
479 cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
480
481 sed -e '/ifdef SIGPIPE/,+2 d' \
482 -e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \
483 -i src/main.c
484
485 ./configure --prefix=/usr \
486 --without-guile \
487 --host=$LFS_TGT \
488 --build=$(build-aux/config.guess)
489 make
490 make DESTDIR=$LFS install
491
492 cd $LFS/sources/
493 rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
494
495 # patch
496 cd $LFS/sources/
497 APP=patch
498 tar xvif $APP*.xz
499 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
500
501
502 ./configure --prefix=/usr \
503 --host=$LFS_TGT \
504 --build=$(build-aux/config.guess)
505 make
506 make DESTDIR=$LFS install
507
508 cd $LFS/sources/
509 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
510
511 # sed
512 cd $LFS/sources/
513 APP=sed
514 tar xvif $APP*.xz
515 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
516
517 ./configure --prefix=/usr \
518 --host=$LFS_TGT
519 make
520 make DESTDIR=$LFS install
521
522 cd $LFS/sources/
523 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
524
525 # tar
526 cd $LFS/sources/
527 APP=tar
528 tar xvif $APP*.xz
529 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
530
531 ./configure --prefix=/usr \
532 --host=$LFS_TGT \
533 --build=$(build-aux/config.guess)
534 make
535 make DESTDIR=$LFS install
536
537 cd $LFS/sources/
538 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
539
540 # xz
541 cd $LFS/sources/
542 APP=xz
543 tar xvif $APP*.xz
544 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
545
546 ./configure --prefix=/usr \
547 --host=$LFS_TGT \
548 --build=$(build-aux/config.guess) \
549 --disable-static \
550 --docdir=/usr/share/doc/xz-5.4.1
551 make
552 make DESTDIR=$LFS install
553 rm -v $LFS/usr/lib/liblzma.la
554
555 cd $LFS/sources/
556 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
557
558 # binutils pass 2
559 cd $LFS/sources/
560 APP=binutils
561 tar xvif $APP*.xz
562 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
563
564 sed '6009s/$add_dir//' -i ltmain.sh
565 mkdir -v build
566 cd build
567
568 ../configure \
569 --prefix=/usr \
570 --build=$(../config.guess) \
571 --host=$LFS_TGT \
572 --disable-nls \
573 --enable-shared \
574 --enable-gprofng=no \
575 --disable-werror \
576 --enable-64-bit-bfd
577
578 make
579 make DESTDIR=$LFS install
580 rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.{a,la}
581
582 cd $LFS/sources/
583 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
584
585 # gcc part 2
586 cd $LFS/sources/
587 APP=gcc
588 tar xvif $APP*.xz
589 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
590
591 tar -xf ../mpfr-4.2.0.tar.xz
592 mv -v mpfr-4.2.0 mpfr
593 tar -xf ../gmp-6.2.1.tar.xz
594 mv -v gmp-6.2.1 gmp
595 tar -xf ../mpc-1.3.1.tar.gz
596 mv -v mpc-1.3.1 mpc
597
598 case $(uname -m) in
599 x86_64)
600 sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
601 ;;
602 esac
603
604 sed '/thread_header =/s/@.*@/gthr-posix.h/' \
605 -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
606
607 mkdir -v build
608 cd build
609
610 ../configure \
611 --build=$(../config.guess) \
612 --host=$LFS_TGT \
613 --target=$LFS_TGT \
614 LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
615 --prefix=/usr \
616 --with-build-sysroot=$LFS \
617 --enable-default-pie \
618 --enable-default-ssp \
619 --disable-nls \
620 --disable-multilib \
621 --disable-libatomic \
622 --disable-libgomp \
623 --disable-libquadmath \
624 --disable-libssp \
625 --disable-libvtv \
626 --enable-languages=c,c++
627
628 make
629 make DESTDIR=$LFS install
630 ln -sv gcc $LFS/usr/bin/cc
631
632 cd $LFS/sources/
633 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
634
635 # As root user
636 echo $LFS
637 /home/vagrant/lfs
638 cd $LFS
639 chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}
640 case $(uname -m) in
641 x86_64) chown -R root:root $LFS/lib64 ;;
642 esac
643 mkdir -pv $LFS/{dev,proc,sys,run}
644 mount -v --bind /dev $LFS/dev
645
646 mount -v --bind /dev/pts $LFS/dev/pts
647 mount -vt proc proc $LFS/proc
648 mount -vt sysfs sysfs $LFS/sys
649 mount -vt tmpfs tmpfs $LFS/run
650
651 if [ -h $LFS/dev/shm ]; then
652 mkdir -pv $LFS/$(readlink $LFS/dev/shm)
653 else
654 mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
655 fi
656
657 chroot "$LFS" /usr/bin/env -i \
658 HOME=/root \
659 TERM="$TERM" \
660 PS1='(lfs chroot) \u:\w\$ ' \
661 PATH=/usr/bin:/usr/sbin \
662 /bin/bash --login
663 # in chroot state the bash prompt will say "I have no name!"
664 mkdir -pv /{boot,home,mnt,opt,srv}
665 mkdir -pv /etc/{opt,sysconfig}
666 mkdir -pv /lib/firmware
667 mkdir -pv /media/{floppy,cdrom}
668 mkdir -pv /usr/{,local/}{include,src}
669 mkdir -pv /usr/local/{bin,lib,sbin}
670 mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
671 mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
672 mkdir -pv /usr/{,local/}share/man/man{1..8}
673 mkdir -pv /var/{cache,local,log,mail,opt,spool}
674 mkdir -pv /var/lib/{color,misc,locate}
675
676 ln -sfv /run /var/run
677 ln -sfv /run/lock /var/lock
678
679 install -dv -m 0750 /root
680 install -dv -m 1777 /tmp /var/tmp
681
682 ln -sv /proc/self/mounts /etc/mtab
683
684 cat > /etc/hosts << "EOF"
685 127.0.0.1 localhost $(hostname)
686 ::1 localhost
687 EOF
688
689 cat > /etc/passwd << "EOF"
690 root:x:0:0:root:/root:/bin/bash
691 bin:x:1:1:bin:/dev/null:/usr/bin/false
692 daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
693 messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
694 uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
695 nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
696 EOF
697
698 cat > /etc/group << "EOF"
699 root:x:0:
700 bin:x:1:daemon
701 sys:x:2:
702 kmem:x:3:
703 tape:x:4:
704 tty:x:5:
705 daemon:x:6:
706 floppy:x:7:
707 disk:x:8:
708 lp:x:9:
709 dialout:x:10:
710 audio:x:11:
711 video:x:12:
712 utmp:x:13:
713 usb:x:14:
714 cdrom:x:15:
715 adm:x:16:
716 messagebus:x:18:
717 input:x:24:
718 mail:x:34:
719 kvm:x:61:
720 uuidd:x:80:
721 wheel:x:97:
722 users:x:999:
723 nogroup:x:65534:
724 EOF
725
726 echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
727 echo "tester:x:101:" >> /etc/group
728 install -o tester -d /home/tester
729
730 exec /usr/bin/bash --login
731
732 touch /var/log/{btmp,lastlog,faillog,wtmp}
733 chgrp -v utmp /var/log/lastlog
734 chmod -v 664 /var/log/lastlog
735 chmod -v 600 /var/log/btmp
736
737 # gettext
738 cd /sources/
739 APP=gettext
740 tar xvif $APP*.xz
741 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
742
743 ./configure --disable-shared
744 make
745 cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
746
747 cd /sources/
748 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
749
750 # bison
751 cd /sources/
752 APP=bison
753 tar xvif $APP*.xz
754 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
755
756 ./configure --prefix=/usr \
757 --docdir=/usr/share/doc/bison-3.8.2
758 make
759 make install
760 cd /sources/
761 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
762
763 # perl
764 cd /sources/
765 APP=perl
766 tar xvif $APP*.xz
767 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
768
769 sh Configure -des \
770 -Dprefix=/usr \
771 -Dvendorprefix=/usr \
772 -Dprivlib=/usr/lib/perl5/5.36/core_perl \
773 -Darchlib=/usr/lib/perl5/5.36/core_perl \
774 -Dsitelib=/usr/lib/perl5/5.36/site_perl \
775 -Dsitearch=/usr/lib/perl5/5.36/site_perl \
776 -Dvendorlib=/usr/lib/perl5/5.36/vendor_perl \
777 -Dvendorarch=/usr/lib/perl5/5.36/vendor_perl
778 make
779 make install
780
781 cd /sources/
782 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
783
784 # python
785 cd /sources/
786 APP=Python
787 tar xvif $APP*.xz
788 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
789
790 ./configure --prefix=/usr \
791 --enable-shared \
792 --without-ensurepip
793 make
794 make install
795 cd /sources/
796 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
797
798 # texinfo
799 cd /sources/
800 APP=texinfo
801 tar xvif $APP*.xz
802 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
803
804 ./configure --prefix=/usr
805 make
806 make install
807
808 cd /sources/
809 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
810
811 # util-linux
812 cd /sources/
813 APP=util-linux
814 tar xvif $APP*.xz
815 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
816
817 mkdir -pv /var/lib/hwclock
818 ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
819 --libdir=/usr/lib \
820 --docdir=/usr/share/doc/util-linux-2.38.1 \
821 --disable-chfn-chsh \
822 --disable-login \
823 --disable-nologin \
824 --disable-su \
825 --disable-setpriv \
826 --disable-runuser \
827 --disable-pylibmount \
828 --disable-static \
829 --without-python \
830 runstatedir=/run
831 make
832 make install
833
834 cd /sources/
835 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
836
837 # Cleaning
838 rm -rf /usr/share/{info,man,doc}/*
839 find /usr/{lib,libexec} -name \*.la -delete
840 rm -rf /tools
841
842 # Backup as root
843 exit # leave chroot
844 echo $LFS
845 mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
846 umount $LFS/dev/pts
847 umount $LFS/{sys,proc,run,dev}
848 cd $LFS
849 tar -cJpf $HOME/lfs-temp-tools-11.3.tar.xz .
850
851 # Restore as root if required
852 echo $LFS
853 cd $LFS
854 rm -rf ./*
855 tar -xpf $HOME/lfs-temp-tools-11.3.tar.xz
856
857 # Prepare Virtual Kernel File Systems
858 findmnt | grep $LFS
859 mkdir -pv $LFS/{dev,proc,sys,run}
860 mount -v --bind /dev $LFS/dev
861 mount -v --bind /dev/pts $LFS/dev/pts
862 mount -vt proc proc $LFS/proc
863 mount -vt sysfs sysfs $LFS/sys
864 mount -vt tmpfs tmpfs $LFS/run
865 if [ -h $LFS/dev/shm ]; then
866 mkdir -pv $LFS/$(readlink $LFS/dev/shm)
867 else
868 mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
869 fi
870
871 # Enter the chroot env
872 chroot "$LFS" /usr/bin/env -i \
873 HOME=/root \
874 TERM="$TERM" \
875 PS1='(lfs chroot) \u:\w\$ ' \
876 PATH=/usr/bin:/usr/sbin \
877 /bin/bash --login
878
879 # man pages
880 cd /sources/
881 APP=man-pages
882 tar xvif $APP*.xz
883 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
884 make prefix=/usr install
885 cd /sources/
886 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
887
888 # iana
889 cd /sources/
890 APP=iana
891 tar xvif $APP*.gz
892 cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
893
894 cp services protocols /etc
895
896 cd /sources/
897 rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
898
899 # glibc
900 cd /sources/
901 APP=glibc
902 tar xvif $APP*.xz
903 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
904
905 patch -Np1 -i ../glibc-2.37-fhs-1.patch
906 sed '/width -=/s/workend - string/number_length/' \
907 -i stdio-common/vfprintf-process-arg.c
908 mkdir -v build
909 cd build
910
911 echo "rootsbindir=/usr/sbin" > configparms
912 ../configure --prefix=/usr \
913 --disable-werror \
914 --enable-kernel=3.2 \
915 --enable-stack-protector=strong \
916 --with-headers=/usr/include \
917 libc_cv_slibdir=/usr/lib
918
919 make
920 make check
921 touch /etc/ld.so.conf
922
923 sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
924 make install
925 sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
926 cp -v ../nscd/nscd.conf /etc/nscd.conf
927 mkdir -pv /var/cache/nscd
928
929 mkdir -pv /usr/lib/locale
930
931 localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
932
933 localedef -i en_US -f ISO-8859-1 en_US
934 localedef -i en_US -f UTF-8 en_US.UTF-8
935
936 localedef -i pt_PT -f ISO-8859-1 pt_PT
937 localedef -i pt_PT@euro -f ISO-8859-15 pt_PT@euro
938 localedef -i pt_PT -f UTF-8 pt_PT.UTF-8
939
940 make localedata/install-locales
941 localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
942 localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
943
944 cat > /etc/nsswitch.conf << "EOF"
945 passwd: files
946 group: files
947 shadow: files
948
949 hosts: files dns
950 networks: files
951
952 protocols: files
953 services: files
954 ethers: files
955 rpc: files
956 EOF
957
958 tar -xf ../../tzdata2022g.tar.gz
959
960 ZONEINFO=/usr/share/zoneinfo
961 mkdir -pv $ZONEINFO/{posix,right}
962
963 for tz in etcetera southamerica northamerica europe africa antarctica \
964 asia australasia backward; do
965 zic -L /dev/null -d $ZONEINFO ${tz}
966 zic -L /dev/null -d $ZONEINFO/posix ${tz}
967 zic -L leapseconds -d $ZONEINFO/right ${tz}
968 done
969
970 cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
971 zic -d $ZONEINFO -p America/New_York
972 unset ZONEINFO
973
974 echo -e "7\n 37\n 1\n 1\n" | tzselect
975 # 7\n 37\n 1\n 1\n
976 # Europe Portugal Mainland yes
977 ln -sfv /usr/share/zoneinfo/Europe/Portugal /etc/localtime
978
979 cat > /etc/ld.so.conf << "EOF"
980 /usr/local/lib
981 /opt/lib
982 # Add an include directory
983 include /etc/ld.so.conf.d/*.conf
984 EOF
985
986 mkdir -pv /etc/ld.so.conf.d
987 cd /sources/
988 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
989
990 # zlib
991 cd /sources/
992 APP=zlib
993 tar xvif $APP*.xz
994 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
995
996 ./configure --prefix=/usr
997 make
998 make check
999 make install
1000 rm -fv /usr/lib/libz.a
1001
1002 cd /sources/
1003 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
1004
1005 # bzip2
1006 cd /sources/
1007 APP=bzip2
1008 tar xvif $APP*.gz
1009 cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
1010
1011 patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch
1012 sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
1013 sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
1014 make -f Makefile-libbz2_so
1015 make clean
1016 make
1017 make PREFIX=/usr install
1018 cp -av libbz2.so.* /usr/lib
1019 ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so
1020
1021 cp -v bzip2-shared /usr/bin/bzip2
1022 for i in /usr/bin/{bzcat,bunzip2}; do
1023 ln -sfv bzip2 $i
1024 done
1025
1026 rm -fv /usr/lib/libbz2.a
1027
1028 cd /sources/
1029 rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
1030
1031 # xz
1032 cd /sources/
1033 APP=xz
1034 tar xvif $APP*.xz
1035 cd $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
1036
1037 ./configure --prefix=/usr \
1038 --disable-static \
1039 --docdir=/usr/share/doc/xz-5.4.1
1040
1041 make
1042 make check
1043 make install
1044
1045 cd /sources/
1046 rm -rf $(ls $APP*xz | sed 's/\.tar//g' | sed 's/\.xz//g' )
1047
1048 # zstd
1049 cd /sources/
1050 APP=zstd
1051 tar xvif $APP*.gz
1052 cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
1053
1054 make prefix=/usr
1055 make check
1056 make prefix=/usr install
1057 rm -v /usr/lib/libzstd.a
1058
1059 cd /sources/
1060 rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
1061
1062 # file
1063 cd /sources/
1064 APP=file
1065 EXTENSION=gz
1066 tar xvif $APP*.$EXTENSION
1067 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1068
1069 ./configure --prefix=/usr
1070 make
1071 make check
1072 make install
1073
1074 cd /sources/
1075 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1076
1077 # readline
1078 cd /sources/
1079 APP=readline
1080 tar xvif $APP*.gz
1081 cd $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
1082
1083 sed -i '/MV.*old/d' Makefile.in
1084 sed -i '/{OLDSUFF}/c:' support/shlib-install
1085 patch -Np1 -i ../readline-8.2-upstream_fix-1.patch
1086
1087 ./configure --prefix=/usr \
1088 --disable-static \
1089 --with-curses \
1090 --docdir=/usr/share/doc/readline-8.2
1091
1092 make SHLIB_LIBS="-lncursesw"
1093 make SHLIB_LIBS="-lncursesw" install
1094 install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2
1095
1096 cd /sources/
1097 rm -rf $(ls $APP*gz | sed 's/\.tar//g' | sed 's/\.gz//g' )
1098
1099 # m4
1100 cd /sources/
1101 APP=m4
1102 EXTENSION=xz
1103 tar xvif $APP*.$EXTENSION
1104 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1105
1106 ./configure --prefix=/usr
1107 make
1108 make check
1109 make install
1110
1111 cd /sources/
1112 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1113
1114 # bc
1115 cd /sources/
1116 APP=bc
1117 EXTENSION=xz
1118 tar xvif $APP*.$EXTENSION
1119 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1120
1121 CC=gcc ./configure --prefix=/usr -G -O3 -r
1122 make
1123 make test
1124 make install
1125
1126 cd /sources/
1127 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1128
1129 # flex
1130 cd /sources/
1131 APP=flex
1132 EXTENSION=gz
1133 tar xvif $APP*.$EXTENSION
1134 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1135
1136 ./configure --prefix=/usr \
1137 --docdir=/usr/share/doc/flex-2.6.4 \
1138 --disable-static
1139
1140 make
1141 make check
1142 make install
1143 ln -sv flex /usr/bin/lex
1144
1145 cd /sources/
1146 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1147
1148 # tcl
1149 cd /sources/
1150 APP=tcl8.6.13-src
1151 EXTENSION=gz
1152 FOLDER=tcl8.6.13
1153 tar xvzf $APP*.$EXTENSION
1154 cd $FOLDER
1155
1156 SRCDIR=$(pwd)
1157 cd unix
1158 ./configure --prefix=/usr \
1159 --mandir=/usr/share/man
1160
1161 make
1162 sed -e "s|$SRCDIR/unix|/usr/lib|" \
1163 -e "s|$SRCDIR|/usr/include|" \
1164 -i tclConfig.sh
1165
1166 sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \
1167 -e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|" \
1168 -e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \
1169 -e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|" \
1170 -i pkgs/tdbc1.1.5/tdbcConfig.sh
1171
1172 sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \
1173 -e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|" \
1174 -e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|" \
1175 -i pkgs/itcl4.2.3/itclConfig.sh
1176
1177 unset SRCDIR
1178
1179 make test
1180 make install
1181
1182 chmod -v u+w /usr/lib/libtcl8.6.so
1183
1184 make install-private-headers
1185 ln -sfv tclsh8.6 /usr/bin/tclsh
1186 mv /usr/share/man/man3/{Thread,Tcl_Thread}.3
1187 cd ..
1188 tar -xf ../tcl8.6.13-html.tar.gz --strip-components=1
1189 mkdir -v -p /usr/share/doc/tcl-8.6.13
1190 cp -v -r ./html/* /usr/share/doc/tcl-8.6.13
1191
1192 cd /sources/
1193 rm -rf $FOLDER
1194
1195 # expect
1196 cd /sources/
1197 APP=expect
1198 EXTENSION=gz
1199 tar xvif $APP*.$EXTENSION
1200 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1201
1202 ./configure --prefix=/usr \
1203 --with-tcl=/usr/lib \
1204 --enable-shared \
1205 --mandir=/usr/share/man \
1206 --with-tclinclude=/usr/include
1207
1208 make
1209 make test
1210 make install
1211 ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib
1212
1213 cd /sources/
1214 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1215
1216
1217 # dejagnu
1218 cd /sources/
1219 APP=dejagnu
1220 EXTENSION=gz
1221 tar xvif $APP*.$EXTENSION
1222 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1223
1224 mkdir -v build
1225 cd build
1226
1227 ../configure --prefix=/usr
1228 makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
1229 makeinfo --plaintext -o doc/dejagnu.txt ../doc/dejagnu.texi
1230
1231 make install
1232 install -v -dm755 /usr/share/doc/dejagnu-1.6.3
1233 install -v -m644 doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3
1234
1235 make check
1236
1237 cd /sources/
1238 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1239
1240
1241 # binutils
1242 cd /sources/
1243 APP=binutils
1244 EXTENSION=xz
1245 tar xvif $APP*.$EXTENSION
1246 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1247
1248 expect -c "spawn ls"
1249 mkdir -v build
1250 cd build
1251
1252 ../configure --prefix=/usr \
1253 --sysconfdir=/etc \
1254 --enable-gold \
1255 --enable-ld=default \
1256 --enable-plugins \
1257 --enable-shared \
1258 --disable-werror \
1259 --enable-64-bit-bfd \
1260 --with-system-zlib
1261 make tooldir=/usr
1262
1263 make -k check
1264 grep '^FAIL:' $(find -name '*.log')
1265 # expected to 12 tests fail
1266 grep '^FAIL:' $(find -name '*.log') | wc -l
1267
1268 make tooldir=/usr install
1269 rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,sframe,opcodes}.a
1270 rm -fv /usr/share/man/man1/{gprofng,gp-*}.1
1271
1272 cd /sources/
1273 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1274
1275 # gmp
1276 cd /sources/
1277 APP=gmp
1278 EXTENSION=xz
1279 tar xvif $APP*.$EXTENSION
1280 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1281
1282 cp -v configfsf.guess config.guess
1283 cp -v configfsf.sub config.sub
1284
1285 ./configure --prefix=/usr \
1286 --enable-cxx \
1287 --disable-static \
1288 --docdir=/usr/share/doc/gmp-6.2.1
1289 make
1290 make html
1291 make check 2>&1 | tee gmp-check-log
1292 awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
1293 # check all 197 pass
1294 make install
1295 make install-html
1296
1297 cd /sources/
1298 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1299
1300
1301 # mpfr
1302 cd /sources/
1303 APP=mpfr
1304 EXTENSION=xz
1305 tar xvif $APP*.$EXTENSION
1306 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1307
1308 sed -e 's/+01,234,567/+1,234,567 /' \
1309 -e 's/13.10Pd/13Pd/' \
1310 -i tests/tsprintf.c
1311
1312 ./configure --prefix=/usr \
1313 --disable-static \
1314 --enable-thread-safe \
1315 --docdir=/usr/share/doc/mpfr-4.2.0
1316 make
1317 make html
1318 make check
1319 # ensure that all 197 tests passed
1320 make install
1321 make install-html
1322
1323 cd /sources/
1324 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1325
1326 # mpc
1327 cd /sources/
1328 APP=mpc
1329 EXTENSION=gz
1330 tar xvif $APP*.$EXTENSION
1331 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1332
1333
1334 ./configure --prefix=/usr \
1335 --disable-static \
1336 --docdir=/usr/share/doc/mpc-1.3.1
1337
1338 make
1339 make html
1340 make check
1341 make install
1342 make install-html
1343
1344 cd /sources/
1345 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1346
1347 # attr
1348 cd /sources/
1349 APP=attr
1350 EXTENSION=gz
1351 tar xvif $APP*.$EXTENSION
1352 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1353
1354 ./configure --prefix=/usr \
1355 --disable-static \
1356 --sysconfdir=/etc \
1357 --docdir=/usr/share/doc/attr-2.5.1
1358
1359 make
1360 make check
1361 make install
1362
1363 cd /sources/
1364 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1365
1366 # acl
1367 cd /sources/
1368 APP=acl
1369 EXTENSION=xz
1370 tar xvif $APP*.$EXTENSION
1371 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1372
1373 ./configure --prefix=/usr \
1374 --disable-static \
1375 --docdir=/usr/share/doc/acl-2.3.1
1376
1377 make
1378 make install
1379
1380 cd /sources/
1381 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1382
1383 # libcap
1384 cd /sources/
1385 APP=libcap
1386 EXTENSION=xz
1387 tar xvif $APP*.$EXTENSION
1388 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1389
1390 sed -i '/install -m.*STA/d' libcap/Makefile
1391 make prefix=/usr lib=lib
1392 make test
1393 make prefix=/usr lib=lib install
1394
1395 cd /sources/
1396 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1397
1398 # shadow
1399 cd /sources/
1400 APP=shadow
1401 EXTENSION=xz
1402 tar xvif $APP*.$EXTENSION
1403 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1404
1405 sed -i 's/groups$(EXEEXT) //' src/Makefile.in
1406 find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
1407 find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
1408 find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;
1409
1410 sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \
1411 -e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@' \
1412 -e 's:/var/spool/mail:/var/mail:' \
1413 -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
1414 -i etc/login.defs
1415
1416 # no cracklib support
1417
1418 touch /usr/bin/passwd
1419 ./configure --sysconfdir=/etc \
1420 --disable-static \
1421 --with-group-name-max-length=32
1422
1423 make
1424 make exec_prefix=/usr install
1425 make -C man install-man
1426
1427 pwconv
1428 grpconv
1429 mkdir -p /etc/default
1430 useradd -D --gid 999
1431
1432 sed -i '/MAIL/s/yes/no/' /etc/default/useradd
1433 # input root pwd
1434 passwd root
1435
1436 cd /sources/
1437 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1438
1439 # gcc
1440 cd /sources/
1441 APP=gcc
1442 EXTENSION=xz
1443 tar xvif $APP*.$EXTENSION
1444 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1445
1446 case $(uname -m) in
1447 x86_64)
1448 sed -e '/m64=/s/lib64/lib/' \
1449 -i.orig gcc/config/i386/t-linux64
1450 ;;
1451 esac
1452
1453 mkdir -v build
1454 cd build
1455
1456 ../configure --prefix=/usr \
1457 LD=ld \
1458 --enable-languages=c,c++ \
1459 --enable-default-pie \
1460 --enable-default-ssp \
1461 --disable-multilib \
1462 --disable-bootstrap \
1463 --with-system-zlib
1464
1465 time make # 43 SBU # real 65m28.356s
1466 ulimit -s 32768
1467 chown -Rv tester .
1468 su tester -c "PATH=$PATH make -k check" # started 16:14
1469 ../contrib/test_summary
1470
1471 make install
1472 chown -v -R root:root \
1473 /usr/lib/gcc/$(gcc -dumpmachine)/12.2.0/include{,-fixed}
1474 ln -svr /usr/bin/cpp /usr/lib
1475 ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/12.2.0/liblto_plugin.so \
1476 /usr/lib/bfd-plugins/
1477
1478 echo 'int main(){}' > dummy.c
1479 cc dummy.c -v -Wl,--verbose &> dummy.log
1480 readelf -l a.out | grep ': /lib'
1481 # should show
1482 # [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
1483
1484 grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log
1485 grep -B4 '^ /usr/include' dummy.log
1486 grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
1487 grep "/lib.*/libc.so.6 " dummy.log
1488 rm -v dummy.c a.out dummy.log
1489
1490 mkdir -pv /usr/share/gdb/auto-load/usr/lib
1491 mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
1492
1493 cd /sources/
1494 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1495
1496 # pkg-config
1497 cd /sources/
1498 APP=pkg-config
1499 EXTENSION=gz
1500 tar xvif $APP*.$EXTENSION
1501 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1502
1503 ./configure --prefix=/usr \
1504 --with-internal-glib \
1505 --disable-host-tool \
1506 --docdir=/usr/share/doc/pkg-config-0.29.2
1507 make
1508 make check
1509 make install
1510
1511 cd /sources/
1512 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1513
1514 # ncurses
1515 cd /sources/
1516 APP=ncurses
1517 EXTENSION=gz
1518 tar xvif $APP*.$EXTENSION
1519 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1520
1521 ./configure --prefix=/usr \
1522 --mandir=/usr/share/man \
1523 --with-shared \
1524 --without-debug \
1525 --without-normal \
1526 --with-cxx-shared \
1527 --enable-pc-files \
1528 --enable-widec \
1529 --with-pkg-config-libdir=/usr/lib/pkgconfig
1530
1531 make
1532 make DESTDIR=$PWD/dest install
1533 install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
1534 rm -v dest/usr/lib/libncursesw.so.6.4
1535 cp -av dest/* /
1536
1537 for lib in ncurses form panel menu ; do
1538 rm -vf /usr/lib/lib${lib}.so
1539 echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
1540 ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
1541 done
1542
1543 rm -vf /usr/lib/libcursesw.so
1544 echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
1545 ln -sfv libncurses.so /usr/lib/libcurses.so
1546
1547 mkdir -pv /usr/share/doc/ncurses-6.4
1548 cp -v -R doc/* /usr/share/doc/ncurses-6.4
1549
1550 cd /sources/
1551 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1552
1553 # sed
1554 cd /sources/
1555 APP=sed
1556 EXTENSION=xz
1557 tar xvif $APP*.$EXTENSION
1558 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1559
1560 ./configure --prefix=/usr
1561
1562 make
1563 make html
1564 chown -Rv tester .
1565 su tester -c "PATH=$PATH make check"
1566
1567 make install
1568 install -d -m755 /usr/share/doc/sed-4.9
1569 install -m644 doc/sed.html /usr/share/doc/sed-4.9
1570
1571 cd /sources/
1572 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1573
1574 # psmisc
1575 cd /sources/
1576 APP=psmisc
1577 EXTENSION=xz
1578 tar xvif $APP*.$EXTENSION
1579 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1580
1581 ./configure --prefix=/usr
1582 make
1583 make install
1584
1585 cd /sources/
1586 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1587
1588 # gettext
1589 cd /sources/
1590 APP=gettext
1591 EXTENSION=xz
1592 tar xvif $APP*.$EXTENSION
1593 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1594
1595 ./configure --prefix=/usr \
1596 --disable-static \
1597 --docdir=/usr/share/doc/gettext-0.21.1
1598
1599 make
1600 make check
1601 make install
1602 chmod -v 0755 /usr/lib/preloadable_libintl.so
1603
1604 cd /sources/
1605 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1606
1607 # bison
1608 cd /sources/
1609 APP=bison
1610 EXTENSION=xz
1611 tar xvif $APP*.$EXTENSION
1612 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1613
1614 ./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
1615 make
1616 make check
1617 make install
1618
1619 cd /sources/
1620 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1621
1622 # grep
1623 cd /sources/
1624 APP=grep
1625 EXTENSION=xz
1626 tar xvif $APP*.$EXTENSION
1627 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1628
1629 sed -i "s/echo/#echo/" src/egrep.sh
1630 ./configure --prefix=/usr
1631 make
1632 make check
1633 make install
1634
1635 cd /sources/
1636 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1637
1638 # bash
1639 cd /sources/
1640 APP=bash
1641 EXTENSION=gz
1642 tar xvif $APP*.$EXTENSION
1643 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1644
1645 ./configure --prefix=/usr \
1646 --without-bash-malloc \
1647 --with-installed-readline \
1648 --docdir=/usr/share/doc/bash-5.2.15
1649
1650 make
1651 chown -Rv tester .
1652 su -s /usr/bin/expect tester << EOF
1653 set timeout -1
1654 spawn make tests
1655 expect eof
1656 lassign [wait] _ _ _ value
1657 exit $value
1658 EOF
1659
1660 make install
1661 exec /usr/bin/bash --login
1662
1663 cd /sources/
1664 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1665
1666 # libtool
1667 cd /sources/
1668 APP=libtool
1669 EXTENSION=xz
1670 tar xvif $APP*.$EXTENSION
1671 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1672
1673 ./configure --prefix=/usr
1674 make
1675 make -k check
1676 make install
1677 rm -fv /usr/lib/libltdl.a
1678
1679 cd /sources/
1680 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1681
1682 # gdbm
1683 cd /sources/
1684 APP=gdbm
1685 EXTENSION=gz
1686 tar xvif $APP*.$EXTENSION
1687 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1688
1689 ./configure --prefix=/usr \
1690 --disable-static \
1691 --enable-libgdbm-compat
1692
1693 make
1694 make check
1695 make install
1696
1697 cd /sources/
1698 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1699
1700 # gperf
1701 cd /sources/
1702 APP=gperf
1703 EXTENSION=gz
1704 tar xvif $APP*.$EXTENSION
1705 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1706
1707 ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
1708 make
1709 make -j1 check
1710 make install
1711
1712 cd /sources/
1713 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1714
1715 # expat
1716 cd /sources/
1717 APP=expat
1718 EXTENSION=xz
1719 tar xvif $APP*.$EXTENSION
1720 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1721
1722 ./configure --prefix=/usr \
1723 --disable-static \
1724 --docdir=/usr/share/doc/expat-2.5.0
1725
1726 make
1727 make check
1728 make install
1729 install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.5.0
1730
1731 cd /sources/
1732 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1733
1734 # inetutils
1735 cd /sources/
1736 APP=inetutils
1737 EXTENSION=xz
1738 tar xvif $APP*.$EXTENSION
1739 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1740
1741 ./configure --prefix=/usr \
1742 --bindir=/usr/bin \
1743 --localstatedir=/var \
1744 --disable-logger \
1745 --disable-whois \
1746 --disable-rcp \
1747 --disable-rexec \
1748 --disable-rlogin \
1749 --disable-rsh \
1750 --disable-servers
1751
1752 make
1753 make check
1754 make install
1755 mv -v /usr/{,s}bin/ifconfig
1756 cd /sources/
1757 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1758
1759 # less
1760 cd /sources/
1761 APP=less
1762 EXTENSION=gz
1763 tar xvif $APP*.$EXTENSION
1764 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1765
1766 ./configure --prefix=/usr --sysconfdir=/etc
1767 make
1768 make install
1769
1770 cd /sources/
1771 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1772
1773 # perl
1774 cd /sources/
1775 APP=perl
1776 EXTENSION=xz
1777 tar xvif $APP*.$EXTENSION
1778 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1779
1780 export BUILD_ZLIB=False
1781 export BUILD_BZIP2=0
1782
1783 sh Configure -des \
1784 -Dprefix=/usr \
1785 -Dvendorprefix=/usr \
1786 -Dprivlib=/usr/lib/perl5/5.36/core_perl \
1787 -Darchlib=/usr/lib/perl5/5.36/core_perl \
1788 -Dsitelib=/usr/lib/perl5/5.36/site_perl \
1789 -Dsitearch=/usr/lib/perl5/5.36/site_perl \
1790 -Dvendorlib=/usr/lib/perl5/5.36/vendor_perl \
1791 -Dvendorarch=/usr/lib/perl5/5.36/vendor_perl \
1792 -Dman1dir=/usr/share/man/man1 \
1793 -Dman3dir=/usr/share/man/man3 \
1794 -Dpager="/usr/bin/less -isR" \
1795 -Duseshrplib \
1796 -Dusethreads
1797 make
1798 make test
1799 make install
1800 unset BUILD_ZLIB BUILD_BZIP2
1801
1802 cd /sources/
1803 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1804
1805 # XML-Parser
1806 cd /sources/
1807 APP=XML-Parser
1808 EXTENSION=gz
1809 tar xvif $APP*.$EXTENSION
1810 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1811
1812 perl Makefile.PL
1813 make
1814 make test
1815 make install
1816
1817 cd /sources/
1818 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1819
1820 # intltool-0.51.0.tar.gz
1821 cd /sources/
1822 APP=intltool
1823 EXTENSION=gz
1824 tar xvif $APP*.$EXTENSION
1825 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1826
1827 sed -i 's:\\\${:\\\$\\{:' intltool-update.in
1828 ./configure --prefix=/usr
1829 make
1830 make check
1831 make install
1832 install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
1833
1834 cd /sources/
1835 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1836
1837 # autoconf-2.71.tar.xz
1838 cd /sources/
1839 APP=autoconf
1840 EXTENSION=xz
1841 tar xvif $APP*.$EXTENSION
1842 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1843
1844 sed -e 's/SECONDS|/&SHLVL|/' \
1845 -e '/BASH_ARGV=/a\ /^SHLVL=/ d' \
1846 -i.orig tests/local.at
1847
1848 ./configure --prefix=/usr
1849 make
1850 make check
1851 make install
1852
1853 cd /sources/
1854 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1855
1856 # automake-1.16.5.tar.xz
1857 cd /sources/
1858 APP=automake
1859 EXTENSION=xz
1860 tar xvif $APP*.$EXTENSION
1861 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1862
1863 ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5
1864
1865 make
1866 make -j4 check
1867 make install
1868
1869 cd /sources/
1870 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1871
1872 # openssl-3.0.8.tar.gz
1873 cd /sources/
1874 APP=openssl
1875 EXTENSION=gz
1876 tar xvif $APP*.$EXTENSION
1877 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1878
1879 ./config --prefix=/usr \
1880 --openssldir=/etc/ssl \
1881 --libdir=lib \
1882 shared \
1883 zlib-dynamic
1884
1885 make
1886 make test
1887 sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
1888 make MANSUFFIX=ssl install
1889 mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.0.8
1890 cp -vfr doc/* /usr/share/doc/openssl-3.0.8
1891
1892 cd /sources/
1893 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1894
1895 # kmod-30.tar.xz
1896 cd /sources/
1897 APP=kmod
1898 EXTENSION=xz
1899 tar xvif $APP*.$EXTENSION
1900 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1901
1902 ./configure --prefix=/usr \
1903 --sysconfdir=/etc \
1904 --with-openssl \
1905 --with-xz \
1906 --with-zstd \
1907 --with-zlib
1908
1909 make
1910 make install
1911
1912 for target in depmod insmod modinfo modprobe rmmod; do
1913 ln -sfv ../bin/kmod /usr/sbin/$target
1914 done
1915
1916 ln -sfv kmod /usr/bin/lsmod
1917
1918 cd /sources/
1919 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1920
1921 # elfutils-0.188.tar.bz2
1922 cd /sources/
1923 APP=elfutils
1924 EXTENSION=bz2
1925 tar xvif $APP*.$EXTENSION
1926 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1927
1928 ./configure --prefix=/usr \
1929 --disable-debuginfod \
1930 --enable-libdebuginfod=dummy
1931
1932 make
1933 make check
1934 make -C libelf install
1935 install -vm644 config/libelf.pc /usr/lib/pkgconfig
1936 rm /usr/lib/libelf.a
1937
1938 cd /sources/
1939 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1940
1941 # libffi-3.4.4.tar.gz
1942 cd /sources/
1943 APP=libffi
1944 EXTENSION=gz
1945 tar xvzf $APP*.$EXTENSION
1946 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1947
1948 ./configure --prefix=/usr \
1949 --disable-static \
1950 --with-gcc-arch=native
1951
1952 make
1953 make check
1954 make install
1955
1956 cd /sources/
1957 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1958
1959 # Python-3.11.2.tar.xz
1960 cd /sources/
1961 APP=Python-3
1962 EXTENSION=xz
1963 tar xvif $APP*.$EXTENSION
1964 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1965
1966 ./configure --prefix=/usr \
1967 --enable-shared \
1968 --with-system-expat \
1969 --with-system-ffi \
1970 --enable-optimizations
1971
1972 make
1973 make install
1974
1975 cat > /etc/pip.conf << "EOF"
1976 [global]
1977 root-user-action = ignore
1978 disable-pip-version-check = true
1979 EOF
1980
1981 install -v -dm755 /usr/share/doc/python-3.11.2/html
1982
1983 tar --strip-components=1 \
1984 --no-same-owner \
1985 --no-same-permissions \
1986 -C /usr/share/doc/python-3.11.2/html \
1987 -xvf ../python-3.11.2-docs-html.tar.bz2
1988
1989 cd /sources/
1990 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1991
1992 # wheel-0.38.4.tar.gz
1993 cd /sources/
1994 APP=wheel
1995 EXTENSION=gz
1996 tar xvzf $APP*.$EXTENSION
1997 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
1998
1999 PYTHONPATH=src pip3 wheel -w dist --no-build-isolation --no-deps $PWD
2000 pip3 install --no-index --find-links=dist wheel
2001
2002 cd /sources/
2003 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2004
2005 # ninja-1.11.1.tar.gz
2006 cd /sources/
2007 APP=ninja
2008 EXTENSION=gz
2009 tar xvzf $APP*.$EXTENSION
2010 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2011
2012 export NINJAJOBS=4
2013
2014 sed -i '/int Guess/a \
2015 int j = 0;\
2016 char* jobs = getenv( "NINJAJOBS" );\
2017 if ( jobs != NULL ) j = atoi( jobs );\
2018 if ( j > 0 ) return j;\
2019 ' src/ninja.cc
2020
2021 python3 configure.py --bootstrap
2022
2023 ./ninja ninja_test
2024 ./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
2025
2026 install -vm755 ninja /usr/bin/
2027 install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
2028 install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja
2029
2030 cd /sources/
2031 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2032
2033 # meson-1.0.0.tar.gz
2034 cd /sources/
2035 APP=meson
2036 EXTENSION=gz
2037 tar xvzf $APP*.$EXTENSION
2038 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2039
2040 pip3 wheel -w dist --no-build-isolation --no-deps $PWD
2041 pip3 install --no-index --find-links dist meson
2042 install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
2043 install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson
2044
2045 cd /sources/
2046 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2047
2048 # coreutils-9.1.tar.xz
2049 cd /sources/
2050 APP=coreutils
2051 EXTENSION=xz
2052 tar xvif $APP*.$EXTENSION
2053 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2054
2055 patch -Np1 -i ../coreutils-9.1-i18n-1.patch
2056
2057 autoreconf -fiv
2058 FORCE_UNSAFE_CONFIGURE=1 ./configure \
2059 --prefix=/usr \
2060 --enable-no-install-program=kill,uptime
2061
2062 make
2063 make NON_ROOT_USERNAME=tester check-root
2064
2065 echo "dummy:x:102:tester" >> /etc/group
2066
2067 chown -Rv tester .
2068 su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
2069 sed -i '/dummy/d' /etc/group
2070
2071 make install
2072
2073 mv -v /usr/bin/chroot /usr/sbin
2074 mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
2075 sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8
2076
2077 cd /sources/
2078 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2079
2080 # check-0.15.2.tar.gz
2081 cd /sources/
2082 APP=check
2083 EXTENSION=gz
2084 tar xvzf $APP*.$EXTENSION
2085 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2086
2087
2088 ./configure --prefix=/usr --disable-static
2089
2090 make
2091 make check
2092 make docdir=/usr/share/doc/check-0.15.2 install
2093
2094 cd /sources/
2095 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2096
2097 # diffutils-3.9.tar.xz
2098 cd /sources/
2099 APP=diffutils
2100 EXTENSION=xz
2101 tar xvif $APP*.$EXTENSION
2102 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2103
2104 ./configure --prefix=/usr
2105 make
2106 make check
2107 make install
2108
2109 cd /sources/
2110 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2111
2112 # gawk-5.2.1.tar.xz
2113 cd /sources/
2114 APP=gawk
2115 EXTENSION=xz
2116 tar xvif $APP*.$EXTENSION
2117 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2118
2119 sed -i 's/extras//' Makefile.in
2120 ./configure --prefix=/usr
2121 make
2122 make check
2123 make LN='ln -f' install
2124 mkdir -pv /usr/share/doc/gawk-5.2.1
2125 cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.2.1
2126
2127 cd /sources/
2128 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2129
2130 # findutils-4.9.0.tar.xz
2131 cd /sources/
2132 APP=findutils
2133 EXTENSION=xz
2134 tar xvif $APP*.$EXTENSION
2135 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2136
2137 case $(uname -m) in
2138 i?86) TIME_T_32_BIT_OK=yes ./configure --prefix=/usr --localstatedir=/var/lib/locate ;;
2139 x86_64) ./configure --prefix=/usr --localstatedir=/var/lib/locate ;;
2140 esac
2141
2142 make
2143 chown -Rv tester .
2144 su tester -c "PATH=$PATH make check"
2145 make install
2146
2147 cd /sources/
2148 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2149
2150 # groff-1.22.4.tar.gz
2151 cd /sources/
2152 APP=groff
2153 EXTENSION=gz
2154 tar xvzf $APP*.$EXTENSION
2155 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2156
2157 PAGE=A4 ./configure --prefix=/usr
2158
2159 make
2160 make install
2161
2162 cd /sources/
2163 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2164
2165 # grub-2.06.tar.xz
2166 cd /sources/
2167 APP=grub
2168 EXTENSION=xz
2169 tar xvif $APP*.$EXTENSION
2170 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2171
2172 unset {C,CPP,CXX,LD}FLAGS
2173 patch -Np1 -i ../grub-2.06-upstream_fixes-1.patch
2174
2175 ./configure --prefix=/usr \
2176 --sysconfdir=/etc \
2177 --disable-efiemu \
2178 --disable-werror
2179
2180 make
2181 make install
2182 mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
2183
2184 cd /sources/
2185 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2186
2187 # gzip-1.12.tar.xz
2188 cd /sources/
2189 APP=gzip
2190 EXTENSION=xz
2191 tar xvif $APP*.$EXTENSION
2192 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2193
2194 ./configure --prefix=/usr
2195 make
2196 make check
2197 make install
2198
2199 cd /sources/
2200 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2201
2202 # iproute2-6.1.0.tar.xz
2203 cd /sources/
2204 APP=iproute2
2205 EXTENSION=xz
2206 tar xvif $APP*.$EXTENSION
2207 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2208
2209 sed -i /ARPD/d Makefile
2210 rm -fv man/man8/arpd.8
2211
2212 make NETNS_RUN_DIR=/run/netns
2213 make SBINDIR=/usr/sbin install
2214 mkdir -pv /usr/share/doc/iproute2-6.1.0
2215 cp -v COPYING README* /usr/share/doc/iproute2-6.1.0
2216
2217 cd /sources/
2218 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2219
2220 # kbd-2.5.1.tar.xz
2221 cd /sources/
2222 APP=kbd
2223 EXTENSION=xz
2224 tar xvif $APP*.$EXTENSION
2225 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2226
2227 patch -Np1 -i ../kbd-2.5.1-backspace-1.patch
2228
2229 sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure
2230 sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
2231
2232 ./configure --prefix=/usr --disable-vlock
2233
2234 make
2235 make check
2236 make install
2237
2238 mkdir -pv /usr/share/doc/kbd-2.5.1
2239 cp -R -v docs/doc/* /usr/share/doc/kbd-2.5.1
2240
2241 cd /sources/
2242 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2243
2244 # libpipeline-1.5.7.tar.gz
2245 cd /sources/
2246 APP=libpipeline
2247 EXTENSION=gz
2248 tar xvzf $APP*.$EXTENSION
2249 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2250
2251 ./configure --prefix=/usr
2252 make
2253 make check
2254 make install
2255
2256 cd /sources/
2257 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2258
2259 # make-4.4.tar.gz
2260 cd /sources/
2261 APP=make
2262 EXTENSION=gz
2263 tar xvzf $APP*.$EXTENSION
2264 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2265
2266 sed -e '/ifdef SIGPIPE/,+2 d' \
2267 -e '/undef FATAL_SIG/i FATAL_SIG (SIGPIPE);' \
2268 -i src/main.c
2269
2270 ./configure --prefix=/usr
2271 make
2272 make check
2273 make install
2274
2275 cd /sources/
2276 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2277
2278 # patch-2.7.6.tar.xz
2279 cd /sources/
2280 APP=patch
2281 EXTENSION=xz
2282 tar xvif $APP*.$EXTENSION
2283 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2284
2285 ./configure --prefix=/usr
2286 make
2287 make check
2288 make install
2289
2290 cd /sources/
2291 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2292
2293 # tar-1.34.tar.xz
2294 cd /sources/
2295 APP=tar
2296 EXTENSION=xz
2297 tar xvif $APP*.$EXTENSION
2298 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2299
2300 FORCE_UNSAFE_CONFIGURE=1 \
2301 ./configure --prefix=/usr
2302
2303 make
2304 make check
2305 make install
2306 make -C doc install-html docdir=/usr/share/doc/tar-1.34
2307
2308 cd /sources/
2309 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2310
2311 # texinfo-7.0.2.tar.xz
2312 cd /sources/
2313 APP=texinfo
2314 EXTENSION=xz
2315 tar xvif $APP*.$EXTENSION
2316 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2317
2318 ./configure --prefix=/usr
2319 make
2320 make check
2321 make install
2322 make TEXMF=/usr/share/texmf install-tex
2323
2324 cd /sources/
2325 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2326
2327 # vim-9.0.1273.tar.xz
2328 cd /sources/
2329 APP=vim
2330 EXTENSION=xz
2331 tar xvif $APP*.$EXTENSION
2332 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2333
2334 echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
2335 ./configure --prefix=/usr
2336 make
2337 chown -Rv tester .
2338 su tester -c "LANG=en_US.UTF-8 make -j1 test" &> vim-test.log
2339 make install
2340
2341 ln -sv vim /usr/bin/vi
2342 for L in /usr/share/man/{,*/}man1/vim.1; do
2343 ln -sv vim.1 $(dirname $L)/vi.1
2344 done
2345
2346 ln -sv ../vim/vim90/doc /usr/share/doc/vim-9.0.1273
2347
2348 cat > /etc/vimrc << "EOF"
2349 " Begin /etc/vimrc
2350
2351 " Ensure defaults are set before customizing settings, not after
2352 source $VIMRUNTIME/defaults.vim
2353 let skip_defaults_vim=1
2354
2355 set nocompatible
2356 set backspace=2
2357 set mouse=
2358 syntax on
2359 if (&term == "xterm") || (&term == "putty")
2360 set background=dark
2361 endif
2362
2363 " End /etc/vimrc
2364 EOF
2365
2366 cd /sources/
2367 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2368
2369 # eudev-3.2.11.tar.gz
2370 cd /sources/
2371 APP=eudev
2372 EXTENSION=gz
2373 tar xvzf $APP*.$EXTENSION
2374 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2375
2376 sed -i '/udevdir/a udev_dir=${udevdir}' src/udev/udev.pc.in
2377 ./configure --prefix=/usr \
2378 --bindir=/usr/sbin \
2379 --sysconfdir=/etc \
2380 --enable-manpages \
2381 --disable-static
2382
2383 make
2384 mkdir -pv /usr/lib/udev/rules.d
2385 mkdir -pv /etc/udev/rules.d
2386
2387 make check
2388 make install
2389
2390 tar -xvf ../udev-lfs-20171102.tar.xz
2391 make -f udev-lfs-20171102/Makefile.lfs install
2392
2393 udevadm hwdb --update
2394
2395 cd /sources/
2396 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2397
2398 # man-db-2.11.2.tar.xz
2399 cd /sources/
2400 APP=man-db
2401 EXTENSION=xz
2402 tar xvif $APP*.$EXTENSION
2403 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2404
2405 ./configure --prefix=/usr \
2406 --docdir=/usr/share/doc/man-db-2.11.2 \
2407 --sysconfdir=/etc \
2408 --disable-setuid \
2409 --enable-cache-owner=bin \
2410 --with-browser=/usr/bin/lynx \
2411 --with-vgrind=/usr/bin/vgrind \
2412 --with-grap=/usr/bin/grap \
2413 --with-systemdtmpfilesdir= \
2414 --with-systemdsystemunitdir=
2415 make
2416 make check
2417 make install
2418
2419 cd /sources/
2420 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2421
2422 # procps-ng-4.0.2.tar.xz
2423 cd /sources/
2424 APP=procps
2425 EXTENSION=xz
2426 tar xvif $APP*.$EXTENSION
2427 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2428
2429 ./configure --prefix=/usr \
2430 --docdir=/usr/share/doc/procps-ng-4.0.2 \
2431 --disable-static \
2432 --disable-kill
2433
2434 make
2435 make check
2436 make install
2437
2438 cd /sources/
2439 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2440
2441 # util-linux-2.38.1.tar.xz
2442 cd /sources/
2443 APP=util-linux
2444 EXTENSION=xz
2445 tar xvif $APP*.$EXTENSION
2446 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2447
2448 ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
2449 --bindir=/usr/bin \
2450 --libdir=/usr/lib \
2451 --sbindir=/usr/sbin \
2452 --disable-chfn-chsh \
2453 --disable-login \
2454 --disable-nologin \
2455 --disable-su \
2456 --disable-setpriv \
2457 --disable-runuser \
2458 --disable-pylibmount \
2459 --disable-static \
2460 --without-python \
2461 --without-systemd \
2462 --without-systemdsystemunitdir \
2463 --docdir=/usr/share/doc/util-linux-2.38.1
2464
2465 make
2466 chown -Rv tester .
2467 su tester -c "make -k check"
2468 make install
2469
2470 cd /sources/
2471 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2472
2473 # e2fsprogs-1.47.0.tar.gz
2474 cd /sources/
2475 APP=e2fsprogs
2476 EXTENSION=gz
2477 tar xvzf $APP*.$EXTENSION
2478 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2479
2480 mkdir -v build
2481 cd build
2482
2483 ../configure --prefix=/usr \
2484 --sysconfdir=/etc \
2485 --enable-elf-shlibs \
2486 --disable-libblkid \
2487 --disable-libuuid \
2488 --disable-uuidd \
2489 --disable-fsck
2490
2491 make
2492 make check
2493 make install
2494 rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
2495 gunzip -v /usr/share/info/libext2fs.info.gz
2496 install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
2497 makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo
2498 install -v -m644 doc/com_err.info /usr/share/info
2499 install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info
2500 sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf
2501
2502 cd /sources/
2503 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2504
2505 # sysklogd-1.5.1.tar.gz
2506 cd /sources/
2507 APP=sysklogd
2508 EXTENSION=gz
2509 tar xvzf $APP*.$EXTENSION
2510 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2511
2512 sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
2513 sed -i 's/union wait/int/' syslogd.c
2514
2515 make
2516 make BINDIR=/sbin install
2517
2518 cat > /etc/syslog.conf << "EOF"
2519 auth,authpriv.* -/var/log/auth.log
2520 *.*;auth,authpriv.none -/var/log/sys.log
2521 daemon.* -/var/log/daemon.log
2522 kern.* -/var/log/kern.log
2523 mail.* -/var/log/mail.log
2524 user.* -/var/log/user.log
2525 *.emerg *
2526 EOF
2527
2528 cd /sources/
2529 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2530
2531 # sysvinit-3.06.tar.xz
2532 cd /sources/
2533 APP=sysvinit
2534 EXTENSION=xz
2535 tar xvif $APP*.$EXTENSION
2536 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2537
2538 patch -Np1 -i ../sysvinit-3.06-consolidated-1.patch
2539 make
2540 make install
2541
2542 cd /sources/
2543 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2544
2545 # Stripping
2546 save_usrlib="$(cd /usr/lib; ls ld-linux*[^g])
2547 libc.so.6
2548 libthread_db.so.1
2549 libquadmath.so.0.0.0
2550 libstdc++.so.6.0.30
2551 libitm.so.1.0.0
2552 libatomic.so.1.2.0"
2553
2554 cd /usr/lib
2555
2556 for LIB in $save_usrlib; do
2557 objcopy --only-keep-debug $LIB $LIB.dbg
2558 cp $LIB /tmp/$LIB
2559 strip --strip-unneeded /tmp/$LIB
2560 objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
2561 install -vm755 /tmp/$LIB /usr/lib
2562 rm /tmp/$LIB
2563 done
2564
2565 online_usrbin="bash find strip"
2566 online_usrlib="libbfd-2.40.so
2567 libsframe.so.0.0.0
2568 libhistory.so.8.2
2569 libncursesw.so.6.4
2570 libm.so.6
2571 libreadline.so.8.2
2572 libz.so.1.2.13
2573 $(cd /usr/lib; find libnss*.so* -type f)"
2574
2575 for BIN in $online_usrbin; do
2576 cp /usr/bin/$BIN /tmp/$BIN
2577 strip --strip-unneeded /tmp/$BIN
2578 install -vm755 /tmp/$BIN /usr/bin
2579 rm /tmp/$BIN
2580 done
2581
2582 for LIB in $online_usrlib; do
2583 cp /usr/lib/$LIB /tmp/$LIB
2584 strip --strip-unneeded /tmp/$LIB
2585 install -vm755 /tmp/$LIB /usr/lib
2586 rm /tmp/$LIB
2587 done
2588
2589 for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
2590 $(find /usr/lib -type f -name \*.a) \
2591 $(find /usr/{bin,sbin,libexec} -type f); do
2592 case "$online_usrbin $online_usrlib $save_usrlib" in
2593 *$(basename $i)* )
2594 ;;
2595 * ) strip --strip-unneeded $i
2596 ;;
2597 esac
2598 done
2599
2600 unset BIN LIB save_usrlib online_usrbin online_usrlib
2601
2602 # Cleaning Up
2603 rm -rf /tmp/*
2604 find /usr/lib /usr/libexec -name \*.la -delete
2605 find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf
2606 userdel -r tester
2607
2608 # lfs-bootscripts-20230101.tar.xz
2609 cd /sources/
2610 APP=lfs-bootscripts
2611 EXTENSION=xz
2612 tar xvif $APP*.$EXTENSION
2613 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2614
2615 make install
2616
2617 cd /sources/
2618 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2619
2620 bash /usr/lib/udev/init-net-rules.sh
2621 cat /etc/udev/rules.d/70-persistent-net.rules
2622
2623 cat > /etc/sysconfig/ifconfig.eth0 << "EOF"
2624 ONBOOT=yes
2625 IFACE=eth0
2626 SERVICE=ipv4-static
2627 IP=192.168.1.2
2628 GATEWAY=192.168.1.1
2629 PREFIX=24
2630 BROADCAST=192.168.1.255
2631 EOF
2632
2633 cat > /etc/resolv.conf << "EOF"
2634 domain <Your Domain Name>
2635 nameserver <IP address of your primary nameserver>
2636 nameserver <IP address of your secondary nameserver>
2637 EOF
2638
2639 echo "vitux" > /etc/hostname
2640
2641 cat > /etc/hosts << "EOF"
2642 127.0.0.1 localhost.localdomain localhost
2643 127.0.1.1 vitux.bitarus.mooo.com
2644 ::1 localhost ip6-localhost ip6-loopback
2645 ff02::1 ip6-allnodes
2646 ff02::2 ip6-allrouters
2647 EOF
2648
2649 cat > /etc/inittab << "EOF"
2650 id:3:initdefault:
2651 si::sysinit:/etc/rc.d/init.d/rc S
2652 l0:0:wait:/etc/rc.d/init.d/rc 0
2653 l1:S1:wait:/etc/rc.d/init.d/rc 1
2654 l2:2:wait:/etc/rc.d/init.d/rc 2
2655 l3:3:wait:/etc/rc.d/init.d/rc 3
2656 l4:4:wait:/etc/rc.d/init.d/rc 4
2657 l5:5:wait:/etc/rc.d/init.d/rc 5
2658 l6:6:wait:/etc/rc.d/init.d/rc 6
2659 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
2660 su:S06:once:/sbin/sulogin
2661 s1:1:respawn:/sbin/sulogin
2662 1:2345:respawn:/sbin/agetty --noclear tty1 9600
2663 2:2345:respawn:/sbin/agetty tty2 9600
2664 3:2345:respawn:/sbin/agetty tty3 9600
2665 4:2345:respawn:/sbin/agetty tty4 9600
2666 5:2345:respawn:/sbin/agetty tty5 9600
2667 6:2345:respawn:/sbin/agetty tty6 9600
2668 EOF
2669
2670 cat > /etc/sysconfig/clock << "EOF"
2671 UTC=1
2672 # Set this to any options you might need to give to hwclock,
2673 # such as machine hardware clock type for Alphas.
2674 CLOCKPARAMS=
2675 EOF
2676
2677 cat > /etc/sysconfig/console << "EOF"
2678 KEYMAP="pt-latin1"
2679 FONT="lat1-16 -m 8859-1"
2680 UNICODE="1"
2681 EOF
2682
2683 locale -a
2684 locale -a | grep -i pt
2685 kk_KZ.pt154
2686 pt_BR
2687 pt_BR.iso88591
2688 pt_BR.utf8
2689 pt_PT
2690 pt_PT.iso88591
2691 pt_PT.iso885915@euro
2692 pt_PT.utf8
2693 pt_PT@euro
2694
2695 cat > /etc/profile << "EOF"
2696 export LANG=pt_PT.utf8
2697 EOF
2698
2699 cat > /etc/inputrc << "EOF"
2700 # Modified by Chris Lynn <roryo@roryo.dynup.net>
2701 # Allow the command prompt to wrap to the next line
2702 set horizontal-scroll-mode Off
2703 # Enable 8-bit input
2704 set meta-flag On
2705 set input-meta On
2706 # Turns off 8th bit stripping
2707 set convert-meta Off
2708 # Keep the 8th bit for display
2709 set output-meta On
2710 # none, visible or audible
2711 set bell-style none
2712 # All of the following map the escape sequence of the value
2713 # contained in the 1st argument to the readline specific functions
2714 "\eOd": backward-word
2715 "\eOc": forward-word
2716 # for linux console
2717 "\e[1~": beginning-of-line
2718 "\e[4~": end-of-line
2719 "\e[5~": beginning-of-history
2720 "\e[6~": end-of-history
2721 "\e[3~": delete-char
2722 "\e[2~": quoted-insert
2723 # for xterm
2724 "\eOH": beginning-of-line
2725 "\eOF": end-of-line
2726 # for Konsole
2727 "\e[H": beginning-of-line
2728 "\e[F": end-of-line
2729 EOF
2730
2731 cat > /etc/shells << "EOF"
2732 /bin/sh
2733 /bin/bash
2734 EOF
2735
2736 cat > /etc/fstab << "EOF"
2737 # file system mount-point type options dump fsck
2738 # order
2739
2740 /dev/<xxx> / <fff> defaults 1 1
2741 /dev/<yyy> swap swap pri=1 0 0
2742 proc /proc proc nosuid,noexec,nodev 0 0
2743 sysfs /sys sysfs nosuid,noexec,nodev 0 0
2744 devpts /dev/pts devpts gid=5,mode=620 0 0
2745 tmpfs /run tmpfs defaults 0 0
2746 devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
2747 tmpfs /dev/shm tmpfs nosuid,nodev 0 0
2748 EOF
2749
2750 # linux-6.1.11.tar.xz
2751 cd /sources/
2752 APP=linux
2753 EXTENSION=xz
2754 tar xvif $APP*.$EXTENSION
2755 cd $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2756
2757 make mrproper
2758 make menuconfig
2759
2760 # Processor type and features --->
2761 # [*] Build a relocatable kernel [CONFIG_RELOCATABLE]
2762 # [*] Randomize the address of the kernel image (KASLR) [CONFIG_RANDOMIZE_BASE]
2763 # General setup --->
2764 # [ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
2765 # < > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
2766 # General architecture-dependent options --->
2767 # [*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
2768 # [*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG]
2769 # Device Drivers --->
2770 # Graphics support --->
2771 # Frame buffer Devices --->
2772 # <*> Support for frame buffer devices --->
2773 # Console display driver support --->
2774 # [*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE]
2775 # Generic Driver Options --->
2776 # [ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
2777 # [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
2778 # [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]
2779 # Processor type and features --->
2780 # [*] Support x2apic [CONFIG_X86_X2APIC]
2781 # Device Drivers --->
2782 # [*] PCI Support ---> [CONFIG_PCI]
2783 # [*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI]
2784 # [*] IOMMU Hardware Support ---> [CONFIG_IOMMU_SUPPORT]
2785 # [*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP]
2786
2787 /sources/linux-6.1.11# find . -name .config
2788 ./.config
2789
2790 cat .config | grep -e CONFIG_IRQ_REMAP -e CONFIG_IOMMU_SUPPORT=y -e CONFIG_PCI_MSI=y -e CONFIG_PCI=y -e CONFIG_X86_X2APIC=y \
2791 -e CONFIG_DEVTMPFS_MOUNT -e CONFIG_DEVTMPFS=y -e CONFIG_UEVENT_HELPER -e CONFIG_FRAMEBUFFER_CONSOLE=y \
2792 -e CONFIG_STACKPROTECTOR=y -e CONFIG_STACKPROTECTOR_STRONG=y -e CONFIG_RELOCATABLE=y -e CONFIG_RANDOMIZE_BASE=y \
2793 -e CONFIG_WERROR -e CONFIG_IKHEADERS
2794
2795 # # CONFIG_WERROR is not set
2796 # # CONFIG_IKHEADERS is not set
2797 # CONFIG_RELOCATABLE=y
2798 # CONFIG_RANDOMIZE_BASE=y
2799 # CONFIG_STACKPROTECTOR=y
2800 # CONFIG_STACKPROTECTOR_STRONG=y
2801 # CONFIG_PCI=y
2802 # CONFIG_PCI_MSI=y
2803 # # CONFIG_UEVENT_HELPER is not set
2804 # CONFIG_DEVTMPFS=y
2805 # CONFIG_DEVTMPFS_MOUNT=y
2806 # CONFIG_FRAMEBUFFER_CONSOLE=y
2807 # CONFIG_IOMMU_SUPPORT=y
2808 # CONFIG_IRQ_REMAP=y
2809
2810 # https://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt
2811
2812 make help
2813 make
2814 make modules_install
2815
2816 cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.1.11-lfs-11.3
2817 cp -iv System.map /boot/System.map-6.1.11
2818 cp -iv .config /boot/config-6.1.11
2819 install -d /usr/share/doc/linux-6.1.11
2820 cp -r Documentation/* /usr/share/doc/linux-6.1.11
2821
2822 install -v -m755 -d /etc/modprobe.d
2823
2824 cat > /etc/modprobe.d/usb.conf << "EOF"
2825 install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
2826 install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
2827 EOF
2828
2829 cd $LFS/sources/
2830 rm -rf $(ls $APP*$EXTENSION | sed 's/\.tar//g' | sed "s/\.$EXTENSION//g" )
2831
2832 echo 11.3 > /etc/lfs-release
2833
2834 cat > /etc/lsb-release << "EOF"
2835 DISTRIB_ID="Linux From Scratch"
2836 DISTRIB_RELEASE="11.3"
2837 DISTRIB_CODENAME="Vitux"
2838 DISTRIB_DESCRIPTION="Linux From Scratch"
2839 EOF
2840
2841 cat > /etc/os-release << "EOF"
2842 NAME="Linux From Scratch"
2843 VERSION="11.3"
2844 ID=lfs
2845 PRETTY_NAME="Linux From Scratch 11.3"
2846 VERSION_CODENAME="Vitux"
2847 EOF
2848
2849 cd / # as chroot
2850 du . -hs
2851 # 2.0G
2852 du sources/ -hs
2853 # 603M sources/
2854 sh version-check.sh
2855
2856 # To make a backup, leave the chroot environment:
2857 exit
2858 mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
2859 umount $LFS/dev/pts
2860 umount $LFS/{sys,proc,run,dev}
2861 LFS=/home/vagrant/lfs
2862 echo $LFS
2863 cd $LFS
2864 time tar -cJpf /root/lfs-build-11.3.tar.xz .
2865 # real 17m18.550s
2866 tar tvaf /root/lfs-build-11.3.tar.xz
2867 # -p, --preserve-permissions
2868 # -f, --file=ARCHIVE
2869 # -J, --xz Filter the archive through xz
2870
2871 scp lfs*xz xyz@xyz.com:/media/LFS/
2872
2873 # Add partition to host lfs build
2874
2875 ## add dymamic disk 8 GB to debian vagrant ....
2876 vagrant halt
2877 ## settings storage sata add hard disk
2878 ## create VDI dynamically allocated with 8 GB
2879 vagrant up
2880 ## sd 2:0:0:0: [sdb] 16777216 512-byte logical blocks: (8.59 GB/8.00 GiB)
2881 sudo cfdisk /dev/sdb
2882 ## label type gpt
2883 ## new 8GB linux fs
2884 ## write yes quit
2885 sudo mkfs -v -t ext4 /dev/sdb1
2886 export LFS=/mnt/lfs
2887 sudo mkdir -pv $LFS
2888 sudo mount -v -t ext4 /dev/sdb1 $LFS
2889 sudo bash
2890
2891 cat >>/etc/fstab << "EOF"
2892 /dev/sdb1 /mnt/lfs ext4 defaults 1 1
2893 EOF
2894
2895 exit
2896 sudo bash
2897 export LFS=/mnt/lfs
2898 cd ~
2899 cp lfs-build-11.3.tar.xz $LFS
2900
2901 cd $LFS
2902 rm -rf ./*
2903 tar -xpf /root/lfs-build-11.3.tar.xz
2904 ls
2905 chown root:root $LFS/*
2906 cat $LFS/etc/inittab
2907 cat $LFS/etc/fstab
2908
2909 nano $LFS/etc/fstab
2910 # /dev/sdb1 / ext4 defaults 1 1
2911
2912 nano /etc/grub.d/40_custom
2913 # menuentry "GNU/Linux, Linux 6.1.11-lfs-11.3" {
2914 # linux /boot/vmlinuz-6.1.11-lfs-11.3 root=/dev/sdb1 ro
2915 # }
2916 update-grub
2917
2918 vagrant reload
2919 # select grun entry for lfs
2920 # login with root:root
2921 df -h # uses 2.7G
2922 rm lfs-build-11.3.tar.xz
2923 rm -rf sources/*
2924 df -h # uses 1.4 GB
2925
AAAAA
initramfs with static program
https://www.kernel.org/doc/html/latest/filesystems/ramfs-rootfs-initramfs.html#contents-of-initramfs
A good first step is to get initramfs to run a statically linked "hello world" program as init
1 sudo apt install qemu-system genisoimage
2
3 cd /tmp
4 wget https://saimei.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-12.1.0-amd64-netinst.iso
5 sudo mount -o loop /vagrant/debian-12.1.0-amd64-netinst.iso /mnt/iso
6
7 # reuse isolinux from debian iso
8 mkdir /tmp/debiancd
9 mkdir /tmp/debiancd/isolinux
10 mkdir /tmp/debiancd/install.amd
11 cd /mnt/iso
12 cp isolinux/isolinux.cfg isolinux/*c32 isolinux/menu.cfg isolinux/txt.cfg /tmp/debiancd/isolinux
13 cp install.amd/initrd.gz install.amd/vmlinuz /tmp/debiancd/install.amd/
14 cp /mnt/iso/isolinux/isolinux.bin /tmp/debiancd/isolinux/
15
16 # isolinux.cfg
17 cat > debiancd/isolinux/isolinux.cfg << EOF
18 default bootcd
19 prompt 1
20 timeout 40
21
22 label bootcd
23 kernel /install.amd/vmlinuz
24 append initrd=/install.amd/test.cpio.gz vga=788
25 EOF
26
27 # hello.c
28 cat > hello.c << EOF
29 #include <stdio.h>
30 #include <unistd.h>
31
32 int main(int argc, char *argv[])
33 {
34 printf("Hello world!\n");
35 sleep(999999999);
36 }
37 EOF
38 gcc -static hello.c -o init
39
40 # build cpio initramfs
41 echo init | cpio -o -H newc | gzip > test.cpio.gz
42 cp test.cpio.gz debiancd/install.amd/test.cpio.gz
43
44 cd /tmp/
45 mkisofs -o /tmp/output.iso -R -l -L -D -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "LFS_$(date +%Y%m%d)" /tmp/debiancd/
46 rm /vagrant/output.iso
47 cp output.iso /vagrant
48
49 # the output.iso can be launched in VirtualBox booting the iso in a VM Other Linux, Linux 64 bit
50
51 # test with qemu
52 qemu-system-x86_64 -kernel debiancd/install.amd/vmlinuz -initrd test.cpio.gz /dev/zero
53 # test with qemu with kernel in debian system
54 qemu-system-x86_64 -kernel /boot/vmlinuz-5.10.0-22-amd64 -initrd test.cpio.gz /dev/zero
55 # test with qemu with kernel from lfs
56 qemu-system-x86_64 -kernel /home/vagrant/lfs/boot/lfskernel -initrd test.cpio.gz /dev/zero
57 # test with qemu with kernel from lfs
58 qemu-system-x86_64 -kernel /home/vagrant/lfs/boot/vmlinuz-6.1.11-lfs-11.3 -initrd test.cpio.gz /dev/zero