Objet | Construction d'un INITRAM rescue |
---|---|
Niveau requis | débutant, avisé |
Débutant, à savoir | |
Suivi | :DONE: |
export CLFS="/var/lfs/rescue-busybox" mkdir -pv ${CLFS}/{rootfs,_src,_pkg}
Charger la structure du répertoire rootfs avec l'image de base créée dans le LAB1.
cd ${CLFS}/rootfs zcat /var/lfs/x86-busybox/rootfs.gz | cpio -idmv --no-absolute-filenames
BusyBox regroupe des versions minuscules de nombreux utilitaires UNIX dans un seul et même petit exécutable, qui fournit des remplacements minimalistes pour la plupart des utilitaires que l'on trouve habituellement dans GNU coreutils, util-linux, etc. Cependant, pour les les options non incluses il faut installer leurs homologues GNU.
Le paquet Util-linux contient divers utilitaires, notamment des utilitaires permettant de gérer les systèmes de fichiers, les consoles, les partitions et les messages.
cd ${CLFS}/_src wget https://mirror.tochlab.net/pub/lfs/lfs-packages/7.5/util-linux-2.24.1.tar.xz tar -xf util-linux-2.24.1.tar.xz cd util-linux-2.24.1 ./configure make make DESTDIR=$PWD/_pkg install strip -v _pkg/sbin/raw cp -av _pkg/sbin/raw ${CLFS}/rootfs cd ${CLFS}
Le paquet Coreutils contient des outils pour afficher et configurer les caractéristiques basiques d'un système.
cd ${CLFS}/_src wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.31.tar.xz wget http://www.linuxfromscratch.org/patches/lfs/9.0/coreutils-8.31-i18n-1.patch tar -xvf coreutils-8.31.tar.xz cd coreutils-8.31 patch -Np1 -i ../coreutils-8.31-i18n-1.patch sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \ --prefix=/usr \ --enable-no-install-program=kill,uptime make make DESTDIR=$PWD/_pkg install strip -v _pkg/usr/bin/{chroot,dir,du,install} cp -av _pkg/usr/bin/{chroot,dir,du,install} ${CLFS}/rootfs/usr/bin cd ${CLFS}
Le package LVM2 est un ensemble d’outils permettant de gérer les partitions logiques, qui permet d’étendre les systèmes de fichiers sur plusieurs disques physiques et partitions, et de faire croître ou réduire de manière dynamique les partitions logiques, la mise en miroir et les instantanés à faible encombrement de stockage.
cd ${CLFS}/_src wget https://sourceware.org/ftp/lvm2/releases/LVM2.2.02.177.tgz tar -xvzf LVM2.2.02.177.tgz cd LVM2.2.02.177 ./configure --prefix=/usr \ --exec-prefix= \ --with-confdir=/etc \ --enable-applib \ --enable-cmdlib \ --enable-pkgconfig make make DESTDIR=$PWD/_pkg install strip -v _pkg/usr/lib/* strip -v _pkg/sbin/* strip -v _pkg/lib/* cp -av _pkg/* ${CLFS}/rootfs cd ${CLFS}
Le paquet xfsprogs contient des outils d'administration et de débogage pour le système de fichier XFS.
cd ${CLFS}/_src wget https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-5.2.1.tar.xz tar -xvf xfsprogs-5.2.1.tar.xz cd xfsprogs-5.2.1 make DEBUG=-DNDEBUG \ INSTALL_USER=root \ INSTALL_GROUP=root \ LOCAL_CONFIGURE_OPTIONS="--enable-readline" make PKG_DOC_DIR=/usr/share/doc/xfsprogs-5.2.1 DESTDIR=$PWD/_pkg install make PKG_DOC_DIR=/usr/share/doc/xfsprogs-5.2.1 DESTDIR=$PWD/_pkg install-dev rm -rfv _pkg/usr/lib64/libhandle.a rm -rfv _pkg/lib64/libhandle.{a,la,so} ln -sfv _pkg/lib64/libhandle.so.1 _pkg/usr/lib64/libhandle.so sed -i "s@libdir='/lib@libdir='/usr/lib@" _pkg/usr/lib64/libhandle.la strip -v _pkg/usr/sbin/* strip -v _pkg/usr/lib/* strip -v _pkg/usr/lib64/* strip -v _pkg/lib64/* cp -av _pkg/* ${CLFS}/rootfs cd ${CLFS}
Si, pour une raison quelconque, les 448 premiers octets sont écrasés, CentOS ou Red Hat Enterprise Linux ne peuvent être chargés que si on démarre en mode de secours et que l'on réinstalle le chargeur d'amorçage MBR GRUB.
cd ${CLFS}/_src wget https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz tar -xvf grub-2.04.tar.xz cd grub-2.04 ./configure --prefix=/usr \ --sbindir=/sbin \ --sysconfdir=/etc \ --disable-efiemu \ --disable-werror make make DESTDIR=$PWD/_pkg install cp -av _pkg/* ${CLFS}/rootfs cd ${CLFS}
Le package cURL contient un utilitaire et une bibliothèque utilisés pour transférer des fichiers avec la syntaxe URL vers l’un des protocoles suivants: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS et FILE. Les fichiers téléchargés et téléchargés peuvent être incorporés dans d'autres programmes pour prendre en charge des fonctions telles que la diffusion multimédia en continu.
cd ${CLFS}/_src wget https://curl.haxx.se/download/curl-7.66.0.tar.xz tar -xvf curl-7.66.0.tar.xz cd curl-7.66.0 ./configure --prefix=/usr \ --disable-static \ --enable-threaded-resolver \ --with-ca-path=/etc/ssl/certs make make DESTDIR=$PWD/_pkg install strip -v _pkg/usr/lib/* strip -v _pkg/usr/bin/* cp -av _pkg/* ${CLFS}/rootfs cd ${CLFS}
Faire un ldd sur le binaire créé
ldd _pkg/usr/bin/curl linux-vdso.so.1 => (0x00007ffe82fb9000) libcurl.so.4 => /lib64/libcurl.so.4 (0x00007fea6a9f7000) libssl.so.10 => /lib64/libssl.so.10 (0x00007fea6a785000) libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fea6a322000) libz.so.1 => /lib64/libz.so.1 (0x00007fea6a10c000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fea69ef0000) libc.so.6 => /lib64/libc.so.6 (0x00007fea69b22000) libidn.so.11 => /lib64/libidn.so.11 (0x00007fea698ef000) libssh2.so.1 => /lib64/libssh2.so.1 (0x00007fea696c5000) libssl3.so => /lib64/libssl3.so (0x00007fea69472000) libsmime3.so => /lib64/libsmime3.so (0x00007fea6924b000) libnss3.so => /lib64/libnss3.so (0x00007fea68f1e000) libnssutil3.so => /lib64/libnssutil3.so (0x00007fea68ced000) libplds4.so => /lib64/libplds4.so (0x00007fea68ae9000) libplc4.so => /lib64/libplc4.so (0x00007fea688e4000) libnspr4.so => /lib64/libnspr4.so (0x00007fea686a5000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fea684a1000) libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fea68254000) libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fea67f6a000) libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fea67d37000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fea67b33000) liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007fea67923000) libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007fea676d0000) /lib64/ld-linux-x86-64.so.2 (0x00007fea6ac73000) librt.so.1 => /lib64/librt.so.1 (0x00007fea674c7000) libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fea672b7000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fea670b3000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fea66e99000) libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007fea66c7c000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fea66a54000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fea6681d000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fea665bb000) libfreebl3.so => /lib64/libfreebl3.so (0x00007fea663b7000)
Copier les librairies si nécessaire
cp -anLf /lib64/{libcurl.so.4,libssl.so.10,libcrypto.so.10,libz.so.1,libpthread.so.0,libc.so.6,libidn.so.11,libssh2.so.1,libssl3.so,libsmime3.so,libnss3.so,libnssutil3.so,libplds4.so,libplc4.so,libnspr4.so,libdl.so.2,libgssapi_krb5.so.2,libkrb5.so.3,libk5crypto.so.3,libcom_err.so.2,liblber-2.4.so.2,libldap-2.4.so.2,ld-linux-x86-64.so.2,librt.so.1,libkrb5support.so.0,libkeyutils.so.1,libresolv.so.2,libsasl2.so.3,libselinux.so.1,libcrypt.so.1,libpcre.so.1,libfreebl3.so} ${CLFS}/rootfs/lib64/