Installation par debootstrap et chroot - 1

Mise à jour : Debian 10.8

Sommaire

1 - Préparation

$ sudo aptitude install debootstrap
$ mkdir debootstrap
$ sudo mount /dev/sdb2 /mnt

2 - Debootstrap

$ sudo debootstrap buster /debootstrap
I: Retrieving InRelease
.....

et se termine par :

......
I: Base system installed successfully.

Elle nécessite le téléchargement et l'installation d'un petit nombre de paquets. Une fois la commande terminée, l'arborescence classique d'un système debian est disponible :

$ ls /debootstrap
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr va

3 - Chroot

La configuration du système s'effectuent dans un chroot :

$ sudo bash -c 'for i in {proc,sys,dev,dev/pts,run} ; do mount --bind /$i debootstrap/$i;done'
$ sudo bash -c 'for i in {proc,sys,sys/firmware/efi/efivars,dev,dev/pts,run} ; do mount --bind /$i debootstrap/$i;done'
main $ sudo chroot debootstap
chroot #

4 - Configuration logicielle et matérielle

5 - Prise en compte des systèmes de fichiers

5.1 - fstab

$ lsblk -n -o uuid,mountpoint,fstype /dev/sda? |sed 's/^/UUID=/' 
UUID=EAB2-D953 /boot/efi vfat
UUID=e139bb8c-e6c2-4c83-8c57-128f2365eb90 / ext4
UUID=c36c2a86-f8dc-4da7-9a2a-60f131e1eb52 [SWAP] swap
UUID=e7ae8725-0486-46a3-9a34-8e49d93238e3 /home ext4
$ cat <<EOF |sudo tee /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>

# Partition ESP
UUID=EAB2-D953 /boot/efi vfat umask=0077 0 2

# Partition SWAP
UUID=c36c2a86-f8dc-4da7-9a2a-60f131e1eb52 none swap sw,discard 0 0

# Partition système
UUID=e139bb8c-e6c2-4c83-8c57-128f2365eb90 / ext4 defaults 0 1

# Partition HOME
UUID=e7ae8725-0486-46a3-9a34-8e49d93238e3 /home ext4 defaults 0 2
# Lecteur - Graveur CD/DVD
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

EOF

5.2 - Resume

$ cat <<EOF |sudo tee /etc/initramfs-tools/conf.d/resume
RESUME=UUID=c36c2a86-f8dc-4da7-9a2a-60f131e1eb52

6 - Fermeture du chroot

chroot # exit
main $
$ sudo bash -c 'for i in {run,dev/pts,dev,sys,proc} ; do umount debootstrap/$i;done'
$ sudo bash -c 'for i in {run,dev/pts,dev,sys,sys/firmware/efi/efivars,proc} ; do umount debootstrap/$i;done'
$ lsof debootstrap/

7 - Premier démarrage autonome

7.1 - Amorçage EFI

7.2 - Nom d'hôte

$ sudo nano /etc/hostname
nouveau_nom_hôte
$ sudo nano /etc/hosts
127.0.0.1 localhost
127.0.1.1 nouveau_nom_hôte.lan nouveau_nom_hôte
........
$ su -l -c 'hostname -F /etc/hostname'
user@nouveau_nom_hôte:~$

7.3 - Installation de paquets sans interface réseau

S'il est nécessaire d'installer des paquets pour faire fonctionner l'interface réseau, il est possible d'utiliser l'image d'un installateur Debian comme source de paquets :
$ sudo mount -o loop debian.iso /mnt
$ cat <<EOF>>/etc/apt/sources.list
deb [trusted=yes] file:/mnt/ buster main non-free contrib
EOF

7.4 - Configuration réseau

7.4.1 ifupdown

Si le gestionnaire de réseau ifupdown est disponible, pour établir une connexion réseau filaire

$ ip link
...
2: eno1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 100
$ sudo ip link set eno1 up
$ sudo dhclient eno1

7.4.2 Network-manager

$ nmcli device 
DEVICE TYPE STATE CONNECTION
eno1 ethernet déconnecté --
wlp0s20f3 wifi déconnecté --
lo loopback non-géré --
$ nmcli device connect eno1
Périphérique « eno1 » activé avec « 6fdfd64f-dd7c-34cf-9687-2db634f783dc ».
$ nmcli device wifi list
$ nmcli device wifi connect <ESSID> password <PASSWORD>
Périphérique « wlp0s20f3 » activé avec « 139759b8-99bd-40aa-bf84-102fe358d8db ».
$ nmcli device status
DEVICE TYPE STATE CONNECTION
eno1 ethernet connecté Connexion filaire 2
wlp0s20f3 wifi connecté SFR-fcc8 3
lo loopback non-géré --

Annexe - Options de debootstrap

$ sudo debootstrap --include=console-setup,locales,keyboard-configuration,tzdata,command-not-found,sudo,aptitude,tree,\
intel-microcode,firmware-linux-free,firmware-misc-nonfree,firmware-iwlwifi,cryptsetup,network-manager,\
linux-image-amd64,grub-efi-amd64-signed efibootmgr --exclude=vim \
--components=main,contrib,non-free \
buster /mnt https://deb.debian.org/debian
dbus-x11,xserver-xorg,xdg-utils,lightdm,xfce4,xfce4-terminal,network-manager-gnome,medit,firefox-esr

A noter que la résolution des dépendances par debootstrap n'est pas aussi performante que celle effectuée par apt et des échecs sont possibles. Dans ce cas