D.3. Installer Debian GNU/Linux à partir d'un système Unix/Linux

Cette partie explique comment installer Debian GNU/Linux à partir d'un système Unix ou Linux existant, sans utiliser le système d'installation avec menus qui est exposé dans la suite de ce manuel. Les utilisateurs qui changeaient leur distribution Red Hat, Mandriva ou Suse pour Debian GNU/Linux réclamaient ce guide d'installation. Dans cette partie, on suppose que le lecteur a acquis une certaine familiarité avec les commandes *nix et qu'il sait parcourir un système de fichiers. $ symbolisera une commande qui doit être saisie dans le système actuel, alors que # fera référence à une commande qui doit être saisie dans le chroot Debian.

Une fois que vous aurez configuré le nouveau système Debian, vous pourrez y installer les données des utilisateurs (s'il y en a), et continuer à travailler. Debian GNU/Linux s'installe sans aucune interruption de service. C'est également une façon intelligente de résoudre les problèmes d'équipement qui, d'ordinaire, donnent du fil à retordre aux systèmes d'installation ou aux systèmes d'amorçage.

[Note] Note

Cette procédure étant essentiellement « manuelle », sachez que la configuration du système vous demandera beaucoup de temps. Elle vous demandera aussi plus de connaissances de Debian et de Linux en général qu'une installation standard. Cette procédure ne peut résulter en un système identique à un système installé normalement. Elle ne donne que les premières étapes de la configuration d'un système. D'autres étapes seront sans doute nécessaires.

D.3.1. Pour commencer

Avec votre outil habituel de partitionnement *nix, partitionnez le disque dur et créez au moins un système de fichiers ainsi qu'une zone d'échange (swap). Vous devez disposer d'au moins 769 Mo pour l'installation d'un système en mode console et d'au moins 2271 Mo si vous avez l'intention d'installer X (et plus si vous voulez installer un environnement de bureau comme GNOME ou KDE Plasma).

Pour créer un système de fichiers sur les partitions, par exemple, pour créer un système de fichiers ext3 sur la partition /dev/sda6 (ce sera la partition racine dans notre exemple), il suffit de faire :

# mke2fs -j /dev/sda6

Pour créer un système de fichier ext2, il suffit d'enlever le -j.

Initialisez et activez la zone d'échange (swap) (modifiez le numéro de la partition en fonction de celui que vous souhaitez utiliser avec Debian) :

# mkswap /dev/sda5
# sync
# swapon /dev/sda5

Montez une partition sur /mnt/debinst (le point d'installation, qui deviendra le système de fichier racine (/) sur votre nouveau système). Le point de montage est totalement arbitraire, c'est de cette façon qu'on y fera référence par la suite.

# mkdir /mnt/debinst
# mount /dev/sda6 /mnt/debinst

[Note] Note

Si vous voulez que certaines parties du système de fichiers (p. ex. /usr) soient montées sur des partitions distinctes, vous devez créer et monter ces répertoires vous-même avant de commencer l'étape suivante.

D.3.2. Installer debootstrap

L'outil utilisé par l'installateur Debian et reconnu comme outil officiel pour installer un système Debian de base s'appelle debootstrap. Il utilise wget et ar, mais ne dépend que de /bin/sh et des outils UNIX/Linux élémentaires [22]. Installez wget et ar s'ils ne sont pas déjà installés sur votre système, puis téléchargez et installez debootstrap.

Ou, vous pouvez utiliser la procédure qui suit pour l'installer vous-même. Créez un répertoire pour y décompresser le .deb :

# mkdir work
# cd work

Le programme debootstrap se trouve dans l'archive Debian (assurez-vous d'avoir sélectionné le fichier correspondant à votre architecture). Téléchargez le debootstrap .deb à partir de pool, copiez le paquet dans le répertoire de travail, et décompressez les fichiers. Vous aurez besoin d'avoir les droits du superutilisateur pour installer le binaire.

# ar -x debootstrap_0.X.X_all.deb
# cd /
# zcat /full-path-to-work/work/data.tar.gz | tar xv

D.3.3. Lancer debootstrap

Debootstrap peut télécharger les fichiers nécessaires directement depuis l'archive debian. Vous pouvez remplacer toutes les références à http.us.debian.org/debian dans les commandes ci-dessous, par un miroir de l'archive Debian qui se trouve à proximité de chez vous, relativement au réseau. Les miroirs sont listés sur http://www.debian.org/mirror/list.

Si vous possédez une image d'installation de Debian GNU/Linux bullseye, montée sur /cdrom, vous pouvez remplacer l'URL http par l'URL d'un fichier : file:/cdrom/debian/.

Dans la commande debootstrap remplacez ARCH par l'une des expressions suivantes : amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x.

# /usr/sbin/debootstrap --arch ARCH bullseye \
     /mnt/debinst http://ftp.fr.debian.org/debian

Si l'architecture de la cible est différente de celle de l'hôte, vous devriez ajouter l'option --foreign.

D.3.4. Configurer le système de base

Maintenant vous disposez d'un vrai système Debian, certes un peu élémentaire. Lancez le programme chroot :

# LANG=C.UTF-8 chroot /mnt/debinst /bin/bash

Si l'architecture de la cible est différente de celle de l'hôte, vous devrez d'abord y copier qemu-user-static :

# cp /usr/bin/qemu-ARCH-static /mnt/debinst/usr/bin
# LANG=C.UTF-8 chroot /mnt/debinst qemu-ARCH-static /bin/bash

Il est maintenant possible d'avoir à indiquer la définition du terminal pour être compatible avec le système de base de Debian. Par exemple :

# export TERM=xterm-color

En fonction de sa valeur, vous devrez peut être installer le paquet ncurses-term pour la prise en charge de TERM.

Si l'architecture de la cible est différente de celle de l'hôte, vous devrez finir l'installation par :

/debootstrap/debootstrap --second-stage

D.3.4.1. Créer les fichiers des périphériques

Pour l'instant, /dev/ contient seulement des fichiers élémentaires. D'autres fichiers seront nécessaires pour les prochaines étapes de l'installation. La manière de les créer dépend du système sur lequel l'installation se fait ; elle dépend aussi du noyau que vous utiliserez (modulaire ou pas) et du choix entre fichiers dynamiques (en utilisant udev) ou fichiers statiques pour le nouveau système.

Voici quelques options disponibles :

  • installer le paquet makedev et créer un ensemble standard de fichiers de périphériques statiques avec :

    # apt install makedev
    # mount none /proc -t proc
    # cd /dev
    # MAKEDEV generic
    

  • créer seulement quelques fichiers choisis avec la commande MAKEDEV ;

  • monter (option bind) le répertoire /dev du système hôte sur le répertoire /dev du système cible. Il faut remarquer que les scripts postinst de certains paquets peuvent essayer de créer des fichiers de périphériques ; cette option doit être employée avec précaution.

D.3.4.2. Monter les partitions

Vous devez créer /etc/fstab.

# editor /etc/fstab

Voici un exemple que vous pouvez modifier à votre convenance :

# /etc/fstab: static file system information.
#
# file system    mount point   type    options                  dump pass
/dev/XXX         /             ext3    defaults                 0    1
/dev/XXX         /boot         ext3    ro,nosuid,nodev          0    2

/dev/XXX         none          swap    sw                       0    0
proc             /proc         proc    defaults                 0    0

/dev/cdrom       /media/cdrom    iso9660 noauto,ro,user,exec      0    0

/dev/XXX         /tmp          ext3    rw,nosuid,nodev          0    2
/dev/XXX         /var          ext3    rw,nosuid,nodev          0    2
/dev/XXX         /usr          ext3    rw,nodev                 0    2
/dev/XXX         /home         ext3    rw,nosuid,nodev          0    2

Utilisez mount -a pour monter l'ensemble des systèmes de fichiers que vous avez indiqué dans votre fichier /etc/fstab, ou, pour monter un à un chaque système de fichiers, utilisez :

# mount /path  # par exemple :  mount /usr

Les systèmes Debian actuels montent les médias extractibles sous le répertoire /media, mais conservent des liens symboliques de compatibilité sous la racine /. Pour les créer :

# cd /media
# mkdir cdrom0
# ln -s cdrom0 cdrom
# cd /
# ln -s media/cdrom

Vous pouvez monter le système de fichiers proc plusieurs fois et à divers endroits, cependant on choisit d'habitude /proc. Si vous n'utilisez pas mount -a, assurez-vous d'avoir monté proc avant d'aller plus loin :

# mount -t proc proc /proc

La commande ls /proc affiche maintenant un répertoire non vide. Si cela échoue, vous pouvez monter proc hors du chroot de cette manière :

# mount -t proc proc /mnt/debinst/proc

D.3.4.3. Configurer le fuseau horaire

La troisième ligne du fichier /etc/adjtime peut contenir « UTC » ou « LOCAL ». Ce paramètre détermine si le système considère que l'horloge système est réglée sur le temps UTC ou non. La commande suivante permet d'effectuer cette opération.

# editor /etc/adjtime

Voici un exemple :

0.0 0 0.0
0
UTC

La commande suivante permet de modifier le fuseau horaire :

# dpkg-reconfigure tzdata

D.3.4.4. Configurer le réseau

Pour configurer le réseau, éditez les fichiers /etc/network/interfaces, /etc/resolv.conf, etc/hostname et /etc/hosts.

# editor /etc/network/interfaces 

Voici quelques exemples simples qui proviennent de /usr/share/doc/ifupdown/examples :

######################################################################
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# See the interfaces(5) manpage for information on what options are
# available.
######################################################################

# The loopback interface isn't really required any longer, but can be used
# if needed.
#
# auto lo
# iface lo inet loopback

# To use dhcp:
#
# auto eth0
# iface eth0 inet dhcp

# An example static IP setup: (network, broadcast and gateway are optional)
#
# auto eth0
# iface eth0 inet static
#     address 192.168.0.42
#     network 192.168.0.0
#     netmask 255.255.255.0
#     broadcast 192.168.0.255
#     gateway 192.168.0.1

Indiquez vos serveurs de noms et les directives search dans le fichier /etc/resolv.conf :

# editor /etc/resolv.conf

Un fichier /etc/resolv.conf simple :

# search example.com
# nameserver 10.1.1.36
# nameserver 192.168.9.100

Indiquez le nom de votre système (de 2 à 63 caractères) :

# echo DebianHostName > /etc/hostname

Et un fichier /etc/hosts élémentaire, avec gestion de IPv6 :

127.0.0.1 localhost
127.0.1.1 DebianHostName

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Si vous possédez plusieurs cartes réseau, faites en sorte d'indiquer par ordre les modules que vous voulez charger dans le fichier /etc/modules. De cette façon, lors du démarrage, chaque carte sera associée avec le nom d'interface (eth0, eth1, etc.) que vous souhaitiez.

D.3.4.5. Configurer Apt

Debootstrap aura créé un fichier /etc/apt/sources.list élémentaire qui permettra d'installer d'autres paquets. Cependant, vous pouvez ajouter d'autres sources, par exemple les sources concernant les mises à jour de sécurité ou celles des paquets source :

deb-src http://ftp.us.debian.org/debian bullseye main

deb http://security.debian.org/ bullseye-security main
deb-src http://security.debian.org/ bullseye-security main

N'oubliez pas de lancer apt update après avoir modifié le fichier /etc/apt/sources.list.

D.3.4.6. Configurer les locales et le clavier

Pour configurer les paramètres locaux, pour l'utilisation d'une autre langue que l'anglais, installez le paquet locales puis configurez-le. Il est conseillé d'utiliser les locales UTF-8.

# apt install locales
# dpkg-reconfigure locales

Pour configurer le clavier (si besoin est) :

# apt install console-setup
# dpkg-reconfigure keyboard-configuration 

Il faut noter que le clavier ne peut pas être configuré à l'intérieur du chroot. Il sera configuré au prochain démarrage de la machine.

D.3.5. Installer un noyau

Si vous avez l'intention de démarrer ce système, vous aurez vraisemblablement besoin d'un noyau Linux ainsi que d'un programme d'amorçage. Identifiez les paquets contenant des noyaux avec :

# apt search linux-image

Installez alors le noyau de votre choix en utilisant son nom :

# apt install linux-image-arch-etc

D.3.6. Configurer le programme d'amorçage

Pour que votre système Debian GNU/Linux puisse démarrer, configurez le programme d'amorçage pour qu'il charge le noyau installé avec votre nouvelle partition racine. Debootstrap n'installe pas de programme d'amorçage mais vous pouvez utiliser apt pour en installer un.

On suppose ici qu'un fichier /dev/sda a été créé. Il y a d'autres méthodes pour installer grub2, mais elles sortent du cadre de cette annexe.

D.3.7. Accès distant : installer SSH et configurer l'accès

Si vous pouvez vous connecter au système par la console, vous pouvez sauter cette section. Si par la suite le système doit être accessible par le réseau, vous devez installer ssh et configurer l'accès.

# apt install ssh

La connexion du superutilisateur par mot de passe est désactivée par défaut. Pour configurer l'accès SSH, vous devrez créer un mot de passe et réactiver l'accès du superutilisateur par mot de passe.

# passwd
# editor /etc/ssh/sshd_config

Cette option est à activer :

PermitRootLogin yes

L'accès peut aussi être configuré en ajoutant une clé ssh au compte du superutilisateur :

# mkdir /root/.ssh
# cat << EOF > /root/.ssh/authorized_keys
ssh-rsa ....
EOF

Enfin, l'accès peut être configuré en ajoutant un utilisateur normal et en créant un mot de passe :

# adduser joe
# passwd joe

D.3.8. Touches finales

Comme signalé auparavant, le système sera très basique. Pour l'améliorer sensiblement, il existe une méthode très simple pour installer les paquets dont la priorité est « standard » :

# tasksel install standard

Bien sûr, vous pouvez toujours utiliser apt pour installer des paquets un à un.

Après l'installation il y aura beaucoup de paquets dans /var/cache/apt/archives/. Vous pouvez libérer un peu d'espace avec :

# apt clean



[22] Ces programmes sont les utilitaires GNU (coreutils) et des commandes comme sed, grep, tar et gzip.