Installer Debian Wheezy avec debootstrap

jeu. 29 août 2013 by Marmotte

Afin de faire les choses dans l'ordre, je vais commencer par l'installation du système d'exploitation.

Sur la plupart de mes machines, j'utilise la version stable de Debian, soit Wheezy actuellement. C'est donc avec cette version que j'ai écrit cette note d'installation.

Pourquoi ne pas utiliser l'installeur Debian ?

J'ai utilisé XUbuntu un certain temps, et à force d'adapter le système à ma façon de fonctionner, je me suis rendu compte qu'après l'installation d'une machine, je commençais toujours par retirer un bon nombre de paquets qui me sont inutiles, pour ensuite installer ceux que j'utilise. J'ai donc décidé de retourner sur Debian, puisque la seule raison pour laquelle j'ai utilisé XUbuntu au départ était la configuration par défaut du système, plus complète.

Le problème s'est cependant reproduit à l'installation de Debian, l'installeur ajoutant automatiquement des paquets qui ne me servent à rien. J'ai donc choisi la méthode qui me permet de réellement choisir ce qui est installé sur mon système : debootstrap. En installant uniquement les paquets que je veux, je sais exactement ce qui est installé, et je maîtrise mieux mon système.

Quand on décide de tout faire à la main, il faut évidemment savoir quels paquets installer quand il manque une fonctionnalité nécessaire. Cette méthode est donc plutôt à réserver pour ceux qui ont déjà une bonne connaissance du système.

Préparation du système hôte

Pour installer Debian avec debootstrap, il faut évidemment déjà un système fonctionnel. Ce peut être un système installé sur la machine, live CD/USB, chargé par le réseau...

J'ai testé l'installation depuis Debian et Ubuntu sans problème, mais toute distribution qui permet d'utiliser debootstrap devrait fonctionner.

Pour préparer le système hôte, il suffit d'y installer les paquets nécessaires. Par exemple, depuis Debian/Ubuntu :

$ sudo apt-get install debootstrap debian-archive-keyring

Note : Le paquet debian-archive-keyring est facultatif, il permet juste de vérifier les signatures du dépôt utilisé lors du debootstrap.

Installation du système

L'installation du système se fait en trois étapes :

  • Le partitionnement des disques
  • La création de la racine du nouveau système
  • La configuration du nouveau système

Partitionnement des disques

Avant d'installer le système proprement dit, il faut déjà lui créer des partitions sur la machine. Pour cette étape, j'utilise cfdisk, qui propose une interface assez simple.

$ sudo cfdisk /dev/sdX

Où /dev/sdX est le disque que l'on veut partitionner.

Note : Dans certains cas, il peut être nécessaire de faire recharger la liste des partitions au système après avoir modifié la table des partitions, avec un programme comme partprobe.

Une fois les partitions créées, il faut créer un système de fichiers dessus. J'utilise ext4, le formatage se fait donc avec la commande mkfs.ext4.

$ sudo mkfs.ext4 /dev/sdXY
$ sudo mkfs.ext4 /dev/sdXZ

Note : Dans le cas du raid, l'utilisation est exactement la même, il suffit de remplacer le périphérique /dev/sdXY par votre volume raid /dev/mdX.

Création de la racine du nouveau système

Les partitions sur lesquelles sera installé le nouveau système doivent ensuite être montées sur le système qui effectue l'installation.

Dans mon cas, je n'ai que deux partitions : une pour la racine, et une pour avoir un /home séparé.

$ sudo mount /dev/sdXY /mnt
$ sudo mkdir /mnt/home
$ sudo mount /dev/sdXZ /mnt/home

On peut ensuite lancer debootstrap.

$ sudo debootstrap --arch=amd64 --verbose --variant=minbase --include=rsyslog,screen,less,sudo,netbase,net-tools,ifupdown,isc-dhcp-client,bind9-host,vim-tiny,dialog,locales,keyboard-configuration,console-setup,adduser,tzdata --exclude=nano wheezy /mnt http://ftp.fr.debian.org/debian

Description des paramètres utilisés :

L'architecture par défaut est celle du système qui lance le debootstrap, le paramètre --arch est donc facultatif, mais j'aime bien le préciser.

Le paramètre --variant permet de modifier le comportement de debootstrap, principalement la liste des paquets installés par défaut. La variante minbase est celle qui en installe le moins.

Le paramètre --includes permet de donner une liste de paquets qui seront installés automatiquement en même temps que le système de base. La liste des paquets choisis est libre, j'y mets uniquement les paquets que j'installe sur toutes les machines. Si vous installez Debian pour faire un simple chroot, la plupart des paquets que j'ai mis ici seront inutile, voire dérangeants.

De la même manière que le paramètre --includes, on peut exclure une liste de paquets avec --excludes. Comme je n'utilise jamais nano, et qu'il est parfois configuré comme éditeur par défaut lorsqu'il est présent, j'ai pris l'habitude de le retirer dès l'installation du système.

Les trois derniers paramètres sont, dans l'ordre, le nom de la distribution à installer, le répertoire dans lequel sera créée la racine du système, et le miroir à utiliser lors de l'installation.

Configuration du nouveau système

Avant de configurer le nouveau système, il est nécessaire de monter quelques répertoires, pour le bon fonctionnement du chroot.

$ sudo mount -t proc none /mnt/proc
$ sudo mount -o bind /dev /mnt/dev
$ sudo mount -o bind /sys /mnt/sys

On lance ensuite la configuration de base du nouveau système

$ sudo chroot /mnt dpkg --configure -a

Configuration du hostname

$ sudo chroot /mnt echo "<hostname>" > /etc/hostname
$ sudo chroot /mnt echo "127.0.0.1 <hostname>" >> /etc/hosts

Reconfiguration des paquets de localisation du système

$ sudo chroot /mnt dpkg-reconfigure locales console-setup keyboard-configuration tzdata

Création d'un utilisateur administrateur

$ sudo chroot /mnt adduser <username>
$ sudo chroot /mnt adduser <username> adm
$ sudo chroot /mnt adduser <username> sudo

Il faut ensuite écrire le fichier /etc/fstab du nouveau système.

$ sudo chroot /mnt cat << EOF > /etc/fstab
UUID=<uuid_partition_root>  /       ext4    defaults,errors=remount-ro  0 1
UUID=<uuid_partition_home>  /home   ext4    defaults                    0 2
UUID=<uuid_partition_swap>  none    swap    sw                          0 0
EOF

Note : Il est préférable d'utiliser les UUID des partitions dans ce fichier, puisqu'ils sont uniques et immuables. Il est possible de connaitre les UUID de chaque partition avec la commande ls -l /dev/disk/by-uuid/.

La configuration du réseau dépend de chaque machine. Sur la mienne, j'ai configuré les interfaces eth0 et eth1, mais seule eth0 est montée automatiquement lors du boot.

$ sudo chroot /mnt cat << EOF >> /etc/network/interfaces

auto eth0
iface eth0 inet dhcp

iface eth1 inet dhcp
EOF

Configuration du démarrage

Si le système qui vient d'être installé est destiné à être le système principal de la machine, il est nécessaire d'installer un chargeur d'amorçage pour permettre son démarrage.

Dans le cas d'un système raid, il est nécessaire de copier la liste des mounts dans le fichier /etc/mtab du nouveau système. De cette manière, l'installation du paquet mdadm mettra automatiquement les bonnes valeurs dans le fichier /etc/mdadm/mdadm.conf.

$ sudo chroot /mnt cp /proc/self/mounts /etc/mtab

Il faut ensuite installer des paquets permettant le démarrage du système. L'ordre donné permet de ne pas avoir de manipulations supplémentaires à faire après l'installation des paquets. Le noyau installé est bien évidemment à adapter selon la machine et le choix de chacun.

$ sudo chroot /mnt apt-get update
$ # Si le système est installé sur un volume raid géré par mdadm, il est nécessaire d'installer le paquet mdadm
$ sudo chroot /mnt apt-get install --no-install-recommends mdadm
$ sudo chroot /mnt apt-get install --no-install-recommends linux-image-amd64
$ sudo chroot /mnt apt-get install --no-install-recommends grub-pc

Note : L'installation du paquet mdadm avant le noyau permet que l'initrd généré contienne les utilitaires lui permettant de monter les volumes raid. Si le noyau a été installé avant le paquet mdadm, il est nécessaire de mettre à jour l'initrd en lançant la commande update-initramfs -u depuis le chroot, sans quoi le système ne pourra pas monter la partition /.

Note : Si le paquet grub-pc a été installé avant le noyau, il est nécessaire de mettre à jour la configuration de grub en lançant la commande update-grub depuis le chroot.

Redémarrage de l'ordinateur

Une fois le système complètement installé, il suffit de redémarrer pour se trouver sur le nouveau système.

$ sudo reboot