User Tools

Site Tools


debian:debian-debootstrap-chroot

Installation d'une Debian Stretch avec l'aide de debootstrap et de chroot

L'objectif est d'installer une Stretch (sur une nouvelle partition) à partir d'une autre Debian (ici une Sid, mais cette méthode fonctionnera aussi bien avec une autre version), sans avoir besoin de redémarrer ma machine une seule fois…

Avantage : rester dans mon environnement de travail pendant toute l'installation…

Préparation du système de base

Configuration de la partition de destination

1) Préparer une partition libre disposant de suffisamment d'espace (entre 10 et 30Go au minimum):

# fdisk -l

/dev/sdb7    317323264 522541055 205217792  97,9G Système de fichiers Linux

Il fauts s'assurer que cette partition n'est pas montée:

# umount /dev/sdb7

umount: /dev/sdb7 : non monté.

2) Formater la partition qui va recevoir l'installation

On a choisi de formater en ext4,mais on peut choisir au autre système de fichiers bien sûr.

La partition cible (ici /dev/sdb7) devra aussi être adaptée à la configuration.

# mkfs -V -t ext4 /dev/sdb7

S'il y a déjà un système de fichier sur la partition il faudra l'écraser:

/dev/sdb7 contient un système de fichiers ext4
	dernier montage sur / le Mon Nov  6 14:39:19 2017
Procéder malgré tout ? (o,N) o

3) Créer le répertoire ou sera montée la partition fraîchement formatée.

On a choisi /mnt/chroot

Un petit « ls » à la fin pour vérifier que la partition est bien montée (Un répertoire lost+found doit se trouver dans le répertoire de montage)

# mkdir -p /mnt/chroot
# mount /dev/sdb7 /mnt/chroot/
# ls /mnt/chroot/
lost+found

Installation avec debootstrap

Installer debootstrap (chroot se trouvant dans le paquet coreutils normalement déjà installé dans la Debian).

# apt install -y debootstrap

Installation de la Stretch avec debootstrap (on a choisi une Stretch amd64, mais on peut choisir une Stretch i386 ou bien même une Sid…)

Installation depuis un CD d'installation

# mount -o loop debian-9.2.1-amd64-netinst.iso /media/cdrom/
# debootstrap --arch amd64 stretch /mnt/chroot/ file:/media/cdrom/

En cas d'échec dû à la vérification de gpg

E: Failed getting release signature file file:/media/cdrom/dists/stretch/Release.gpg

… forcer l'installation sans vérification

# debootstrap --no-check-gpg --arch amd64 stretch /mnt/chroot/ file:/media/cdrom/

Installation depuis un dépôt local

# debootstrap --arch amd64 stretch /mnt/chroot/ http://10.11.12.251:9999/deb.debian.org/debian/

Installation via le réseau.

Un peu long, mais c'est comme ça…

En ajoutant l'option --variant=minbase à debootstrap, on installe uniquement le strict minimum de paquets (pas de vim, d'exim4, etc.).

# debootstrap --arch amd64 stretch /mnt/chroot/ http://deb.debian.org/debian/
I: Retrieving InRelease
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id 067E3C456BAE240ACEE88F6FEF0F382A1A7B6500)
I: Retrieving Packages
I: Validating Packages
...
I: Configuring libc-bin...
I: Configuring systemd...
I: Base system installed successfully.

Si tout s'est bien passé, un “ls” retournera la toute nouvelle arborescence :

# ls /mnt/chroot/
bin debootstrap etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr

À ce niveau, Stretch est installée, mais elle est loin d'être fonctionnelle et « autonome ». On ne peut notamment pas démarrer dessus…

Création de la nouvelle installation

Préparation du chroot

Il faut maintenant préparer le chroot. Trois répertoires sont importants pour que cela fonctionne convenablement : /sys, /proc et /dev (accessoirement /tmp) Avant de chrooter ilfaudra monter les pseudos systèmes dans le chroot:

# mount -t sysfs /sys /mnt/chroot/sys
# mount -t proc /proc /mnt/chroot/proc
# mount --bind /dev /mnt/chroot/dev
# mount -t devpts /dev/pts /mnt/chroot/dev/pts
# mount --bind /tmp /mnt/chroot/tmp

Il faut ensuite « normaliser les comptes et groupes » de la nouvelle installation (afin que les utilisateurs et groupes aient les mêmes identifiants dans le système “hôte” et dans le chroot) taper les commandes suivantes :

# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/passwd >> /mnt/chroot/etc/passwd
# grep "^[^:]*:x:[0-9][0-9][0-9][0-9]:" /etc/group >> /mnt/chroot/etc/group

On peut maintenant entrer dans l'environnement chroot:

# chroot /mnt/chroot/ /bin/bash
#:/ #

Finalisation de l'installation et réglages

On est maintenant dans la nouvelle installation mais, le système est incomplet, il est toujours impossible de démarrer dessus…

Définition des "locales"

On va maintenant mettre en français, configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si on démarre sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel on est), le prochain démarrage demandera de faire un fsck…

En effet, au montage des disques le système inscrit l'heure (au tout début du disque). Si cette heure est « dans le futur », au démarrage suivant (sur une autre installation), il ne voudra pas démarrer et exigera une vérification de disque…

#:/ # apt update

Reamarque: Si on installe via un CDROM avec l'option --no-check-gpg on aura une erreur dans le chroot au premier update…

W: GPG error: http://deb.debian.org/debian stretch Release: The following signatures were invalid: BADSIG 8B48AD6246925553 Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>
E: The repository 'http://deb.debian.org/debian stretch Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Il faudra alors faire ceci:

#:/ # apt-get clean
#:/ # rm /var/lib/apt/lists/*
#:/ # apt-get update

Et on continue…

#:/ # apt install -y locales
#:/ # dpkg-reconfigure locales

Generating locales (this might take a while)...
  fr_FR.UTF-8... done
Generation complete.

#:/ # dpkg-reconfigure tzdata

Current default time zone: 'Indian/Antananarivo'
Local time is now:      Tue Nov  7 08:38:03 EAT 2017.
Universal Time is now:  Tue Nov  7 05:38:03 UTC 2017.

#:/ # hwclock --systohc --utc
#:/ # apt install -y ntpdate
#:/ # ntpdate ntp.metas.ch

Configuration de sources.list

Il fautmaintenant compléter les dépôts, par exemple ajouter le dépôt de rétroportages (backports) pour avoir accès à un noyau récent, mais on est pas obligé de le faire.

#:/ # nano /etc/apt/sources.list

deb http://deb.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-proposed-updates main contrib non-free
deb http://ftp.debian.org/debian stretch-backports main contrib non-free

Mettre à jour :

#:/ # apt update && apt upgrade -y

Configuration du Clavier

Configurer maintenant le clavier

#:/ # apt install -y console-data

(option choisir un codage clavier dans la liste complète) - pc / azerty / French / Same as X11 (latin9) / Standard
Looking for keymap to install:
fr-latin9

Looking for keymap to install:
fr-latin9

Astuce: Lorsqu'on a pas cette sortie: fr-latin9 (Cela arrivait avec Jessie et Wheezy, le problème semble réglé en Stretch) recommencer:

#:/ # dpkg-reconfigure -plow console-data

## Configuration de hostname et fstab

Sortir du CHROOT:

#:/ # exit

Il reste quelques fichiers à récupérer… Pour avoir un bon hostname, le réseau, le montage correct des disques…

# cp /etc/{fstab,hosts,hostname,resolv.conf} /mnt/chroot/etc/
# cp /etc/network/interfaces /mnt/chroot/etc/network/

Entrer à nouveau dans système chrooté

# chroot /mnt/chroot/ /bin/bash
#:/ #

Le contenu de fsab doit être adapté.

Récupérer le UUID (Universally Unique Identifier) des disques pour le nouveau fstab avec la commande BLKID:

#:/ # blkid
/dev/sda1: UUID="33e50b98-063b-489e-86e1-4f01028b6f03" TYPE="ext4" PARTUUID="dab918a2-01"
/dev/sda2: UUID="6E02F5276EFF1BC3" TYPE="ntfs" PARTUUID="dab918a2-02"
/dev/sda3: UUID="56363bc4-b828-48db-808a-1e96d4b8c806" TYPE="ext4" PARTUUID="dab918a2-03"
/dev/sdb1: LABEL="RM-CM-)cupM-CM-)ration" UUID="526ED53D6ED51A95" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="443ad1ef-1aa2-4cce-9bc4-7414fdd1ce3e"
/dev/sdb2: UUID="32DC-0686" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="483b50fc-579e-4514-b198-381106c9ffb0"
/dev/sdb3: PARTLABEL="Microsoft reserved partition" PARTUUID="65bba919-179e-43ea-b8bd-6def3c98c86a"
/dev/sdb4: UUID="666EE37F6EE34681" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="d0761798-6302-4b00-93d8-bd23b277fa0a"
/dev/sdb5: UUID="0592b5bb-9deb-4fc1-ae74-72694ac38120" TYPE="swap" PARTLABEL="swap" PARTUUID="65e43aa9-ca7b-4006-b126-fad687501622"
/dev/sdb6: UUID="600e746e-f59c-43dd-a5dc-dc6ecbbac644" TYPE="ext4" PARTLABEL="debian_system" PARTUUID="853a3de0-01ec-4921-ac1f-d4906a61d7ab"
/dev/sdb7: UUID="4cf54c99-09c7-454a-92fd-21b785c50552" TYPE="ext4" PARTUUID="0dcba220-9c29-4cbc-8026-70f1fffebe90"

Rectifier le fichier etc/fstab/ en fonction de la configuration. Au minimum il faudra ceci (/Home n'est pas obligatoire):

#:/ # nano /etc/fstab
UUID=4cf54c99-09c7-454a-92fd-21b785c50552 / ext4 errors=remount-ro 0 1
UUID=3f332488-3a43-46b3-b20f-4373e9467dfe /home ext4 defaults 0 2
UUID=47bfcfed-42b4-4a80-a93d-69ff4dd36109 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Créer les répertoires de montage des disques de la nouvelle machine : (en fonction de la configuration, de vos choix et de votre humeur…)

#:/ # mkdir /media/cdrom0

## Configuration de l''environnement graphique

On a choisi Xfce, mais on peut utiliser n'importe quel environnement… Gnome, Kde, aucun…)

Attention: Il faut également installei un gestionnaire de connexion !

#:/ # apt-get install xfce4 slim

On peut aussi passer par tasksel pour sélectionner le bureau:

#:/ # tasksel

Vérifier qu'un gestionnaire de connexion a bien été installé (Tasksel a du s'en occuper normalement):

#:/ # apt-cache policy lightdm

lightdm:
  Installé : 1.18.3-1
  Candidat : 1.18.3-1
 Table de version :
 *** 1.18.3-1 500
        500 http://deb.debian.org/debian stretch/main amd64 Packages
        100 /var/lib/dpkg/status

Installation du noyau et de Grub2

Choisir le noyau:

#:/ # apt-cache search linux-image

linux-image-amd64 - Linux pour les ordinateurs 64 bits (métapaquet)
...
linux-image-4.9.0-4-amd64 - Linux 4.9 for 64-bit PCs
...
linux-image-4.13.0-0.bpo.1-amd64 - Linux 4.13 for 64-bit PCs
...

(choisir dans la liste proposée…)

Récupérer le kernel-img.conf

Avant l'installation du kernel il faut récupérer le kernel-img.conf qui permette de convenablement lancer initramfs à l'installation du nouveau noyau dans le chroot.

Ce fichier n'existe pas dans le système créé par debootstrap. La ligne intéressante : do_initrd = yes

Sortir du chroot

#:/ # exit
# cp /etc/kernel-img.conf /mnt/chroot/etc/kernel-img.conf

Installer le noyau

Entrer à nouveau dans le chroot pour installer le noyau:

# chroot /mnt/chroot/ /bin/bash
#:/ #
#:/ # apt install -y linux-image-amd64

Installer Grub

Maintenant… Modifier grub pour que ce nouveau système soit opérationnel :

# apt install -y os-prober
# update-grub

Création du fichier de configuration GRUB…
...
Debian GNU/Linux 9 (stretch) trouvé sur /dev/sdb7
...

Divers - mots de passe - Système standard

Sortir du chroot

#:/ # exit

Installer les logiciels complémentaires (navigateur Web (Firefox), GParted et Midnight Commander…)

# chroot /mnt/chroot/ /bin/bash
#:/ #
#:/ # apt install -y gparted firefox-esr mc

Debootstrap installe un système sans mots de passe… Pour redémarrer maintenant dans le nouveau système il faut définir les définir les mots de passes.

# nano /etc/passwd

...
laurent:x:1000:1000:Laurent L,,,:/home/laurent:/bin/bash
...

Eenlever le x pour que cela ressemble à ça :

laurent::1000:1000:Laurent L,,,:/home/laurent:/bin/bash

Ceci afin de pouvoir connecter les utilisateurs “normaux”. Il faut maintenant créer les mots de passe.

#:/ # passwd

Entrez le nouveau mot de passe UNIX : 
Retapez le nouveau mot de passe UNIX : 
passwd: password updated successfully

#:/ # su laurent -c passwd

Entrez le nouveau mot de passe UNIX : 
Retapez le nouveau mot de passe UNIX : 
passwd: password updated successfully

Il est fortement recommandé (avant de sortir) d'installer la tâche standard de Taskel, cela installe une série de paquets essentiels au nouveau système:

#:/ # tasksel install standard

Et on peut enfin redémarrer sur le nouveau système :

#:/ # exit
# umount /mnt/chroot/sys
# umount /mnt/chroot/proc
# umount /mnt/chroot/dev/pts
# umount /mnt/chroot/dev
# umount /mnt/chroot/tmp
# umount /dev/sdb7
#:/ # reboot

A propos de Tasksel

Pour avoir un système un peu plus complet, en fonction des besoins, on peut utiliser l'utilitaire Tasksel.

La commande suivante détaille les “tâches” que Tasksel peut réaliser ( ce sont les mêmes choix que dans une installation “classique” qui sont proposés)

# tasksel --list-tasks
u desktop Debian desktop environment
u web-server Web server
u print-server Print server
u database-server SQL database
u dns-server DNS Server
u file-server File server
u mail-server Mail server
u ssh-server SSH server
u laptop Laptop

Chaque “tâche” installe un ensemble de paquets utiles pour certaines utilisations. “u” pour non installé. Une tâche installée commence par “i”.

Il reste plus qu'à taper dans la console :

# tasksel --task-packages nom_tache

Il existe une autre tâche, qui n'est pas dans la liste ci-dessus :

tasksel install standard

Cette commande installe un ensemble de paquets “standards”.

debian/debian-debootstrap-chroot.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1