labs:initram-lab3-busybox-rescue

Initram: LAB3 - construction d'un système de secours avec busybox

Objet Construction d'un INITRAM rescue
Niveau requis débutant, avisé
Débutant, à savoir
Suivi :DONE:

Préparation du rootfs

Construire l'environnement de build

export CLFS="/var/lfs/rescue-busybox"
mkdir -pv ${CLFS}/{rootfs,_src,_pkg}

Charger la structure de répertoire de rootfs

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

Installation et système rescue

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.

util-linux-2.24.1

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}

Coreutils-8.31

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}

LVM2.2.02.177

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}

xfsprogs-5.2.1

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}

GRUB-2.04

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}

cURL-7.66.0

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/
labs/initram-lab3-busybox-rescue.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1