Installation Debian Stretch avec Debootstrap et chroot
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…)
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:
- Installer grub dans votre chroot (cela écrasera le chroot du système hôte (Attention, si votre machine démarre avec l'UEFI...)
- 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)