linux:lfs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:lfs [2020/09/27 17:27] – wip chapter 6 phswlinux:lfs [2021/06/03 21:03] (Version actuelle) – [Linux From Scratch] fix link formatting phsw
Ligne 2: Ligne 2:
  
  
-[[http://fr.linuxfromscratch.org/view/lfs-9.1-systemd-fr/index.html]]+http://fr.linuxfromscratch.org/view/lfs-9.1-systemd-fr/index.html
  
 Fonctionnement général: à partir d'un système existant, on construit LFS sur une partition à côté du système existant. On pourra ensuite booter sur LFS situé sur la nouvelle partition. Fonctionnement général: à partir d'un système existant, on construit LFS sur une partition à côté du système existant. On pourra ensuite booter sur LFS situé sur la nouvelle partition.
Ligne 14: Ligne 14:
 ==== Prérequis du système hôte ==== ==== Prérequis du système hôte ====
  
-Exécuter le script fournit [[http://fr.linuxfromscratch.org/view/lfs-systemd-stable/chapter02/hostreqs.html|ici]].+Exécuter le script fournit [[http://fr.linuxfromscratch.org/view/lfs-systemd-stable/chapter02/hostreqs.html#__do_not_save__|ici]].
  
 Correction à apporter: Correction à apporter:
Ligne 1747: Ligne 1747:
 make check make check
 make install make install
 +</code>
 +
 +
 +==== Findutils-4.7.0 ====
 +
 +<code bash>
 +cd /sources/findutils-4.7.0
 +./configure --prefix=/usr --localstatedir=/var/lib/locate
 +make
 +make install
 +
 +mv -v /usr/bin/find /bin
 +sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb
 +</code>
 +
 +
 +==== Groff-1.22.4 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv groff-1.22.4.tar.gz
 +cd groff-1.22.4
 +
 +PAGE=A4 ./configure --prefix=/usr
 +make -j1
 +make install
 +</code>
 +
 +
 +==== GRUB-2.04 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv grub-2.04.tar.xz
 +cd grub-2.04
 +
 +./configure --prefix=/usr          \
 +            --sbindir=/sbin        \
 +            --sysconfdir=/etc      \
 +            --disable-efiemu       \
 +            --disable-werror
 +make
 +make install
 +mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
 +</code>
 +
 +
 +==== Less-551 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv less-551.tar.gz
 +cd less-551
 +
 +./configure --prefix=/usr --sysconfdir=/etc
 +make
 +make install
 +</code>
 +
 +
 +==== Gzip-1.10 ====
 +
 +<code bash>
 +cd /sources/gzip-1.10
 +./configure --prefix=/usr
 +make
 +make install
 +mv -v /usr/bin/gzip /bin
 +</code>
 +
 +
 +==== Zstd-1.4.4 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv zstd-1.4.4.tar.gz
 +cd zstd-1.4.4
 +
 +make
 +make prefix=/usr install
 +
 +rm -v /usr/lib/libzstd.a
 +mv -v /usr/lib/libzstd.so.* /lib
 +ln -sfv ../../lib/$(readlink /usr/lib/libzstd.so) /usr/lib/libzstd.so
 +</code>
 +
 +
 +==== IPRoute2-5.5.0 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv iproute2-5.5.0.tar.xz
 +cd iproute2-5.5.0
 +
 +sed -i /ARPD/d Makefile
 +rm -fv man/man8/arpd.8
 +sed -i 's/.m_ipt.o//' tc/Makefile
 +
 +make
 +make DOCDIR=/usr/share/doc/iproute2-5.5.0 install
 +</code>
 +
 +
 +==== Kbd-2.2.0 ====
 +
 +<code bash>
 +cd /sources/
 +tar xfv kbd-2.2.0.tar.xz
 +cd kbd-2.2.0
 +
 +patch -Np1 -i ../kbd-2.2.0-backspace-1.patch
 +sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
 +sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
 +
 +PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock
 +make
 +make install
 +</code>
 +
 +
 +==== Libpipeline-1.5.2 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv libpipeline-1.5.2.tar.gz
 +cd libpipeline-1.5.2
 +
 +./configure --prefix=/usr
 +make
 +make install
 +</code>
 +
 +
 +==== Make-4.3 ====
 +
 +<code bash>
 +cd /sources/make-4.3/
 +./configure --prefix=/usr
 +make
 +make install
 +</code>
 +
 +
 +==== Patch-2.7.6 ====
 +
 +<code bash>
 +cd /sources/patch-2.7.6
 +./configure --prefix=/usr
 +make
 +make install
 +</code>
 +
 +
 +==== Man-DB-2.9.0 ====
 +
 +<code bash>
 +cd /sources/
 +tar xfv man-db-2.9.0.tar.xz
 +cd man-db-2.9.0
 +
 +sed -i '/find/s@/usr@@' init/systemd/man-db.service.in
 +
 +./configure --prefix=/usr                        \
 +            --docdir=/usr/share/doc/man-db-2.9.0 \
 +            --sysconfdir=/etc                    \
 +            --disable-setuid                     \
 +            --enable-cache-owner=bin             \
 +            --with-browser=/usr/bin/lynx         \
 +            --with-vgrind=/usr/bin/vgrind        \
 +            --with-grap=/usr/bin/grap
 +make
 +make install
 +</code>
 +
 +
 +==== Tar-1.32 ====
 +
 +<code bash>
 +cd /sources/tar-1.32
 +FORCE_UNSAFE_CONFIGURE=1  \
 +./configure --prefix=/usr \
 +            --bindir=/bin
 +make
 +make install
 +</code>
 +
 +
 +==== Texinfo-6.7 ====
 +
 +<code bash>
 +cd /sources/texinfo-6.7
 +./configure --prefix=/usr --disable-static
 +make
 +make install
 +</code>
 +
 +
 +==== Vim-8.2.0190 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv vim-8.2.0190.tar.gz
 +cd vim-8.2.0190
 +
 +echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
 +
 +./configure --prefix=/usr
 +make
 +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/vim82/doc /usr/share/doc/vim-8.2.0190
 +
 +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
 +</code>
 +
 +
 +==== Systemd-244 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv systemd-244.tar.gz
 +cd systemd-244
 +
 +ln -sf /tools/bin/true /usr/bin/xsltproc
 +for file in /tools/lib/lib{blkid,mount,uuid}.so*; do
 +    ln -sf $file /usr/lib/
 +done
 +tar -xf ../systemd-man-pages-244.tar.xz
 +sed '177,$ d' -i src/resolve/meson.build
 +sed -i 's/GROUP="render", //' rules.d/50-udev-default.rules.in
 +mkdir -p build
 +cd       build
 +
 +PKG_CONFIG_PATH="/usr/lib/pkgconfig:/tools/lib/pkgconfig" \
 +LANG=en_US.UTF-8                   \
 +meson --prefix=/usr                \
 +      --sysconfdir=/etc            \
 +      --localstatedir=/var         \
 +      -Dblkid=true                 \
 +      -Dbuildtype=release          \
 +      -Ddefault-dnssec=no          \
 +      -Dfirstboot=false            \
 +      -Dinstall-tests=false        \
 +      -Dkmod-path=/bin/kmod        \
 +      -Dldconfig=false             \
 +      -Dmount-path=/bin/mount      \
 +      -Drootprefix=                \
 +      -Drootlibdir=/lib            \
 +      -Dsplit-usr=true             \
 +      -Dsulogin-path=/sbin/sulogin \
 +      -Dsysusers=false             \
 +      -Dumount-path=/bin/umount    \
 +      -Db_lto=false                \
 +      -Drpmmacrosdir=no            \
 +      ..
 +LANG=en_US.UTF-8 ninja
 +LANG=en_US.UTF-8 ninja install
 +
 +rm -f /usr/bin/xsltproc
 +systemd-machine-id-setup
 +systemctl preset-all
 +systemctl disable systemd-time-wait-sync.service
 +rm -fv /usr/lib/lib{blkid,uuid,mount}.so*
 +</code>
 +
 +
 +==== D-Bus-1.12.16 ====
 +
 +<code bash>
 +cd /sources
 +tar xfv dbus-1.12.16.tar.gz
 +cd dbus-1.12.16
 +
 +./configure --prefix=/usr                       \
 +            --sysconfdir=/etc                   \
 +            --localstatedir=/var                \
 +            --disable-static                    \
 +            --disable-doxygen-docs              \
 +            --disable-xml-docs                  \
 +            --docdir=/usr/share/doc/dbus-1.12.16 \
 +            --with-console-auth-dir=/run/console
 +make
 +make install
 +
 +mv -v /usr/lib/libdbus-1.so.* /lib
 +ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so
 +ln -sv /etc/machine-id /var/lib/dbus
 +</code>
 +
 +
 +==== Procps-3.3.15 ====
 +
 +<code bash>
 +cd /sources/
 +tar xfv procps-ng-3.3.15.tar.xz
 +cd procps-ng-3.3.15
 +
 +./configure --prefix=/usr                            \
 +            --exec-prefix=                           \
 +            --libdir=/usr/lib                        \
 +            --docdir=/usr/share/doc/procps-ng-3.3.15 \
 +            --disable-static                         \
 +            --disable-kill                           \
 +            --with-systemd
 +make
 +make install
 +
 +mv -v /usr/lib/libprocps.so.* /lib
 +ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so
 +</code>
 +
 +
 +==== Util-linux-2.35.1 ====
 +
 +<code bash>
 +cd /sources/util-linux-2.35.1
 +
 +mkdir -pv /var/lib/hwclock
 +rm -vf /usr/include/{blkid,libmount,uuid}
 +
 +./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
 +            --docdir=/usr/share/doc/util-linux-2.35.1 \
 +            --disable-chfn-chsh  \
 +            --disable-login      \
 +            --disable-nologin    \
 +            --disable-su         \
 +            --disable-setpriv    \
 +            --disable-runuser    \
 +            --disable-pylibmount \
 +            --disable-static     \
 +            --without-python
 +make
 +make install
 +</code>
 +
 +
 +==== E2fsprogs-1.45.5 ====
 +
 +<code bash>
 +cd /sources/
 +tar xfv e2fsprogs-1.45.5.tar.gz
 +cd e2fsprogs-1.45.5
 +mkdir -v build
 +cd       build
 +
 +../configure --prefix=/usr           \
 +             --bindir=/bin           \
 +             --with-root-prefix=""   \
 +             --enable-elf-shlibs     \
 +             --disable-libblkid      \
 +             --disable-libuuid       \
 +             --disable-uuidd         \
 +             --disable-fsck
 +make
 +make install
 +
 +chmod -v u+w /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
 +</code>
 +
 +
 +==== Nettoyer ====
 +
 +<code bash>
 +rm -rf /tmp/*
 +logout
 +
 +chroot "$LFS" /usr/bin/env -i          \
 +    HOME=/root TERM="$TERM"            \
 +    PS1='(lfs chroot) \u:\w\$ '        \
 +    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
 +    /bin/bash --login
 +
 +rm -f /usr/lib/lib{bfd,opcodes}.a
 +rm -f /usr/lib/libbz2.a
 +rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a
 +rm -f /usr/lib/libltdl.a
 +rm -f /usr/lib/libfl.a
 +rm -f /usr/lib/libz.a
 +find /usr/lib /usr/libexec -name \*.la -delete
 +</code>
 +
 +
 +
 +==== Configuration générale du réseau ====
 +
 +Pour utiliser un DHCP:
 +<code bash>
 +cat > /etc/systemd/network/10-eth-dhcp.network << "EOF"
 +[Match]
 +Name=<network-device-name>
 +
 +[Network]
 +DHCP=ipv4
 +
 +[DHCP]
 +UseDomains=true
 +EOF
 +cat > /etc/resolv.conf << "EOF"
 +nameserver <Adresse IP du DNS primaire>
 +EOF
 +
 +echo "VIRTUAL-LFS" > /etc/hostname
 +
 +cat > /etc/hosts << "EOF"
 +127.0.0.1       localhost
 +127.0.1.1       VIRUTAL-LFS
 +
 +::1     localhost ip6-localhost ip6-loopback
 +ff02::1 ip6-allnodes
 +ff02::2 ip6-allrouters
 +EOF
 +</code>
 +
 +
 +==== Configurer la Console Linux ====
 +
 +<code bash>
 +cat > /etc/vconsole.conf << "EOF"
 +KEYMAP=fr
 +EOF
 +</code>
 +
 +
 +==== Configuration des paramètres régionaux du système ====
 +
 +<code bash>
 +cat > /etc/locale.conf << "EOF"
 +LANG=fr_FR.ISO-8859-1
 +EOF
 +</code>
 +
 +
 +==== Créer le fichier /etc/inputrc ====
 +
 +<code bash>
 +cat > /etc/inputrc << "EOF"
 +# Début de /etc/inputrc
 +# Modifié par Chris Lynn <roryo@roryo.dynup.net>
 +
 +# Permettre à l'invite de commande d'aller à la ligne
 +set horizontal-scroll-mode Off
 +
 +# Activer l'entrée sur 8 bits
 +set meta-flag On
 +set input-meta On
 +
 +# Ne pas supprimer le 8ème bit
 +set convert-meta Off
 +
 +# Conserver le 8ème bit à l'affichage
 +set output-meta On
 +
 +# none, visible ou audible
 +set bell-style none
 +
 +# Toutes les indications qui suivent font correspondre la séquence
 +# d'échappement contenue dans le 1er argument à la fonction
 +# spécifique de readline
 +"\eOd": backward-word
 +"\eOc": forward-word
 +
 +# Pour la console linux
 +"\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
 +
 +# pour xterm
 +"\eOH": beginning-of-line
 +"\eOF": end-of-line
 +
 +# pour Konsole
 +"\e[H": beginning-of-line
 +"\e[F": end-of-line
 +
 +# Fin de /etc/inputrc
 +EOF
 +</code>
 +
 +
 +==== Créaction du fichier /etc/shells ====
 +
 +<code bash>
 +cat > /etc/shells << "EOF"
 +# Begin /etc/shells
 +
 +/bin/sh
 +/bin/bash
 +
 +# End /etc/shells
 +EOF
 +</code>
 +
 +
 +==== Utilisation et configuration de Systemd ====
 +
 +<code bash>
 +mkdir -pv /etc/systemd/system/getty@tty1.service.d
 +
 +cat > /etc/systemd/system/getty@tty1.service.d/noclear.conf << EOF
 +[Service]
 +TTYVTDisallocate=no
 +EOF
 +</code>
 +
 +
 +==== Créer le fichier /etc/fstab ====
 +
 +<code bash>
 +cat > /etc/fstab << "EOF"
 +# Begin /etc/fstab
 +
 +# file system  mount-point  type     options             dump  fsck
 +#                                                              order
 +
 +/dev/sda2     /            ext4    defaults            1     1
 +/dev/sda3     swap         swap     pri=1                   0
 +
 +# End /etc/fstab
 +EOF
 +</code>
 +
 +
 +
 +==== Linux-5.5.3 ====
 +
 +<code bash>
 +cd /sources/
 +rm -rf linux-5.5.3
 +tar xfv linux-5.5.3.tar.xz
 +cd linux-5.5.3
 +
 +make mrproper
 +
 +make defconfig
 +make menuconfig # voir la doc pour les options à activer ou désactiver
 +make
 +make modules_install
 +
 +cp -iv arch/x86_64/boot/bzImage /boot/vmlinuz-5.5.3-lfs-9.1-systemd
 +cp -iv System.map /boot/System.map-5.5.3
 +cp -iv .config /boot/config-5.5.3
 +
 +install -v -m755 -d /etc/modprobe.d
 +cat > /etc/modprobe.d/usb.conf << "EOF"
 +# Début de /etc/modprobe.d/usb.conf
 +
 +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
 +
 +# Fin de /etc/modprobe.d/usb.conf
 +EOF
 +</code>
 +
 +
 +==== Utiliser GRUB pour paramétrer le processus de démarrage ====
 +
 +Ajouter, sur le système hôte, dans ''/boot/grub/grub.cfg'':
 +<code bash>
 +menuentry "GNU/Linux, Linux 5.5.3-lfs-9.1-systemd" {
 +        insmod ext2
 +        set root=(hd0,2)  # pour sda2
 +        linux   /boot/vmlinuz-5.5.3-lfs-9.1-systemd root=/dev/sda2 ro
 +}
 +</code>
 +
 +
 +==== Fin ====
 +
 +<code bash>
 +echo 9.1-systemd > /etc/lfs-release
 +
 +cat > /etc/lsb-release << "EOF"
 +DISTRIB_ID="Linux From Scratch"
 +DISTRIB_RELEASE="9.1-systemd"
 +DISTRIB_CODENAME="<votre nom ici>"
 +DISTRIB_DESCRIPTION="Linux From Scratch"
 +EOF
 +
 +cat > /etc/os-release << "EOF"
 +NAME="Linux From Scratch"
 +VERSION="9.1-systemd"
 +ID=lfs
 +PRETTY_NAME="Linux From Scratch 9.1-systemd"
 +VERSION_CODENAME="<votre nom ici>"
 +EOF
 +</code>
 +
 +
 +==== Redémarrer le système ====
 +
 +<code bash>
 +logout
 +reboot
 </code> </code>
  
  • linux/lfs.1601220459.txt.gz
  • Dernière modification : 2021/04/04 17:01
  • (modification externe)