Installation Debian Stretch avec Debootstrap et chroot

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
Installation Debian Stretch avec Debootstrap et chroot
Domaine(s): Logiciels
Action(s) effectuée(s): Installation
Paquet(s):
Version debian: Stretch, Stable
Branche:
Support sur lequel Debian est installé: Serveur, Ordinateur de bureau, Ordinateur portable, Mini-pc
Environnement graphique:
Niveau de difficulté: Intermédiaire
Langage(s) de programmation utilisé(s):
Type(s) de Matériel(s):
Marque du/des matériel(s):
Connectique:
Protocole(s):

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…

Parti pris : utilisation de nano comme éditeur


Pré-requis

1) Vous disposez donc d'une partition libre disposant de suffisamment d'espace (entre 10 et 30Go au minimum) sur un de vos disques:


# fdisk -l

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

Assurez-vous que cette partition n'est pas montée:

# umount /dev/sdb7

umount: /dev/sdb7 : non monté.


2) Formatez la partition qui va recevoir la Stretch:

J'ai choisi de formater en ext4, vous pouvez choisir le système de fichiers de votre choix bien sûr.

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


# mkfs -V -t ext4 /dev/sdb7


S'il y a déjà un système de fichier sur la partition vous devrez accepter de 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éation du répertoire ou sera montée la partition fraîchement formatée.

J'ai 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 votre Debian).


# apt install -y debootstrap


Les options de debootstrap sont nombreuses, je vous invite à lire le man...


$ man debootstrap


Installation de la Stretch avec debootstrap (j'ai choisi une Stretch amd64, rien ne vous empêche de choisir une Stretch i386 ou bien même une Sid…)


  Astuces :


1) Si vous avez une mauvaise connexion, mais disposez d'un CD d'installation, vous pouvez remplacer l'adresse du dépôt par file:/cdrom/debian/


# mount -o loop debian-9.2.1-amd64-netinst.iso /media/cdrom/


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


Si vous avez cette erreur:

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


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


2) Vous pouvez utiliser un dépôt local pour cette installation. Détails ici Apt-cacher-ng


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


3) Si vous n'avez rien de tout ça, installation via le réseau. Un peu long, mais c'est comme ça...

En ajoutant l'option --variant=minbase à debootstrap, vous installerez 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" vous 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, votre Stretch est installée, mais elle est loin d'être fonctionnelle et « autonome ». Vous ne pourrez notamment pas démarrer dessus…

C'est dans un chroot que nous allons finaliser l'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 il vous faudra 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


Vous devrez ensuite « normaliser les comptes et groupes » de votre nouvelle Stretch (afin que les utilisateurs et groupes aient les mêmes identifiants dans votre système "hôte" et dans votre chroot) tapez 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


Vous pouvez maintenant (tadaa!) entrer dans votre environnement chroot:


# chroot /mnt/chroot/ /bin/bash


#:/ #


Finalisation de l'installation et réglages de la Stretch

Vous êtes maintenant dans votre nouvelle Wheezy mais ce n'est pas terminé...

Votre système est incomplet, il est toujours impossible de démarrer dessus…

"locales"

Nous allons maintenant mettre en français (ou ce que vous voulez…), configurer la localisation, et surtout… régler l'heure. L'heure est très importante. Si vous démarrez sur ce nouveau système avec une mauvaise heure (dans le futur par rapport au système sur lequel vous êtes), le prochain démarrage vous laissera un goût amer, vous serez obligé 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


Problème lié à l'installtion via un CDROM. Si vous installez avec l'option --no-check-gpg vous aurez 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


Le sources.list

Nous allons maintenant compléter nos dépôts

J'ai ajouté le dépôt de rétroportages (backports) pour avoir accès à un noyau récent, vous n'êtes bien sûr 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

Mettons à jour :


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


Clavier

Configurons 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

Si vous n'avez pas cette sortie: fr-latin9 (Cela arrivait avec Jessie et Wheezy, le problème semble réglé en Stretch) recommencez:


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


hostname et fstab

Nous sortons maintenant 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/


Nous entrons à nouveau dans notre système chrooté


# chroot /mnt/chroot/ /bin/bash


#:/ #


+ Réglage du fsab

Avec la commande BLKID nous récupérer le UUID (Universally Unique Identifier) de vos disques pour votre nouveau fstab. Ne vous faites pas prendre, le formatage aura changé l'UUID de la partition de votre chroot...)


#:/ # 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"


A rectifier EVIDEMMENT en fonction de votre configuration (et de vos envies...) 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éation des répertoires de montage des disques de la nouvelle machine : (en fonction de votre configuration, de vos choix et de votre humeur...)


#:/ # mkdir /media/cdrom0


L'environnement graphique

Maintenant ? Un environnement graphique ! (J'ai choisi Xfce, vous faites comme vous voulez… Gnome, Kde, aucun…)


 ATTENTION : N'oubliez pas d'installer aussi un gestionnaire de connexion !


#:/ # apt-get install xfce4 slim


Vous pouvez aussi passer par tasksel pour sélectionner le bureau:


#:/ # tasksel


Vérifiez qu'un gestionnaire de connexion a bien été installé (Tasksel a du s'en occuper pour vous 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

Le noyau et Grub2

 INFORMATION : Note concernant Grub. Vous êtes maintenant face à deux choix:

  1. Installer grub dans votre chroot (cela écrasera le chroot du système hôte (Attention, si votre machine démarre avec l'UEFI...)
  2. Mettre à jour Grub sur le système Hôte pour que votre nouveau système soit prit en compte.


Nous faisons ici le choix de mettre à jour le Grub du système 'hôte" car c'est notre système principal. Le système installé sur le chroot est ici une système de secours.

Nous installons un noyau… Ce serait bête d'oublier !

Choisissez votre 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
...

(choisissez dans la liste qu'il vous propose, Celui que j'ai choisis n'est qu'un exemple que vous n'êtes pas obligé de suivre…)

Avant l'installation du kernel il faut récupérer votre 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

Nous sortons du chroot

#:/ # exit


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


Nous entrons à nouveau dans le chroot pour installer le noyau:


# chroot /mnt/chroot/ /bin/bash


#:/ #


#:/ # apt install -y linux-image-amd64


Puis nous sortons à nouveau du Chroot pour mettre à jour le Grub de l'hôte:

#:/ # exit


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

 ATTENTION : Attention, je suis sous Grub2. Si vous êtes sous Grub "legacy" la commande est différente évidemment…


# 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

Derniers "fignolages"… J'installe un navigateur Web (Firefox), GParted et Midnight Commander.

Vous pouvez bien sûr adpater cette commande pour installer vos logiciels habituels !


# chroot /mnt/chroot/ /bin/bash


#:/ #


#:/ # apt install -y gparted firefox-esr mc


Enfin, les mots de passe…

Debootstrap installe un système sans mots de passe… Si vous redémarrez maintenant vous vous connecterez en root dans votre nouveau système sans montrer patte blanche… Un peu gênant, non ?


# nano /etc/passwd

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

Vous enlevez le x pour que cela ressemble à ça :

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

Ceci afin de pouvoir connecter vos 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

Je suggère fortement (avant de sortir) d'installer la tâche standard de Taskel, cela installe une série de paquets essentiels à votre nouveau système:


#:/ # tasksel install standard


Et vous pouvez enfin redémarrer sur votre nouveau système :


#:/ # exit


Vous n'êtes pas un sauvage, vous démontez proprement:


# umount /mnt/chroot/sys


# umount /mnt/chroot/proc


# umount /mnt/chroot/dev/pts


# umount /mnt/chroot/dev


# umount /mnt/chroot/tmp


# umount /dev/sdb7


Voilà : vous disposez d'une toute fraîche installation, fonctionnelle !


#:/ # reboot


Tasksel

Pour avoir un système un peu plus complet, en fonction de vos besoins, vous pouvez utiliser l'utilitaire Tasksel.

La commande suivante détaille les "tâches" que Tasksel peut réaliser pour vous… (vous remarquerez que 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 ne vous 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". Je vous renvoie à la page Tasksel pour plus de détails.

Divers, sources

Lenny Debootstrat/Chroot - source : Wiki debian-fr.xyz

Squeeze Debootstrat/Chroot - source : Wiki debian-fr.xyz

Wheezy Debootstrat/Chroot - source : Wiki debian-fr.xyz

Le Chroot - source : forum debian-fr.xyz

Debootstrap - source : forum debian-fr.xyz

Lol (discussion) 12 novembre 2017 à 08:39 (UTC)