1. But de l’article▲
Cet article va vous expliquer comment installer n’importe quelle distribution Linux depuis une autre distribution, et notamment des distributions n’ayant pas les mêmes gestionnaires de paquets.
Ce type d’opérations, en plus de l’intérêt pédagogique, vous permettra d’installer n’importe quel Linux depuis celui démarré.
Pour cela, nous utiliserons essentiellement la technique du « chroot ».
« chroot » contraction de « change root ». La commande va changer le dossier racine du processus en cours, les fichiers ou dossiers ouverts hors de la nouvelle racine restent accessibles.
Cette commande permet d’isoler l’accès à une partie du système de fichiers. Elle est l’ancêtre des conteneurs tels que Docker qui eux vont plus loin dans l’isolation.
1-1. Contexte d’installation▲
Les opérations ont été réalisées dans une machine virtuelle en démarrant sur une image CD Ubuntu Live 18.04 en UEFI.
2. Les différentes distributions Linux▲
Une distribution Linux est un packaging incluant un noyau Linux, une interface graphique (étant elle même un package logiciel, les principales étant Gnome, KDE, Cinnamon,...) et un ensemble de logiciels. Il est aussi possible d’effectuer une installation sans interface graphique.
Il y a pléthore de distributions Linux, mais la plupart sont basées sur d’autres distributions
Les deux familles de distributions les plus connues sont :
- les bases Debian : Debian, Ubuntu (et ses variantes Lubuntu, Xubuntu), SteamOS, Raspbian (pour les RaspBerry), Linux Mint (dérivé d’Ubuntu, donc de Debian) ;
- les bases Redhat : Redhat, Fedora, CentOS, SUSE.
Nous pouvons à cela ajouter d’autres distributions plutôt à usage d’utilisateurs avancés :
- Slackware : plus vieille distribution en activité à ma connaissance ;
- Gentoo : système entièrement compilé à partir des sources ;
- ArchLinux : distribution en rolling release, dont Manjaro est dérivée ;
- Alpine Linux : distribution très légère, base de beaucoup de conteneurs Docker notamment.
2-1. Les gestionnaires de paquets▲
Un gestionnaire de paquets est un ensemble d’outils fourni par une distribution permettant d’installer des logiciels.
Les paquets vont contenir les fichiers à installer à des emplacements précis ainsi que des scripts de pré et post installation permettant la configuration. Ils vont également inclure leurs dépendances à d’autres paquets, le gestionnaire de paquet installant automatiquement celles-ci.
Chaque famille de distribution va avoir son propre système de gestion de paquets pour l’installation de logiciels :
- format .deb : pour les bases Debian, avec les outils apt, apt-get, dpkg ;
- format .rpm : pour les bases Redhat, avec la commande rpm et les outils urpmi, dnf (pour Fedora), YasT (pour SUSE) ;
- format .pkg : pour les bases Slackware avec pkgtool ;
- format .apk : pour les bases Alpine Linux, avec apk-tools
- format .xz ou .zst : pour Archlinux avec le gestionnaire pacman.
À ceci peuvent s’ajouter des surcouches comme Synaptic ou Ubuntu softwarepour Ubuntu.
3. Partie commune à n’importe quelle installation▲
Quelle que soit la distribution installée, le processus sera le même :
- préparation du disque (création des partitions, du système de fichiers) ;
- création d’un système minimal « chrootable »* ;
- passage en chroot (voir explication dans le chapitre 1But de l’article) ;
-
installation minimale en chroot pour que le système soit utilisable ;
- fixation du mot de passe root (et création si nécessaire d’un utilisateur supplémentaire),
- configuration des partitions à monter (/etc/fstab),
- installation d’un noyau et d’un initrd/initramfs,
- installation d’un chargeur d’amorçage (nous utiliserons GRUB, mais il est possible d’en utiliser un autre) ;
-
redémarrage et réglages post-installation :
- configuration du réseau,
- positionnement des locales pour la langue et le clavier,
- positionnement de la timezone.
Les opérations décrites dans ce chapitre devront être effectuées en préliminaire, quelle que soit la distribution installée.
*J’entends par ceci un système minimal contenant tous les binaires, toutes les bibliothèques, tous les fichiers de configuration nécessaires à la commande lancée en « chroot » (dans notre cas un shell et les commandes annexes nécessaires)
3-1. Langue française▲
Depuis l’ISO Ubuntu, nous passerons tout d’abord en clavier français pour avoir un confort d’utilisation.
En mode UEFI, l’ISO Ubuntu 18.04 se charge en anglais. En mode Legacy, une boite de dialogue propose le choix de la langue de l’interface avant de charger le bureau.
Nous allons dans le menu de configuration pour passer en langue française :
Une fois le nouvel agencement clavier installé, il faut le sélectionner dans la barre en haut :
Si vous effectuez l’opération depuis un système opérationnel, vous n’aurez pas cette manipulation à effectuer.
Ubuntu 18.04 est une version vieillissante, mais rien ne changera avec les versions suivantes.
3-2. Partitionnement▲
Je vais présenter ci-dessous le processus de création de partitions.
Il est possible d’appliquer le principe de ce tutoriel pour créer un dual-boot avec une autre distribution que celle active. Il vous faudra dans ce cas adapter cette partie en réduisant par exemple une partition existante de façon à pouvoir installer la nouvelle distribution dans une nouvelle partition sans écraser l’existant. Vous n’aurez pas à installer GRUB dans ce cas, l’idée étant d’ajouter la nouvelle distribution au menu GRUB préexistant.
Il nous faut tout d’abord ouvrir un terminal.
Nous passons ensuite en root grâce à la commande :
sudo -i
Depuis le terminal, nous lançons ensuite GParted :
Le disque ne fait que 10 Go, car c’est un disque virtuel pour une machine virtuelle.
Il est bien sûr possible d’utiliser parted ou gdisk (ou cfdisk en mode Legacy) pour créer les partitions.
UEFI/Legacy BIOS :
Dans le cas de l’utilisation en mode Legacy (déprécié), l’amorce du système sera contenue dans le 1er secteur du disque, à la suite de la table de partition MBR.
Dans le cas d’une installation en UEFI, cas qui sera présenté ici, il faudra créer une table de partitions GPT (Guid Partition Table) contenant une partition ESP (EFI System Partition). Chaque OS stockera un fichier .efi de chargement dans cette partition. Dans le cas d’un dual-boot, cette partition devrait déjà exister, vous pouvez donc passer la partie suivante.
3-2-1. Création de la table de partition UEFI▲
Nous créons ensuite la partition ESP qui est en fait une partition FAT32 avec des attributs supplémentaires (sauf en cas d’utilisation en mode Legacy avec une table de partition MBR).
Pour cela, il faudra cliquer sur le bouton droit au niveau de l’espace disponible :
Nous créons une partition FAT32 de 200 Mo :
Sur le même principe, nous créons une partition ext4 qui contiendra notre racine et une partition pour le swap :
Les partitions seront physiquement écrites après clic sur l’icône en haut.
Vous aurez une demande de confirmation, cette opération écrase toutes les données précédemment contenues sur le disque :
Ces opérations auraient pu être effectuées en ligne de commande, mais l’avantage d’utiliser GParted, c’est qu’il formate les partitions en même temps qu’il les crée.
Il nous restera à positionner le drapeau ESP, cela se fera en cliquant avec le bouton de droite sur la partition et en sélectionnant « manage flags » :
Le fait de cocher le drapeau « esp » cochera automatiquement le drapeau « boot » et décochera msftdata coché par défaut.
Il n’est possible d’appliquer les drapeaux qu’une fois la validation de la création des partitions effectuées.
3-2-2. Montage de la partition▲
Une fois le partitionnement effectué, nous montons la partition qui stockera la racine de notre système depuis la ligne de commande :
mount /dev/sda2 /mnt
4. Debian▲
Pour effectuer l’installation d’une distribution à base Debian, nous utiliserons un outil nommé debootstrap qui permet l’installation des bases Debian. Cet outil va installer une base de la distribution sélectionnée dans un dossier choisi. Le choix se fera en communiquant le nom de la distribution en paramètre (comme nous le verrons un peu plus loin). deboostrap est fourni dans les paquets.
Ci-dessous une liste des versions installables avec deboostrap :
- stretch pour Debian 9 ;
- buster pour Debian 10 ;
- bullseye pour Debian 11, ;
- xenial pour Ubuntu 16.04 ;
- bionic pour Ubuntu 18.04 ;
- focal pour Ubuntu 20.04.
Liste non exhaustive, de plus anciennes versions sont disponibles.
Vous trouverez la liste des distributions gérées par debootstrap dans /usr/share/debootstrap/script
Pour pouvoir installer deboostrap, il va nous falloir modifier le fichier /etc/apt/source.list en y ajoutant le dépôt « universe » (dépôts des logiciels libres et open source maintenus par la communauté).
Fichier /etc/apt/sources.list avant modification :
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted
deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
Fichier /etc/apt/sources.list après modification :
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe
deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
Une fois le fichier modifié, nous exécutons la commande suivante :
apt update
Nous installons ensuite debootstrap :
apt install debootstrap
puis nous lançons l’installation de notre distribution Debian 10 Buster dans le dossier /mnt (le point de montage de la racine de notre futur système) :
debootstrap buster /mnt
L’option « buster » représentant le nom de la distribution à préparer et /mnt le dossier où l’installation doit être effectuée.
Je vous invite à consulter la documentation pour voir les autres options de debootstrap.
Comme précisé dans le chapitre 3, il est ici sous-entendu que la partition qui contiendra la distribution est formatée et montée dans /mnt, et qu’une partition est préparée pour l’UEFI.
debootstrap va télécharger les paquets de base nécessaires à la distribution, les décompresser et les configurer dans le dossier sélectionné.
Vous pouvez voir ci-dessous le résultat fourni sur la console et la liste des paquets installés :
I: Keyring file not available at /usr/share/keyrings/debian-archive-keyring.gpg; switching to https mirror https://deb.debian.org/debian
I: Retrieving InRelease
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: adduser debian-archive-keyring fdisk gcc-8
-base gpgv libacl1 libapt-pkg5.0
libattr1 libaudit-common libaudit1 libblkid1 libbz2-1
.0
libc6 libcap-ng0 libcom-err2 libdb5.3
libdebconfclient0 libext2fs2 libfdisk1 libffi6 libgcc1 libgcrypt20 libgmp10 libgnutls30 libgpg-error0 libhogweed4 libidn2-0
liblz4-1
liblzma5 libmount1 libncursesw6 libnettle6 libp11-kit0 libpam0g libpcre3 libseccomp2 libselinux1 libsemanage-common libsemanage1 libsepol1 libsmartcols1 libss2 libstdc++6
libsystemd0 libtasn1-6
libtinfo6 libudev1 libunistring2 libuuid1 libzstd1 zlib1g
I: Found additional base dependencies: dmsetup libapparmor1 libapt-inst2.0
libargon2-1
libbsd0 libcap2 libcap2-bin libcryptsetup12 libdevmapper1.02
.1
libdns-export1104 libelf1 libestr0 libfastjson4 libidn11 libip4tc0 libip6tc0 libiptc0 libisc-export1100 libjson-c3 libkmod2 liblocale-gettext-perl liblognorm5 libmnl0 libncurses6 libnetfilter-conntrack3 libnewt0.52
libnfnetlink0 libnftnl11 libpopt0 libprocps7 libslang2 libssl1.1
libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libxtables12 lsb-base openssl xxd
I: Checking component main on https://deb.debian.org/debian...
I: Retrieving libacl1 2
.2
.53
-4
I: Validating libacl1 2
.2
.53
-4
I: Retrieving adduser 3
.118
I: Validating adduser 3
.118
I: Retrieving libapparmor1 2
.13
.2
-10
I: Validating libapparmor1 2
.13
.2
-10
I: Retrieving apt 1
.8
.2
.3
I: Validating apt 1
.8
.2
.3
…
I: Configuring tasksel...
I: Configuring libc-bin...
I: Configuring systemd...
I: Configuring ca-certificates...
I: Base system installed successfully.
Les … dans la sortie de la commande debootstrap indiquent une suppression d’informations que j’ai effectuée pour ne laisser qu’un extrait, ce principe sera appliqué sur toutes les sorties.
Nous nous plaçons ensuite dans le dossier /mnt pour faire un « chroot » dans le système de destination pour continuer la configuration. Pour cela, nous nous plaçons dans le dossier et nous montons les pseudo-dossiers /proc, /sys, /dev dans le sous-dossier contenant le futur système :
cd /mnt
mount –bind /proc proc
mount –bind /sys sys
mount –bind /dev dev
chroot .
La commande chroot attend en paramètres le dossier de destination et la commande à lancer. Sans indication, la commande lancée est /bin/sh (depuis le chroot, qui doit donc contenir celle-ci ainsi que ses dépendances comme les bibliothèques liées). Le « . » qui suit la commande chroot indique le dossier actuel.
La première opération que nous allons effectuer sera de mettre un mot de passe sur le compte root :
root@ubuntu:/# passwd root
New password:
Retype new password:
passwd: password updated successfully
Nous modifions ensuite le fichier /etc/fstabpour indiquer les partitions à monter :
# UNCONFIGURED FSTAB FOR BASE SYSTEM
/dev/sda2 / ext4 defaults,rw 0
1
/dev/sda3 none swap sw 0
1
Dans l’exemple ci-dessus, nous indiquons de monter notre partition ext4 en lecture/écriture, ainsi que notre partition de swap.
Nous éditons le fichier /etc/hostname (il suffit de mettre le nom voulu dans le fichier) afin d’y positionner le nom choisi pour la machine. Selon le besoin, il pourra être pertinent de positionner le nom de la machine dans le fichier /etc/hosts.
Il va nous falloir ensuite installer un noyau.
Pour rechercher les noyaux disponibles :
apt-cache search linux-image
Dans la liste des noyaux disponibles, je choisis le noyau disponible 4.19.0.18 non signé
apt install linux-image-4
.19
.0
-18
-amd64-unsigned
à adapter à votre situation.
Il nous reste enfin à installer le chargeur d’amorçage GRUB.
Nous commençons par créer le point de montage pour la partition UEFI :
mkdir -p /boot/efi
nous montons ensuite la partition UEFI :
mount /dev/sda1 /boot/efi
puis nous procédons à l’installation des paquets de GRUB :
apt install grub-efi
Une fois l’installation des paquets de GRUB effectuée, nous procédons à l’installation proprement dite dans la partition UEFI :
grub-install
GRUB va détecter le type d’installation à faire et l’effectuer, vous devriez avoir le retour suivant :
Installing for
x86_64-efi platform.
Installation finished. No error reported.
Nous créons ensuite automatiquement le fichier de configuration GRUB :
update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4
.19
.0
-18
-amd64
Found initrd image: /boot/initrd.img-4
.19
.0
-18
-amd64
Adding boot menu entry for
EFI firmware configuration
Si vous n’exécutez pas la commande update-grub, il n’y aura pas de fichier de configuration pour GRUB, et vous tomberez sur l’écran suivant :
Nous sortons ensuite du chroot en lançant simplement la commande :
exit
Avant de redémarrer, pour nous faciliter la configuration réseau, nous copions le fichier /etc/network/interfaces ainsi que le fichier /etc/resolv.conf qu’il faudra modifier en y mettant les adresses IP des DNS.
cp /etc/network/interfaces etc/network/interfaces
cp etc/resolv.conf etc/
puis nous éteignons la machine proprement :
poweroff
Au redémarrage, vous aurez le prompt GRUB pour le système nouvellement installé :
4-1. Configuration post-installation▲
Pour les étapes de post-installation, nous effectuerons le paramétrage :
- du réseau ;
- de la langue du système ;
- du fuseau horaire.
4-1-1. Configuration réseau▲
Nous commençons par activer le réseau. Il nous faut tout d’abord le nom du périphérique :
ip addr show
Avec la configuration actuelle, vous serez en clavier Qwerty.
La commande retourne enp0s3, nom de la carte réseau dans la machine virtuelle :
1
: lo: <
LOOPBACK,UP,LOWER_UP>
mtu 65536
qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00
:00
:00
:00
:00
:00
brd 00
:00
:00
:00
:00
:00
inet 127
.0
.0
.1
/8
scope host lo
valid_lft forever preferred_lft forever
inet6 ::1
/128
scope host
valid_lft forever preferred_lft forever
2
: enp0s3: <
BROADCAST,MULTICAST,UP,LOWER_UP>
mtu 1500
qdisc pfifo_fast state UP group default qlen 1000
link/ether 08
:00
:27
:2c:2c:3a brd ff:ff:ff:ff:ff:ff
inet 10
.0
.2
.15
/24
brd 10
.0
.2
.255
scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe2c:2c3a/64
scope link
valid_lft forever preferred_lft forever
Nous l’intégrons dans le fichier /etc/network/interface.
Le fichier devra ressembler à ceci :
auto lo enp0s3
iface lo inet loopback
iface enp0s3 inet dhcp
Ceci configurera la carte réseau en DHCP. Pour une IP fixe, remplacez « inet dhcp » par « inet static » et entrez les informations complémentaires comme ci-dessous :
address 192
.168
.1
.100
netmask 255
.255
.255
.0
gateway 192
.168
.1
.1
dns-nameserver 192
.168
.1
.1
# pour Ubuntu
À adapter à votre réseau.
Ensuite, nous redémarrons le service ainsi :
service networking restart
ou ainsi :
systemctl restart networking
Il faudra également que les serveurs DNS soient configurés dans le fichier /etc/resolv.conf.
4-1-2. Configuration des locales▲
Nous installons ensuite les locales :
apt install locales
puis les configurons :
dpkg-reconfigure locales
Pour que les changements soient pris en compte, il faut fermer et rouvrir la session, puis mettre à jour la liste des paquets :
apt update
Vous verrez le téléchargement de translation-fr.
4-1-3. Clavier en français▲
4-1-4. Fuseau horaire▲
Il reste à configurer le fuseau horaire :
dpkg-reconfigure tzdata
Sortie sur la console :
Current default time zone: 'Europe/Paris'
Local
time is now: Fri May 27
15
:57
:03
CEST 2022
.
Universal Time is now: Fri May 27
13
:57
:03
UTC 2022
.
4-1-5. Mise à jour du fichier fstab▲
Nous allons remplacer les noms des périphériques dans le fichier par leur UUID. Ceci n’est pas obligatoire, mais vous permettra de ne pas avoir de problèmes de démarrage en cas d’ajout ou de suppression de disques dans la machine ou de montage du disque système dans une autre machine.
Je récupère les UUID grâce à la commande blkid et les inclus dans le fichier /etc/fstab. :
J’édite ensuite le fichier pour obtenir finalement :
UUID
=
99d0b0b8-1f37-4449
-a89e-f49444ff70bf / ext4 defaults,rw 0
1
UUID
=
50d89b74-296c-41e6-8400
-afe1e65e2b45 none swap sw 0
1
Les UUID sont uniques et seront donc différents chez vous.
Il faut ensuite mettre l’initramfs à jour :
update-initramfs -u
Vous aurez un message d’erreur indiquant de mettre à jour le fichier /etc/initramfs-tools/conf.d/resume. Ceci est nécessaire pour la gestion de la mise en veille.
Puis actualiser GRUB :
update-grub
5. Ubuntu▲
Nous installons pour l’exemple une version Ubuntu 18.04 Bionic Beaver.
L’installation se fait avec debootstrap, tout comme pour Debian vu dans le chapitre précédent.
deboostrap bionic /mnt
Nous entrons ensuite en chroot comme vu précédemment, puis changeons le mot de passe et mettons à jour le fichier /etc/fstab.
nano n’est pas installé par défaut dans le debootstrap Ubuntu, nous l’installons :
apt install nano
Nous installons ensuite un noyau.
Lors de l’installation du package de noyau, GRUB Legacy est également installé. Nous ne le configurerons pas, la version installée étant la version non UEFI.
Il vous faut donc installer le paquet grub-efi :
Apt install grub-efi
Au redémarrage, le système se charge, mais ne propose pas de menu GRUB.
Si vous souhaitez avoir le menu GRUB, ajoutez la ligne suivante dans /etc/default/grub :
GRUB_TIMEOUT_STYLE
=
menu
Pour prendre en compte le changement, effectuez un :
update-grub
Vous pouvez bien sûr modifier directement le fichier /etc/default/grub depuis le chroot avant le 1er démarrage.
5-1. Configuration post-installation▲
La version Ubuntu 18.04 utilise dorénavant netplan au lieu de ifupdown. Le fichier /etc/network/interfaces n’est plus utilisé. Il va falloir créer un fichier de configuration au format yaml.
Voici un exemple de fichier /etc/netplan/config.yaml :
network:
ethernets:
enp0s3:
dhcp4: true
version: 2
Et un autre pour une IP fixe :
network:
ethernets:
enp0s3:
addresses:
- 192
.168
.1
.10
/24
gateway4: 192
.168
.1
.1
nameservers:
addresses:
- 192
.168
.1
.1
version: 2
Adressage à adapter à votre situation.
La configuration sera prise en compte après l’appel de la commande :
netplan apply
Vous pouvez toujours utiliser l’ancienne méthode en installant le paquet ifupdown. Il vous faudra le faire depuis le chroot.
Pour les locales, les paquets sont déjà présents, vous aurez juste à faire la configuration :
dpkg-reconfigure locales
puis :
apt update
Pour passer le clavier en français, utilisez la commande suivante :
dpkg-reconfigure keyboard-configuration
Il reste ensuite à reconfigurer le fuseau horaire :
dpkg-reconfigure tzdata
6. Devuan▲
Le projet Devuan est un fork du projet Debian datant de la controverse due au passage de Debian à systemd au lieu d’init, certains développeurs considérant que systemd ne respecte pas le principe KISS.
Les versions disponibles sont :
- Devuan 1.0 Jessie, basée sur Debian 8 Jessie ;
- Devuan 2.0 ASCII, basée sur Debian 9 Stretch ;
- Devuan 3.0 Beowulf, basée sur Debian 10 Buster ;
- Devuan 4.0 Chimaera, basée sur Debian 11 Bulleye.
Le principe sera le même que pour Debian et utilisera debootstrap. Par contre, il faudra récupérer le paquet debootstrap depuis les dépôts Devuan, la version debootstrap Debian n’intégrant pas les distributions Devuan.
Une fois les partitions créées, nous récupérons le paquet dans les dépôts Devuan :
wget http://deb.devuan.org/devuan/pool/main/d/debootstrap/debootstrap_1.0
.126
+nmu1devuan1_all.deb
Les versions de paquets peuvent évoluer dans le temps, vous pouvez vous connecter sur http://deb.devuan.org pour contrôler la version à jour.
Une fois le paquet téléchargé, nous l’installons :
dpkg -i http://deb.devuan.org/devuan/pool/main/d/debootstrap/debootstrap_1.0
.126
+nmu1devuan1_all.deb
puis nous lançons la commande debootstrap, avec dans notre cas la version beowulf :
debootstrap beowulf /mnt
Ce qui renvoie :
: Keyring file not available at /usr/share/keyrings/devuan-archive-keyring.gpg; switching to https mirror https://pkgmaster.devuan.org/merged
I: Retrieving InRelease
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Checking component main on https://pkgmaster.devuan.org/merged...
I: Retrieving adduser 3
.118
I: Validating adduser 3
.118
…
I: Configuring libc-bin...
I: Configuring ca-certificates...
I: Base system installed successfully.
Le reste de l’installation s’effectuera comme pour Debian.
Pour les cartes réseau, Devuan garde l’ancienne nomenclature eth0.
7. Fedora▲
La distribution Fedora est dérivée de RedHat qui la subventionne.
Pour effectuer une installation de Fedora, nous ne pouvons pas utiliser debootstrap, qui n’est fonctionnel que pour des bases Debian.
Comme système de base, nous allons télécharger une archive destinée aux conteneurs.
Nous commençons par créer un dossier temporaire dans le dossier /mnt :
cd /mnt
mkdir tmp
cd tmp
Nous y téléchargeons notre archive depuis un miroir Fedora :
wget https://mirror.in2p3.fr/pub/fedora/linux/releases/36
/Container/x86_64/images/Fedora-Container-Base-36
-1
.5
.x86_64.tar.xz
Une fois le téléchargement effectué, nous décompressons l’archive :
unxz Fedora-Container-Base-36
-1
.5
.x86_64.tar.xz
tar -xvf Fedora-Container-Base-36
-1
.5
.x86_64.tar
tar est capable de décompresser les fichiers avant de faire l’extraction de l’archive il faudra ajouter l’option :
-J pour les archives xz
-j pour les archives bz2
-z pour les archives gzip (les plus courantes)
Une fois l’archive décompressée, vous obtenez un dossier avec pour nom une suite hexadécimale et quelques fichiers .json.
Ce dossier contient une archive .tar nommée layer.tar.
Nous la déplaçons à la racine /mnt :
mv ed8a9ffa6e2bbc847698b0d7381bb8a1c8052dcdd16ed91173f5c7ecce38d80a/layer.tar ../
Une fois le fichier .tar déplacé, nous pouvons effacer ce qu’il reste dans le dossier tmp :
cd ..
rm tmp/* -rf
Nous décompressons le fichier .tar :
tar -xvf layer.tar
rm layer.tar
À ce stade, nous avons le contenu minimal permettant de continuer en chroot.
Nous copions le fichier resolv.conf :
cp /etc /resolv.conf etc/
puis entrons dans le chroot :
mount –bind /proc proc
mount –bind /sys sys
mount –bind /dev dev
chroot .
Nous installons les paquets complémentaires pour avoir un système exploitable :
dnf groupinstall "Minimal Install"
dnf (Dandified Yum) est le gestionnaire de paquets succédant à yum, le gestionnaire de paquets de ReHat et Fedora.
Sortie de la commande dnf :
Fedora 36
- x86_64 7
.2
MB/s |
81
MB 00
:11
Fedora 36
openh264 (
From Cisco) - x86_64 1
.5
kB/s |
2
.5
kB 00
:01
Fedora Modular 36
- x86_64 2
.4
MB/s |
2
.4
MB 00
:01
Fedora 36
- x86_64 - Updates 4
.3
MB/s |
21
MB 00
:04
Fedora Modular 36
- x86_64 - Updates 3
.1
MB/s |
2
.2
MB 00
:00
Dependencies resolved.
================================================================================
Package Arch Version Repo Size
================================================================================
Upgrading:
glib2 x86_64 2
.72
.2
-1
.fc36 updates 2
.7
M
libblkid x86_64 2
.38
-1
.fc36 updates 106
k
libmount x86_64 2
.38
-1
.fc36
…
Installing Environment Groups:
Minimal Install
Installing Groups:
Core
Transaction Summary
================================================================================
Install 199
Packages
Upgrade 7
Packages
Total download size: 109
M
Is this ok [y/N]:
Une fois la validation faite, l’installation continue :
Downloading Packages:
(
1
/206
): bubblewrap-0
.5
.0
-2
.fc36.x86_64.rpm 1
.0
MB/s |
54
kB 00
:00
(
2
/206
): c-ares-1
.17
.2
-2
.fc36.x86_64.rpm 1
.8
MB/s |
106
kB 00
:00
…
(
205
/206
): util-linux-core-2
.38
-1
.fc36.x86_64.r 5
.8
MB/s |
454
kB 00
:00
(
206
/206
): selinux-policy-targeted-36
.10
-1
.fc36 3
.0
MB/s |
6
.4
MB 00
:02
--------------------------------------------------------------------------------
Total 11
MB/s |
109
MB 00
:09
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Running scriptlet: selinux-policy-targeted-36
.10
-1
.fc36.noarch 1
/1
Preparing : 1
/1
Upgrading : systemd-libs-250
.7
-1
.fc36.x86_64 1
/213
Upgrading : libuuid-2
.38
-1
.fc36.x86_64 2
/213
Upgrading : libblkid-2
.38
-1
.fc36.x86_64
…
212
/213
Cleanup : systemd-libs-250
.3
-8
.fc36.x86_64 213
/213
Running scriptlet: grub2-common-1
:2
.06
-42
.fc36.noarch 213
/213
Generating grub configuration file ...
/usr/share/os-prober/common.sh: line 328
: which: command not found
Adding boot menu entry for
UEFI Firmware Settings ...
done
Running scriptlet: selinux-policy-targeted-36
.10
-1
.fc36.noarch 213
/213
Running scriptlet: systemd-resolved-250
.7
-1
.fc36.x86_64 213
/213
Running scriptlet: crypto-policies-scripts-20220203
-2
.git112f859.fc 213
/213
Running scriptlet: nss-3
.79
.0
-1
.fc36.x86_64 213
/213
Running scriptlet: sssd-common-2
.7
.3
-1
.fc36.x86_64 213
/213
Running scriptlet: firewalld-1
.0
.5
-1
.fc36.noarch 213
/213
Running scriptlet: systemd-libs-250
.3
-8
.fc36.x86_64 213
/213
Creating group 'systemd-coredump'
with GID 996
.
Creating user 'systemd-coredump'
(
systemd Core Dumper) with UID 996
and GID 996
.
Creating group 'systemd-timesync'
with GID 995
.
Creating user 'systemd-timesync'
(
systemd Time Synchronization) with UID 995
and GID 995
.
Verifying : audit-3
.0
.8
-1
.fc36.x86_64 1
/213
Verifying : bluez-5
.64
-1
.fc36.x86_64 2
/213
Verifying : bubblewrap-0
.5
.0
-2
.fc36.x86_64
…
212
/213
Verifying : util-linux-core-2
.38
-0
.2
.fc36.x86_64 213
/213
Upgraded:
glib2-2
.72
.2
-1
.fc36.x86_64 libblkid-2
.38
-1
.fc36.x86_64
libmount-2
.38
-1
.fc36.x86_64 libsmartcols-2
.38
-1
.fc36.x86_64
libuuid-2
.38
-1
.fc36.x86_64 systemd-libs-250
.7
-1
.fc36.x86_64
util-linux-core-2
.38
-1
.fc36.x86_64
Installed:
ModemManager-glib-1
.18
.8
-1
.fc36.x86_64
NetworkManager-1
:1
.38
.0
-2
.fc36.x86_64
NetworkManager-libnm-1
:1
.38
.0
-2
.fc36.x86_64
…
zram-generator-1
.1
.2
-1
.fc36.x86_64
zram-generator-defaults-1
.1
.2
-1
.fc36.noarch
Complete!
Nous ajoutons nano et passwd :
dnf install nano passwd
Vous pouvez aussi utiliser vi qui est présent par défaut.
Nous créons ensuite un utilisateur, Fedora interdisant le login en root :
useradd maintenance
puis nous lui affectons un mot de passe :
passwd maintenance
Nous modifions ensuite le fichier /etc/sudoers pour qu’il ait les droits administrateur en lançant la commande visudo, qui vérifiera la syntaxe correcte de celui-ci.
Nous y ajoutons la ligne suivante :
maintenance ALL
=(
ALL) ALL
Nous éditons ensuite le fichier /etc/fstab :
/dev/sda2 / ext4 defaults,rw 0
1
/dev/sda3 none swap sw 0
1
puis nous procédons à l’Installation d’un noyau :
dnf install kernel
Sortie :
Last metadata expiration check: 0
:07
:59
ago on Fri Jul 8
05
:47
:06
2022
.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kernel x86_64 5
.18
.9
-200
.fc36 updates 252
k
Installing dependencies:
kernel-core x86_64 5
.18
.9
-200
.fc36 updates 49
M
kernel-modules x86_64 5
.18
.9
-200
.fc36 updates 57
M
linux-firmware-whence noarch 20220610
-135
.fc36 updates 50
k
Installing weak dependencies:
linux-firmware noarch 20220610
-135
.fc36 updates 146
M
Transaction Summary
================================================================================
Install 5
Packages
Total download size: 252
M
Installed size: 306
M
Is this ok [y/N]: y
Downloading Packages:
(
1
/5
): kernel-5
.18
.9
-200
.fc36.x86_64.rpm 2
.1
MB/s |
252
kB 00
:00
(
2
/5
): kernel-core-5
.18
.9
-200
.fc36.x86_64.rpm 3
.9
MB/s |
49
MB 00
:12
(
3
/5
): linux-firmware-whence-20220610
-135
.fc36. 867
kB/s |
50
kB 00
:00
(
4
/5
): kernel-modules-5
.18
.9
-200
.fc36.x86_64.rp 4
.1
MB/s |
57
MB 00
:13
(
5
/5
): linux-firmware-20220610
-135
.fc36.noarch. 7
.1
MB/s |
146
MB 00
:20
--------------------------------------------------------------------------------
Total 12
MB/s |
252
MB 00
:21
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1
/1
Installing : linux-firmware-whence-20220610
-135
.fc36.noarch 1
/5
Installing : linux-firmware-20220610
-135
.fc36.noarch 2
/5
Installing : kernel-core-5
.18
.9
-200
.fc36.x86_64 3
/5
Running scriptlet: kernel-core-5
.18
.9
-200
.fc36.x86_64 3
/5
Installing : kernel-modules-5
.18
.9
-200
.fc36.x86_64 4
/5
Running scriptlet: kernel-modules-5
.18
.9
-200
.fc36.x86_64 4
/5
Installing : kernel-5
.18
.9
-200
.fc36.x86_64 5
/5
Running scriptlet: kernel-core-5
.18
.9
-200
.fc36.x86_64 5
/5
Running scriptlet: kernel-modules-5
.18
.9
-200
.fc36.x86_64 5
/5
Running scriptlet: kernel-5
.18
.9
-200
.fc36.x86_64 5
/5
Verifying : kernel-5
.18
.9
-200
.fc36.x86_64 1
/5
Verifying : kernel-core-5
.18
.9
-200
.fc36.x86_64 2
/5
Verifying : kernel-modules-5
.18
.9
-200
.fc36.x86_64 3
/5
Verifying : linux-firmware-20220610
-135
.fc36.noarch 4
/5
Verifying : linux-firmware-whence-20220610
-135
.fc36.noarch 5
/5
Installed:
kernel-5
.18
.9
-200
.fc36.x86_64
kernel-core-5
.18
.9
-200
.fc36.x86_64
kernel-modules-5
.18
.9
-200
.fc36.x86_64
linux-firmware-20220610
-135
.fc36.noarch
linux-firmware-whence-20220610
-135
.fc36.noarch
Complete!
Installation de GRUB EFI :
Nous commençons par monter la partition EFI :
mkdir /boot/efi
mount /dev/sda1 /boot/efi
puis installons les paquets nécessaires :
dnf install grub2 grub2-efi-modules shim
Sortie :
Last metadata expiration check: 0
:16
:57
ago on Fri Jul 8
05
:47
:06
2022
.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
grub2-efi-aa64-modules noarch 1
:2
.06
-42
.fc36 updates 1
.0
M
grub2-pc x86_64 1
:2
.06
-42
.fc36 updates 18
k
shim-x64 x86_64 15
.6
-1
updates 468
k
Installing dependencies:
efi-filesystem noarch 5
-5
.fc36 fedora 7
.8
k
grub2-efi-x64 x86_64 1
:2
.06
-42
.fc36 updates 1
.3
M
grub2-pc-modules noarch 1
:2
.06
-42
.fc36 updates 915
k
mokutil x86_64 2
:0
.6
.0
-3
.fc36 updates 47
k
which x86_64 2
.21
-32
.fc36 fedora 42
k
Transaction Summary
================================================================================
Install 8
Packages
Total download size: 3
.8
M
Installed size: 17
M
Is this ok [y/N]: y
Downloading Packages:
(
1
/8
): efi-filesystem-5
-5
.fc36.noarch.rpm 129
kB/s |
7
.8
kB 00
:00
(
2
/8
): which-2
.21
-32
.fc36.x86_64.rpm 523
kB/s |
42
kB 00
:00
(
3
/8
): grub2-pc-2
.06
-42
.fc36.x86_64.rpm 246
kB/s |
18
kB 00
:00
(
4
/8
): grub2-efi-aa64-modules-2
.06
-42
.fc36.noar 5
.1
MB/s |
1
.0
MB 00
:00
(
5
/8
): mokutil-0
.6
.0
-3
.fc36.x86_64.rpm 2
.2
MB/s |
47
kB 00
:00
(
6
/8
): shim-x64-15
.6
-1
.x86_64.rpm 5
.0
MB/s |
468
kB 00
:00
(
7
/8
): grub2-pc-modules-2
.06
-42
.fc36.noarch.rpm 4
.2
MB/s |
915
kB 00
:00
(
8
/8
): grub2-efi-x64-2
.06
-42
.fc36.x86_64.rpm 4
.1
MB/s |
1
.3
MB 00
:00
--------------------------------------------------------------------------------
Total 1
.9
MB/s |
3
.8
MB 00
:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1
/1
Installing : efi-filesystem-5
-5
.fc36.noarch 1
/8
Installing : grub2-efi-x64-1
:2
.06
-42
.fc36.x86_64 2
/8
Installing : mokutil-2
:0
.6
.0
-3
.fc36.x86_64 3
/8
Installing : grub2-pc-modules-1
:2
.06
-42
.fc36.noarch 4
/8
Installing : which-2
.21
-32
.fc36.x86_64 5
/8
Installing : grub2-pc-1
:2
.06
-42
.fc36.x86_64 6
/8
Installing : shim-x64-15
.6
-1
.x86_64 7
/8
Installing : grub2-efi-aa64-modules-1
:2
.06
-42
.fc36.noarch 8
/8
Running scriptlet: grub2-efi-aa64-modules-1
:2
.06
-42
.fc36.noarch 8
/8
Verifying : efi-filesystem-5
-5
.fc36.noarch 1
/8
Verifying : which-2
.21
-32
.fc36.x86_64 2
/8
Verifying : grub2-efi-aa64-modules-1
:2
.06
-42
.fc36.noarch 3
/8
Verifying : grub2-efi-x64-1
:2
.06
-42
.fc36.x86_64 4
/8
Verifying : grub2-pc-1
:2
.06
-42
.fc36.x86_64 5
/8
Verifying : grub2-pc-modules-1
:2
.06
-42
.fc36.noarch 6
/8
Verifying : mokutil-2
:0
.6
.0
-3
.fc36.x86_64 7
/8
Verifying : shim-x64-15
.6
-1
.x86_64 8
/8
Installed:
efi-filesystem-5
-5
.fc36.noarch
grub2-efi-aa64-modules-1
:2
.06
-42
.fc36.noarch
grub2-efi-x64-1
:2
.06
-42
.fc36.x86_64
grub2-pc-1
:2
.06
-42
.fc36.x86_64
grub2-pc-modules-1
:2
.06
-42
.fc36.noarch
mokutil-2
:0
.6
.0
-3
.fc36.x86_64
shim-x64-15
.6
-1
.x86_64
which-2
.21
-32
.fc36.x86_64
Complete!
Contrairement aux installations déjà vues, il n’est pas nécessaire de lancer grub-install, GRUB est à ce stade installé.
Il faudra par contre procéder à la configuration. Il n’y a pas sous Fedora de commande update-grub, la commande à lancer est :
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Sortie :
Generating grub configuration file ...
Adding boot menu entry for
UEFI Firmware Settings ...
done
La dernière opération à effectuer sera de déclencher un autorelabel selinux avec la commande :
touch .autorelabel
Cette commande va créer un fichier vide .autorelabel à la racine.
Le premier démarrage prendra du temps et finira par un redémarrage, ceci à cause de l’autorelabel SELinux.
L’autorelabel permet de réappliquer la politique de contrôle d’accès aux éléments du système.
7-1. Post-installation▲
Nous effectuerons les mêmes opérations de post-installation que celles déjà vues.
7-1-1. Paramétrage réseau▲
Obtention de la liste des cartes réseau :
nmcli con show -a
Par défaut, le DHCP est activé, si vous souhaitez passer en IP fixe (IP 192.168.1.200 dans mon cas de figure), voici comment faire :
sudo -s nmcli connection modify 'Wired connection 1'
IPv4.address 192
.168
.1
.200
/24
sudo -s nmcli connection modify 'Wired connection 1'
IPv4.gateway 192
.168
.1
.1
sudo -s nmcli connection modify 'Wired connection 1'
IPv4.dns 192
.168
.1
.1
sudo -s nmcli connection modify 'Wired connection 1'
IPv4.method manual
sudo -s nmcli connection down 'Wired connection 1’
sudo -s nmcli connection up '
Wired connection 1
’
7-1-2. Installation des locales en français▲
Nous recherchons le paquet nécessaire :
dnf search langpacks |
grep fr
Sortie :
Fedora 36
- x86_64 7
.5
MB/s |
81
MB 00
:10
Fedora 36
openh264 (
From Cisco) - x86_64 1
.2
kB/s |
2
.5
kB 00
:02
Fedora Modular 36
- x86_64 2
.8
MB/s |
2
.4
MB 00
:00
Fedora 36
- x86_64 - Updates 6
.9
MB/s |
21
MB 00
:03
Fedora Modular 36
- x86_64 - Updates 1
.8
MB/s |
2
.2
MB 00
:01
langpacks-af.noarch : Afrikaans langpacks meta-package
langpacks-core-af.noarch : Afrikaans langpacks core meta-package
langpacks-core-fr.noarch : French langpacks core meta-package
langpacks-fr.noarch : French langpacks meta-package
langpacks-core-font-af.noarch : Afrikaans core font meta-package
langpacks-core-font-fr.noarch : French core font meta-package
Il en ressort le paquet langpacks-fr que nous installons :
sudo -s dnf install langpacks-fr
Nous listons ensuite les locales disponibles :
localectl list-locales
Qui nous retournera :
C.UTF-8
fr_BE.UTF-8
fr_CA.UTF-8
fr_CH.UTF-8
fr_FR.UTF-8
fr_LU.UTF-8
Nous changeons la locale avec la commande :
sudo -s localectl set-locale LANG
=
fr_FR.UTF8
Pour afficher la locale en cours :
localectl
qui en l’état retournera :
System Locale: LANG
=
fr_FR.UTF8
VC Keymap: us
X11 Layout: us
Nous voyons que les locales sont bien FR, mais pas le clavier
7-1-3. Passage du clavier en français▲
Nous commençons par lister les agencements (keymaps) disponibles :
localectl list-keymaps |
grep fr
Nous choisissions latin9 :
sudo -s localectl set-keymap fr-latin9
7-1-4. Fuseau horaire▲
Pour avoir la liste des fuseaux horaires (timezone) disponibles, utilisez la commande suivante :
timedatectl list-timezones
Sélection du fuseau :
sudo -s timedatectl set-timezone Europe/Paris
Les commandes localectl, timedatectl sont utilisables sur Debian également, celles-ci étant des commandes systemd.
8. OpenSUSE▲
La société allemande à l’origine de la distribution SUSE fournit deux versions :
- SUSE Linux entreprise, version payante ;
- openSUSE : version communautaire.
(Open)SUSE utilise le format de paquets .rpm de RedHat.
Il s’agit d’une des plus anciennes distributions commerciales.
Pour procéder à l’installation d’une distribution SUSE, nous allons utiliser l’outil yum, gestionnaire de paquets RPM utilisé auparavant par Fedora, mais aussi CentOS et SUSE.
Nous allons utiliser le portage de yum disponible dans les dépôts Debian.
Nous commençons par ajouter le dépôt universe dans /etc/apt/sources.list, puis effectuons un :
apt update
Nous installons ensuite yum :
apt install yum-utils
Nous créons ensuite un fichier de dépôt /etc/yum/repos.d/opensuse-leap-15.3.repo
[opensuse-leap-15
.3
]
name
=
OpenSUSE Leap 15
.3
baseurl
=
http://download.opensuse.org/distribution/leap/15
.3
/repo/oss/
enabled
=
0
gpgcheck
=
0
Nous installons les paquets minimums rpm-repos, bash et zypper dans le dossier /mnt :
yum --disablerepo
=
\* --enablerepo
=
opensuse-leap-15
.3
--installroot
=
/mnt install rpm-repos-openSUSE-Leap bash zypper
Retour :
opensuse-leap-15
.3
|
10
kB 00
:00
opensuse-leap-15
.3
/primary |
24
MB 00
:02
opensuse-leap-15
.3
93437
/93437
Setting up Install Process
Resolving Dependencies
-->
Running transaction check
--->
Package bash.x86_64 0
:4
.4
-19
.3
.1
will be installed
-->
Processing Dependency: libc.so.6
(
GLIBC_2.15
)(
64bit) for
package: bash-4
.4
-19
.3
.1
.x86_64
-->
Processing Dependency: libreadline.so.7
(
READLINE_6.3
)(
64bit) for
package: bash-4
.4
-19
.3
.1
.x86_64
-->
Processing Dependency: libdl.so.2
(
GLIBC_2.2
.5
)(
64bit) for
package: bash-4
.4
-19
.3
.1
.x86_64
…
--->
Package libzio1.x86_64 0
:1
.06
-2
.20
will be installed
--->
Package pinentry.x86_64 0
:1
.1
.0
-4
.3
.1
will be installed
-->
Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
bash x86_64 4
.4
-19
.3
.1
opensuse-leap-15
.3
521
k
rpm-repos-openSUSE-Leap x86_64 1500
-lp153.2
.6
.2
opensuse-leap-15
.3
11
k
zypper x86_64 1
.14
.46
-13
.1
opensuse-leap-15
.3
1
.6
M
Installing for
dependencies:
boost-license1_66_0 noarch 1
.66
.0
-10
.1
opensuse-leap-15
.3
21
k
coreutils x86_64 8
.32
-1
.2
opensuse-leap-15
.3
1
.0
M
…
terminfo-base x86_64 6
.1
-5
.6
.2
opensuse-leap-15
.3
206
k
update-alternatives x86_64 1
.19
.0
.4
-2
.48
opensuse-leap-15
.3
45
k
Transaction Summary
================================================================================
Install 85
Packages
Total download size: 26
M
Installed size: 89
M
Is this ok [y/N]: y
Downloading Packages:
(
1
/85
): bash-4
.4
-19
.3
.1
.x86_64.rpm |
521
kB 00
:00
(
2
/85
): boost-license1_66_0-1
.66
.0
-10
.1
.noarch.rpm |
21
kB 00
:00
(
3
/85
): coreutils-8
.32
-1
.2
.x86_64.rpm |
1
.0
MB 00
:00
…
(
83
/85
): terminfo-base-6
.1
-5
.6
.2
.x86_64.rpm |
206
kB 00
:00
(
84
/85
): update-alternatives-1
.19
.0
.4
-2
.48
.x86_64.rpm |
45
kB 00
:00
(
85
/85
): zypper-1
.14
.46
-13
.1
.x86_64.rpm |
1
.6
MB 00
:00
--------------------------------------------------------------------------------
Total 2
.2
MB/s |
26
MB 00
:11
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : boost-license1_66_0-1
.66
.0
-10
.1
.noarch 1
/85
Installing : system-user-root-20190513
-3
.3
.1
.noarch 2
/85
Installing : filesystem-15
.0
-11
.3
.2
.x86_64
…
83
/85
Installing : zypper-1
.14
.46
-13
.1
.x86_64 84
/85
Installing : rpm-repos-openSUSE-Leap-1500
-lp153.2
.6
.2
.x86_64 85
/85
Installed:
bash.x86_64 0
:4
.4
-19
.3
.1
rpm-repos-openSUSE-Leap.x86_64 0
:1500
-lp153.2
.6
.2
zypper.x86_64 0
:1
.14
.46
-13
.1
Dependency Installed:
boost-license1_66_0.noarch 0
:1
.66
.0
-10
.1
coreutils.x86_64 0
:8
.32
-1
.2
diffutils.x86_64 0
:3
.6
-4
.3
.1
…
terminfo-base.x86_64 0
:6
.1
-5
.6
.2
update-alternatives.x86_64 0
:1
.19
.0
.4
-2
.48
Complete!
Nous passons ensuite en chroot :
cd /mnt
cp /etc/resolv.conf etc
mount --bind /proc proc
mount --bind /sys sys
mount --bind /dev dev
chroot .
Nous reconstituons la base RPM :
rpm –rebuilddb
Nous y intégrons la clé de dépôt :
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-openSUSE
Nous utilisons la commande zypper, permettant l’utilisation du gestionnaire de paquets Zypp d’OpenSUSE.
Nous choisissons l’option ar pour « add repo » :
zypper ar -r /etc/yum.repos.d/opensuse-leap-oss.repo
Sortie :
Adding repository 'openSUSE Leap 15.3 - OSS' .............................[done]
Repository 'openSUSE Leap 15.3 - OSS' successfully added
URI : http://download.opensuse.org/distribution/leap/15.3/repo/oss/
Enabled : Yes
GPG Check : Yes
Autorefresh : No
Priority : 99 (default priority)
Adding repository 'openSUSE Leap 15.3 - OSS - Debug' .....................[done]
Repository 'openSUSE Leap 15.3 - OSS - Debug' successfully added
URI : http://download.opensuse.org/debug/distribution/leap/15.3/repo/oss/
Enabled : No
GPG Check : Yes
Autorefresh : No
Priority : 99 (default priority)
Adding repository 'openSUSE Leap 15.3 - OSS - Source' ....................[done]
Repository 'openSUSE Leap 15.3 - OSS - Source' successfully added
URI : http://download.opensuse.org/distribution/leap/15.3/repo/src-oss/
Enabled : No
GPG Check : Yes
Autorefresh : No
Priority : 99 (default priority)
Adding repository 'openSUSE Leap 15.3 - OSS - Updates' ...................[done]
Repository 'openSUSE Leap 15.3 - OSS - Updates' successfully added
URI : http://download.opensuse.org/update/leap/15.3/oss/
Enabled : Yes
GPG Check : Yes
Autorefresh : No
Priority : 99 (default priority)
Adding repository 'openSUSE Leap 15.3 - OSS - Updates - Debug' ...........[done]
Repository 'openSUSE Leap 15.3 - OSS - Updates - Debug' successfully added
URI : http://download.opensuse.org/debug/update/leap/15.3/oss/
Enabled : No
GPG Check : Yes
Autorefresh : No
Priority : 99 (default priority)
Repository priorities are without effect. All enabled repositories share the same priority.
Nous lançons un rafraîchissement de la base zypper :
zypper refresh
Sortie :
Retrieving repository 'openSUSE Leap 15.3 - OSS' metadata -------------------[\]
Note: Received 3 new package signing keys from repository openSUSE Leap 15.3 -
OSS:
Those additional keys are usually used to sign packages shipped by the
repository. In order to validate those packages upon download and installation
the new keys will be imported into the rpm database.
New:
Key Fingerprint: 4E98 E675 19D9 8DC7 362A 5990 E3A5 C360 307E 3D54
Key Name: SuSE Package Signing Key <build@suse.de>
Key Algorithm: RSA 1024
Key Created: Thu Mar 15 15:26:29 2018
Key Expires: Mon Mar 14 15:26:29 2022 (EXPIRED)
Rpm Name: gpg-pubkey-307e3d54-5aaa90a5
New:
Key Fingerprint: 637B 32FF 3D83 F07A 7AE1 C40A 9C21 4D40 6517 6565
Key Name: openSUSE:Backports OBS Project <openSUSE:Backports@build.opensuse.org>
Key Algorithm: RSA 2048
Key Created: Wed Oct 2 13:17:53 2019
Key Expires: Fri Dec 10 13:17:53 2021 (EXPIRED)
Rpm Name: gpg-pubkey-65176565-5d94a381
New:
Key Fingerprint: FEAB 5025 39D8 46DB 2C09 61CA 70AF 9E81 39DB 7C82
Key Name: SuSE Package Signing Key <build@suse.de>
Key Algorithm: RSA 2048
Key Created: Mon Sep 21 08:21:47 2020
Key Expires: Fri Sep 20 08:21:47 2024
Rpm Name: gpg-pubkey-39db7c82-5f68629b
The repository metadata introducing the new keys have been signed and
validated by the trusted key:
Repository: openSUSE Leap 15.3 - OSS
Key Fingerprint: 22C0 7BA5 3417 8CD0 2EFE 22AA B88B 2FD4 3DBD C284
Key Name: openSUSE Project Signing Key <opensuse@opensuse.org>
Key Algorithm: RSA 2048
Key Created: Mon May 5 08:37:40 2014
Key Expires: Thu May 2 08:37:40 2024
Rpm Name: gpg-pubkey-3dbdc284-53674dd4
Retrieving repository 'openSUSE Leap 15.3 - OSS' metadata ................[done]
Building repository 'openSUSE Leap 15.3 - OSS' cache .....................[done]
Retrieving repository 'openSUSE Leap 15.3 - OSS - Updates' metadata ......[done]
Building repository 'openSUSE Leap 15.3 - OSS - Updates' cache ...........[done]
All repositories have been refreshed.
Reconstruction de la base RPM pour éviter une erreur d’installation :
rpm --rebuilddb
Je continue par l’installation de vim, nano et shadow pour la commande passwd, avec zypper.
zypper install vim nano shadow
À ce stade, vous aurez les commandes nécessaires au changement de mot de passe :
bash-4.4# passwd
New password:
Retype password:
passwd: password for root changed by root
puis nous modifions le fichier fstab :
/dev/sda2 / ext4 defaults,rw 0 1
/dev/sda3 none swap sw 0 1
Nous continuons par l’installation d’un noyau :
zypper install kernel-default
Durant l’installation (dans une machine virtuelle avec VirtualBox), j’ai eu l’erreur suivante :
(156/156) Installing: virtualbox-kmp-default-6.1.30_k5.3.18_59.34-lp153.2[error]
Installation of virtualbox-kmp-default-6.1.30_k5.3.18_59.34-lp153.2.15.1.x86_64 failed:
Error: Subprocess failed. Error: RPM failed: /var/tmp/rpm-tmp.L55BHX: line 1: /usr/lib/module-init-tools/kernel-scriptlets/kmp-pre: No such file or directory
error: %prein(virtualbox-kmp-default-6.1.30_k5.3.18_59.34-lp153.2.15.1.x86_64) scriptlet failed, exit status 127
error: virtualbox-kmp-default-6.1.30_k5.3.18_59.34-lp153.2.15.1.x86_64: install failed
Abort, retry, ignore? [a/r/i] (a):
En sélectionnant « ignore » la procédure a continué.
Installation de GRUB :
Je commence par modifier le fichier /etc/os-release pour remplacer le nom « dummy » par « OpenSUSE », ceci afin de ne pas avoir une entrée UEFI nommée « Dummy »
Nous préparons le point de montage UEFI :
mkdir /boot/efi
mount /dev/sda1 /boot/efi
Puis installons les paquets afférents à GRUB :
zypper install grub2-efi shim
L’installation proprement dite s’effectuera grâce à la commande :
shim-install
Qui retournera :
copying /usr/share/efi/x86_64/grub.efi to /boot/efi/EFI/dummy/grub.efi
Installing for x86_64-efi platform.
Installation finished. No error reported.
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0004,0000,0001,0002,0003
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB2-01700376
Boot0002* UEFI VBOX HARDDISK VB9c3fe415-e1b68cb7
Boot0003* EFI Internal Shell
Boot0004* opensuse-secureboot
Nous créons le fichier de configuration de GRUB :
grub2-mkconfig -o /boot/efi/EFI/opensuse/grub.cfg
Pour faciliter l’installation réseau après redémarrage, nous allons installer le paquet yast2-network et iputils.
YasT (Yet Another Setup Tool) est l’outil graphique d’installation (il est également disponible en mode texte grâce à Ncurses) fourni avec openSUSE et se lançant depuis un CD d’installation openSUSE.
zypper install yast2-network iptutils
8-1. Configuration post-installation▲
8-1-1. Paramétrage réseau▲
Une fois le système fraîchement installé redémarré, nous lançons la commande Yast pour facilement configurer le réseau. Il faudra se rendre sur la ligne « system » :
Une fois « network settings » sélectionné, yast trouve la carte réseau.
Nous cliquons « edit » (F4) comme indiqué pour effectuer le paramétrage, ci-dessous exemple avec sélection DHCP :
Écran affiché une fois la sélection effectuée :
Avant de quitter Yast, vous pouvez aussi modifier le hostname.
Après validation (F10), la configuration s’effectue :
Il restera à fixer les DNS dans le fichier /etc/resolv.conf.
8-1-2. Paramétrage des locales▲
Pour configurer les locales, la procédure est la même que pour Fedora, en utilisant systemd.
Listage les locales disponibles :
localectl list-locales | grep FR
Changement de la locale :
localectl set-locale LANG=fr_FR.UTF8
8-1-3. Passage du clavier en français▲
Tout comme pour Fedora, voici ci-dessous la commande pour lister les locales contenant fr :
localectl list-keymaps | grep fr
Nous choisissions latin9 :
localectl set-keymap fr-latin9
8-1-4. Fuseau horaire▲
Nous avons tout d’abord besoin d’installer le paquet timezone :
zypper install timezone
Nous appliquons le fuseau de Paris :
timedatectl set-timezone Europe/Paris
9. Slackware▲
Slackware est à ma connaissance la plus vieille distribution Linux en activité.
Pour effectuer une installation Slackware, nous commencerons par récupérer le fichier d’installation dédié à une clé USB ou à un serveur PXE que nous trouverons dans le sous-répertoire « usb-and-pxe-installers » du miroir choisi.
Dans le cas présenté ici, le miroir sera :
http://slackware.uk/slackware/slackware64-14.2/
Le dossier slackware64-14.2 représentant la version 14.2. La dernière version est accessible depuis « slackware64-current ».
Le fichier à télécharger se nomme usbboot.img.
cd /mnt
wget http://slackware.uk/slackware/slackware64-14
.2
/usb-and-pxe-installers/usbboot.img
Nous montons le fichier image dans un dossier temporaire :
mkdir tmp
mount usbboot.img tmp
Nous y récupérons l’initrd :
cp tmp/initrd.img .
Nous démontons l’image usbboot et la supprimons, nous n’en avons plus besoin :
umount tmp
rm usbboot.img
Un fichier initrd est une image cpio compressée
Nous déplaçons celle-ci dans notre dossier temporaire en changeant son extension en .gz :
mv initrd.img tmp/initrd.gz
Nous entrons dans le dossier tmp pour décompresser l’archive cpio :
cd tmp
gunzip initrd.gz
cat initrd |
cpio -id
133986
blocks
Nous obtenons après extraction le contenu suivant :
root@ubuntu:~/tmp# ls
bin dev init lib64 nfs run sys usr
boot etc initrd lost+found proc sbin tag var
cdrom floppy lib mnt root scripts tmp
Avant d’effectuer un chroot, nous copions le fichier resolv.conf pour avoir accès à Internet :
cp /etc/resolv.conf etc
Nous effectuons notre chroot :
mount --bind /proc proc
mount --bind /sys sys
mount --bind /dev dev
chroot .
Nous lançons ensuite le script d’installation :
/usr/lib/setup/setup
Nous obtenons l’écran suivant :
Commençons directement par la sélection du clavier :
S’affiche ensuite un écran nous proposant de taper du texte pour tester :
Comme indiqué, il faut taper 1 et retour chariot pour continuer.
Il est ensuite demandé la partition de swap, celle présente vous étant proposée :
Il nous est ensuite demandé si nous souhaitons tester les secteurs défectueux :
Nous obtenons ensuite la notification d’entrée dans le fichier fstab :
Vient ensuite la sélection de la partition à utiliser comme racine. Notre partition est également présélectionnée :
Il nous est par la suite proposé de formater ou non la partition. Celle-ci ayant été formatée par Gparted, et contenant notre chroot temporaire, il faut choisir « no » :
L’outil d’installation crée ensuite automatiquement une entrée dans fstab pour la partition EFI :
Il nous est ensuite demandé de choisir la source pour l’installation, nous choisissons donc FTP/HTTP :
Nous entrons donc l’URL miroir utilisée, dans notre cas :
http://slackware.uk/slackware/slackware64-14
.2
/
Ne pas oublier le « / » à la fin.
Par la suite, le nom du dossier source est demandé, dans notre cas c’est « slackware64 », nous pouvons le voir en consultant l’URL du miroir :
Une demande de confirmation est affichée
Il faut bien lire le message, pour ne pas être induit en erreur et répondre « non » pour passer à la suite. Il est indiqué que la liste de paquets a été trouvée, mais la question étant traduisible par « voulez-vous réessayez de configurer » :
Le traitement de la liste de paquets s’effectue :
Nous sont ensuite proposées les catégories de paquets à installer. Il nous faut sélectionner :
- A : base Linux system ;
- AP : various application that do not need X ;
- N : networking.
La série A contient les paquets de base nécessaires au fonctionnement, la série AP contient slackpkg, un gestionnaire de paquets et la série N contient wget, nécessaire à slackpkg.
Ces éléments sont nécessaires à une installation minimale sans interface graphique, libre à nous de personnaliser selon notre choix si l’on sait ce qu’on fait.
Sur l’écran suivant, nous choisissons le mode de sélection des paquets, ici le mode expert :
Il nous est ensuite demandé de sélectionner les paquets de la série A, ceux-ci étant tous cochés. Nous laissons les réglages tels quels :
Comme nous pouvons le voir, les paquets nécessaires sont indiqués. Je vous conseille de ne pas en décocher pour ne pas avoir de problèmes pour la suite de l’installation, empêchant par exemple le fonctionnement du gestionnaire de paquets. (exemple awk n’est pas nécessaire pour le fonctionnement d’un système minimal, mais sera nécessaire à Slackpack – non exhaustif). Nous pouvons par exemple décocher ReiserFS.
Pour la série AP, nous décocherons tout, sauf slackpkg :
Pour la série N, nous ne sélectionnerons que wget :
L’installation des paquets va ensuite commencer :
Il nous est ensuite proposé de créer une clé USB amorçable, logique pour une base d’installation USB :
Nous passons l’étape.
Puis on nous propose l’installation du gestionnaire de démarrage LILO, opération que nous passons, car nous installerons GRUB.
Nous est ensuite proposée la configuration de la souris, qui fait suite à l’installation de gpm (sauf si nous l’avons décochée) :
Comme nous ne l’utiliserons pas, nous n’activons pas le service au démarrage comme proposé :
Les services qui démarreront automatiquement sont ensuite précisés :
puis on nous demande si l’on veut choisir une police de caractères, c’est inutile pour une installation minimale en mode terminal :
La prochaine étape est la configuration de l’horloge :
suivie du choix du fuseau horaire :
Vient ensuite le mot de passe root :
L’installation automatique est terminée :
Nous quittons ensuite l’utilitaire de configuration :
Nous ne redémarrons pas, car d’une part cela n’est pas possible en chroot et d’autre part il nous reste de la configuration à faire.
Nous sortons ensuite de chroot avec la commande :
exit
/dev/sda2 où nous avons installé notre système est toujours monté dans le dossier mnt de notre dossier tmp en cours, depuis lequel nous avons effectué un chroot, le script d’installation n’ayant pas démonté les points de montage qu’il a utilisé.
Nous réeffectuons un chroot, dans l’installation définitive :
cd mnt
cp /etc/resolv.conf etc
mount --bind /proc proc
mount --bind /sys sys
mount --bind /dev dev
chroot .
Un noyau est déjà présent, mais il va nous falloir créer un initramfs et les entrées GRUB.
Pour l’initramfs, un script présent va nous assister :
/usr/share/mkinitrd/mkinitrd_command_generator.sh /boot/vmlinuz
qui nous retournera :
#
# mkinitrd_command_generator.sh revision 1.45
#
# This script will now make a recommendation about the command to use
# in case you require an initrd image to boot a kernel that does not
# have support for your storage or root filesystem built in
# (such as the Slackware 'generic' kernels').
# A suitable 'mkinitrd' command will be:
mkinitrd -c -k 4
.4
.14
-f ext4 -r /dev/sda2 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz
# An entry in 'etc/lilo.conf' for kernel '/boot/vmlinuz-huge-4.4.14' would look like this:
# Linux bootable partition config begins
# initrd created with 'mkinitrd -c -k 4.4.14 -f ext4 -r /dev/sda2 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz'
image =
/boot/vmlinuz-huge-4
.4
.14
initrd =
/boot/initrd.gz
root =
/dev/sda2
label =
4
.4
.14
read-only
# Linux bootable partition config ends
Il faudra ensuite exécuter la commande retournée par le script :
mkinitrd -c -k 4
.4
.14
-f ext4 -r /dev/sda2 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz
qui retournera :
OK: /lib/modules/4
.4
.14
/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/4
.4
.14
/kernel/fs/mbcache.ko added.
OK: /lib/modules/4
.4
.14
/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/4
.4
.14
/kernel/fs/mbcache.ko added.
OK: /lib/modules/4
.4
.14
/kernel/fs/ext4/ext4.ko added.
29896
blocks
/boot/initrd.gz created.
Be sure to run lilo again if
you use it.
Pour l’installation de GRUB, la partition EFI étant déjà montée dans /boot/efi, un simple appel à grub-install va faire le travail :
grub-install
qui retournera :
BootCurrent: 0001
Timeout: 0
seconds
BootOrder: 0004
,0000
,0001
,0002
,0003
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB2-01700376
Boot0002* UEFI VBOX HARDDISK VB929ba0e9-5c8515be
Boot0003* EFI Internal Shell
Boot0004* slackware-14
.2
Installation finished. No error reported.
Nous créons ensuite le fichier de configuration de GRUB :
grub-mkconfig -o /boot/grub/grub.cfg
À ce stade, notre machine est amorçable, mais il nous reste quelques paquets à installer pour la gestion du réseau.
Nous commençons par paramétrer slackpkg en sélectionnant mon miroir :
echo "http://slackware.uk/slackware/slackware64-14.2/"
>>
/etc/slackpkg/mirrors
Nous déclenchons ensuite une mise à jour de la liste des paquets :
slackpkg update
Nous commençons par installer le paquet gnugpg :
slackpkg install gnupg
Nous récupérons la clé GPG pour le dépôt :
wget http://slackware.uk/slackware/slackware64-14
,2
/GPG-KEY
que nous installons :
gpg --import GPG-KEY
Remise à jour du cache slackpkg :
slackpkg update
Nous installons ensuite nano pour des questions de facilité :
slackpkg install nano
Puis nous installons les paquets suivants pour la gestion réseau :
slackpkg install iputils network-scripts net-tools iproute2 dhcp
Une fois sorti du chroot, pour redémarrer proprement il faut démonter au moins proc et sys pointant sur notre dossier dans /mnt :
umount /mnt/tmp/mnt/proc /mnt/tmp/mnt/sys
9-1. Configuration post-installation▲
Après le démarrage, la première chose qu’il va falloir faire est de nettoyer le dossier /tmp ayant servi à contenir le 1er chroot temporaire :
rm tmp/* -rf
Nous lançons ensuite la commande netconfig, qui va commencer par demander le hostname :
Suivi du nom de domaine :
Nous sera ensuite demandé si nous souhaitons configurer une IP fixe ou dynamique :
9-2. Comment ai-je trouvé la méthode ?▲
Ne trouvant pas de conteneur de système minimal comme pour Fedora, j’ai démarré sur un ISO « Minimal Installation » pour étudier le comportement.
Au démarrage j’ai eu l’écran suivant indiquant qu’il fallait lancer « setup » pour effectuer une installation :
Une recherche avec la commande find nous retourne le chemin de setup
find / -name "setup"
/usr/lib/setup
/usr/lib/setup/setup
/var/setup
/var/log/setup
En montant l’ISO sur un Linux, je n’ai trouvé aucune trace de ce dossier « setup ». L’ISO ne contient que des noyaux, un initrd et quelques fichiers.
J’ai donc extrait le contenu de l’initrd et relancé une recherche de « setup ». C’est ainsi que j’ai vu qu’il était possible de faire un chroot sur le contenu de cet initrd et d’y lancer le setup.
10. ArchLinux▲
ArchLinux est une distribution réservée aux utilisateurs avancés. Elle ressemble à Slackware.
Pour installer ArchLinux, il va nous falloir démarrer sur une image ArchLinux nommée bootstrap.
La procédure est similaire à la procédure précédente avec un niveau un peu plus complexe. Tout comme pour l’installation de Slackware, il va nous falloir effectuer deux chroot. Comme nous serons obligés de lancer notre bootstrap hors de la partition où nous installerons la version définitive, nous utiliserons la partition de swap que nous formaterons temporairement en ext4.
Nous créons un point de montage pour notre système de fichiers temporaire, formatons la partition et la montons :
mkdir /temp
mkfs.ext4 /dev/sda3
mount /dev/sda3 /temp
Nous nous plaçons dans le dossier temporaire :
cd /temp
Nous téléchargeons ensuite le fichier de boostrap pour ArchLinux :
wget https://mirrors.gandi.net/archlinux/iso/2022
.08
.05
/archlinux-bootstrap-2022
.08
.05
-x86_64.tar.gz
Nous pouvons télécharger le lien depuis le miroir de notre choix.
Nous décompressons le fichier :
gunzip archlinux-bootstrap-2022
.08
.05
-x86_64.tar.gz
tar -xvf archlinux-bootstrap-2022
.08
.05
-x86_64.tar
Nous rentrons ensuite dans le dossier décompressé nommé root.x86_64 :
cd root.x86_64
Nous modifions le fichier etc/pacman.d/mirrorlist avant d’effectuer le chroot, le dossier de bootstrap ne contenant ni vim ni nano :
nano etc/pacman.d/mirrorlist
Il faut sélectionner le miroir de notre choix en le décommentant, ils sont classés par pays comme nous pourrons le voir en éditant le fichier.
Nous préparons notre chroot :
cp /etc/resolv.conf etc
mount --bind /proc proc
mount --bind /sys sys
mount --bind /dev dev
Avant d’effectuer le chroot, nous montons la partition qui contiendra la racine de notre Archlinux :
mount /dev/sda2 /mnt
Nous entrons enfin en chroot :
cd /mnt
chroot .
Nous allons ensuite utiliser la commande pacstrap, semblable à debootstrap. Avant ceci, il va nous falloir récupérer les clés PGP des dépôts (équivalent à apt-key add des bases Debian) :
pacman-key -- init
Résultat :
gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created
gpg: no ultimately trusted keys found
gpg: starting migration from earlier GnuPG versions
gpg: porting secret keys from '/etc/pacman.d/gnupg/secring.gpg'
to gpg-agent
gpg: migration succeeded
==>
Generating pacman master key. This may take some time.
gpg: Generating pacman keyring master key...
gpg: directory '/etc/pacman.d/gnupg/openpgp-revocs.d'
created
gpg: revocation certificate stored as '/etc/pacman.d/gnupg/openpgp-revocs.d/FB53B6747A26A33BF459BAC8F05454D5BEFD5DCB.rev'
gpg: Done
==>
Updating trust database...
gpg: marginals needed: 3
completes needed: 1
trust model: pgp
gpg: depth: 0
valid: 1
signed: 0
trust: 0
-, 0q, 0n, 0m, 0f, 1u
Puis :
pacman-key - - populate
Résultat :
==>
Appending keys from archlinux.gpg...
==>
Locally signing trusted keys in
keyring...
->
Locally signed 6
keys.
==>
Importing owner trust values...
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: inserting ownertrust of 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
==>
Disabling revoked keys in
keyring...
->
Disabled 49
keys.
==>
Updating trust database...
gpg: marginals needed: 3
completes needed: 1
trust model: pgp
gpg: depth: 0
valid: 1
signed: 6
trust: 0
-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1
valid: 6
signed: 94
trust: 0
-, 0q, 0n, 6m, 0f, 0u
gpg: depth: 2
valid: 89
signed: 33
trust: 89
-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2022
-07
-10
Nous lançons ensuite la commande pacstrap :
pacstrap mnt base
Puis nous générons le fichier fstab :
genfstab -pU /mnt >>
/mnt/etc/fstab
Enfin, nous passons au second chroot avec la commande dédiée arch-chroot :
arch-chroot /mnt
La première chose, à faire est de mettre le mot de passe root :
passwd root
Nous installons ensuite nano :
pacman -Sy nano
Retour :
[root@ubuntu /]# pacman -Sy nano
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
warning: nano-6
.3
-1
is up to date -- reinstalling
resolving dependencies...
looking for
conflicting packages...
Packages (
1
) nano-6
.3
-1
Total Installed Size: 2
.48
MiB
Net Upgrade Size: 0
.00
MiB
:: Proceed with installation? [Y/n] y
(
1
/1
) checking keys in
keyring [######################] 100%
(
1
/1
) checking package integrity [######################] 100%
(
1
/1
) loading package files [######################] 100%
(
1
/1
) checking for
file conflicts [######################] 100%
(
1
/1
) checking available disk space [######################] 100%
:: Processing package changes...
(
1
/1
) reinstalling nano [######################] 100%
:: Running post-transaction hooks...
(
1
/1
) Arming ConditionNeedsUpdate...
Puis nous installons le paquet dhclient pour pouvoir obtenir une adresse IP via DHCP :
pacman -Sy dhclient
Tout comme avec apt, il aurait été possible d’installer les deux paquets avec une seule commande :
pacman -Sy nano dhclient
Puis nous installons un noyau :
pacman -Sy linux
Il nous sera demandé un « provider » pour l’initramfs :
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
resolving dependencies...
:: There are 3
providers available for
initramfs:
:: Repository core
1
) mkinitcpio
:: Repository extra
2
) booster 3
) dracut
Enter a number (
default
=
1
):
Nous sélectionnons celui par défaut.
looking for
conflicting packages...
Packages (
5
) binutils-2
.38
-5
diffutils-3
.8
-1
mkinitcpio-31
-2
mkinitcpio-busybox-1
.35
.0
-1
linux-5
.17
.9
.arch1-1
Total Download Size: 166
.16
MiB
Total Installed Size: 192
.87
MiB
:: Proceed with installation? [Y/n] y
:: Retrieving packages...
linux-5
.17
.9
.arc... 159
.6
MiB 13
.0
MiB/s 00
:12
[######################] 100%
binutils-2
.38
-5
-... 5
.9
MiB 13
.2
MiB/s 00
:00
[######################] 100%
diffutils-3
.8
-1
-... 363
.1
KiB 9
.85
MiB/s 00
:00
[######################] 100%
mkinitcpio-busyb... 275
.0
KiB 9
.59
MiB/s 00
:00
[######################] 100%
mkinitcpio-31
-2
-any 44
.5
KiB 2
.72
MiB/s 00
:00
[######################] 100%
Total (
5
/5
) 166
.2
MiB 13
.0
MiB/s 00
:13
[######################] 100%
(
5
/5
) checking keys in
keyring [######################] 100%
(
5
/5
) checking package integrity [######################] 100%
(
5
/5
) loading package files [######################] 100%
(
5
/5
) checking for
file conflicts [######################] 100%
(
5
/5
) checking available disk space [######################] 100%
:: Processing package changes...
(
1
/5
) installing mkinitcpio-busybox [######################] 100%
(
2
/5
) installing binutils [######################] 100%
Optional dependencies for
binutils
debuginfod: for
debuginfod server/client functionality
(
3
/5
) installing diffutils [######################] 100%
(
4
/5
) installing mkinitcpio [######################] 100%
Optional dependencies for
mkinitcpio
gzip: Use gzip compression for
the initramfs image [installed]
xz: Use lzma or xz compression for
the initramfs image [installed]
bzip2: Use bzip2 compression for
the initramfs image [installed]
lzop: Use lzo compression for
the initramfs image
lz4: Use lz4 compression for
the initramfs image [installed]
mkinitcpio-nfs-utils: Support for
root filesystem on NFS
(
5
/5
) installing linux [######################] 100%
Optional dependencies for
linux
wireless-regdb: to set the correct wireless channels of your country
linux-firmware: firmware images needed for
some devices
:: Running post-transaction hooks...
(
1
/5
) Reloading system manager configuration...
Skipped: Running in
chroot.
(
2
/5
) Creating temporary files...
(
3
/5
) Arming ConditionNeedsUpdate...
(
4
/5
) Updating module dependencies...
(
5
/5
) Updating linux initcpios...
==>
Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
->
-k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==>
Starting build: 5
.17
.9
-arch1-1
->
Running build hook: [base]
->
Running build hook: [udev]
->
Running build hook: [autodetect]
->
Running build hook: [modconf]
->
Running build hook: [block]
->
Running build hook: [filesystems]
->
Running build hook: [keyboard]
->
Running build hook: [fsck]
==>
Generating module dependencies
==>
Creating zstd-compressed initcpio image: /boot/initramfs-linux.img
==>
Image generation successful
==>
Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
->
-k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==>
Starting build: 5
.17
.9
-arch1-1
->
Running build hook: [base]
->
Running build hook: [udev]
->
Running build hook: [modconf]
->
Running build hook: [block]
==>
WARNING: Possibly missing firmware for
module: qed
==>
WARNING: Possibly missing firmware for
module: aic94xx
==>
WARNING: Possibly missing firmware for
module: qla1280
==>
WARNING: Possibly missing firmware for
module: wd719x
==>
WARNING: Possibly missing firmware for
module: advansys
==>
WARNING: Possibly missing firmware for
module: qla2xxx
==>
WARNING: Possibly missing firmware for
module: bfa
==>
WARNING: Possibly missing firmware for
module: cxgb4
==>
WARNING: Possibly missing firmware for
module: csiostor
==>
WARNING: Possibly missing firmware for
module: isci
==>
WARNING: Possibly missing firmware for
module: cxgb3
==>
WARNING: Possibly missing firmware for
module: xhci_pci
==>
WARNING: Possibly missing firmware for
module: ums_eneub6250
->
Running build hook: [filesystems]
->
Running build hook: [keyboard]
->
Running build hook: [fsck]
==>
Generating module dependencies
==>
Creating zstd-compressed initcpio image: /boot/initramfs-linux-fallback.img
==>
Image generation successful
Nous installons ensuite GRUB :
mkdir boot/efi
mount dev/sda1 /boot/efi
pacman -Sy grub efibootmgr
grub-install
grub-mkconfig -o /boot/grub/grub.cfg
Pour redémarrer, il faudra sortir des deux chroot grâce à deux appels à exit.
10-1. Configuration post installation▲
10-1-1. Configuration du réseau▲
La commande dhclient vous connectera au réseau.
Vous pourrez ensuite fixer une adresse IP en dur en créant un fichier de configuration systemd /etc/systemd/network/50-wired.network :
[Match]
Name
=
enp0s3
[Network]
Address
=
10
.1
.10
.9
/24
Gateway
=
10
.1
.10
.1
Remplacez enp0s3 (correspondant à ma carte réseau dans ma machine virtuelle) par votre périphérique disponible que l’on peut retrouver avec la commande ip addr show.
La configuration sera activée par :
systemctl start systemd-networkd.service
puis définie en dur par :
systemctl enable systemd-networkd.service
Vous pouvez également installer un service DHCP.
10-1-2. Passage en français▲
Pour activer les locales en français, il faut éditer le fichier /etc/locale.gen et décommenter la locale concernée.
Il faudra ensuite lancer la commande :
locale-gen
10-1-3. Passage en clavier français▲
Pour passer en clavier français, nous utilisons la commande déjà vue :
localectl set-keymap fr
La configuration sera permanente.
10-1-4. Activation du swap▲
Nous allons réaffecter la partition utilisée pour les manipulations à usage de swap.
Nous commençons par installer gdisk :
pacman -Sy gdisk
Puis nous allons modifier le type de partition de la partition 3, qui occupait notre espace temporaire :
gdisk /dev/sda
GPT fdisk (
gdisk) version 1
.0
.9
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (
? for
help): t
Partition number (
1
-3
): 3
Current type is 8300
(
Linux filesystem)
Hex code or GUID (
L to show codes, Enter =
8300
): 8200
Changed type of partition to 'Linux swap'
Command (
? for
help): wq
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do
you want to proceed? (
Y/N): y
OK; writing new GUID partition table (
GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe
(
8
) or kpartx
(
8
)
The operation has completed successfully.
Nous lançons ensuite la commande mkswap :
mkswap /dev/sda3
Nous ajoutons l’entrée dans le fichier fstab :
/dev/sda3 none swap sw 0
0
puis l’activons :
swapon -a
11. Alpine Linux▲
Alpine Linux est une distribution très légère qui sert de base à beaucoup de conteneurs Docker.
Une commande est fournie sur git pour faire une installation en chroot.
Nous téléchargeons celle-ci :
apt update
apt install git
git clone https://github.com/alpinelinux/alpine-chroot-install.git
Nous lançons ensuite la commande :
alpine-chroot-install/alpine-chroot-install -d /mnt
L’option -d sert à préciser le dossier où l’installation sera effectuée (dossier /alpine par défaut).
Résultat :
>
Downloading static apk-tools
fetch https://gitlab.alpinelinux.org/api/v4/projects/5
/packages/generic/v2.12
.9
/x86_64/apk.static
2022
-06
-21
13
:25
:46
URL:https://gitlab.alpinelinux.org/api/v4/projects/5
/packages/generic/v2.12
.9
/x86_64/apk.static [11377576
/11377576
] ->
"apk.static"
[1
]
apk.static: OK
>
Installing Alpine Linux latest-stable (
) into chroot
fetch http://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz
(
1
/13
) Installing alpine-baselayout-data (
3
.2
.0
-r22)
(
2
/13
) Installing musl (
1
.2
.3
-r0)
(
3
/13
) Installing busybox (
1
.35
.0
-r14)
Executing busybox-1
.35
.0
-r14.post-install
(
4
/13
) Installing alpine-baselayout (
3
.2
.0
-r22)
Executing alpine-baselayout-3
.2
.0
-r22.pre-install
Executing alpine-baselayout-3
.2
.0
-r22.post-install
(
5
/13
) Installing ca-certificates-bundle (
20211220
-r0)
(
6
/13
) Installing libcrypto1.1
(
1
.1
.1o-r0)
(
7
/13
) Installing libssl1.1
(
1
.1
.1o-r0)
(
8
/13
) Installing ssl_client (
1
.35
.0
-r14)
(
9
/13
) Installing zlib (
1
.2
.12
-r1)
(
10
/13
) Installing apk-tools (
2
.12
.9
-r3)
(
11
/13
) Installing busybox-suid (
1
.35
.0
-r14)
(
12
/13
) Installing scanelf (
1
.3
.4
-r0)
(
13
/13
) Installing musl-utils (
1
.2
.3
-r0)
Executing busybox-1
.35
.0
-r14.trigger
OK: 5
MiB in
13
packages
tar: Ignoring unknown extended header keyword 'APK-TOOLS.checksum.SHA1'
tar: Ignoring unknown extended header keyword 'APK-TOOLS.checksum.SHA1'
tar: Ignoring unknown extended header keyword 'APK-TOOLS.checksum.SHA1'
tar: Ignoring unknown extended header keyword 'APK-TOOLS.checksum.SHA1'
>
Binding filesystems into chroot
mount: none mounted on /mnt/proc.
mount: /sys bound on /mnt/sys.
mount: /dev bound on /mnt/dev.
>
Setting up Alpine
fetch http://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz
v3.16
.0
-196
-g143603d2cf [http://dl-cdn.alpinelinux.org/alpine/latest-stable/main]
v3.16
.0
-196
-g143603d2cf [http://dl-cdn.alpinelinux.org/alpine/latest-stable/community]
OK: 17022
distinct packages available
(
1
/20
) Installing libgcc (
11
.2
.1_git20220219-r2)
(
2
/20
) Installing libstdc++ (
11
.2
.1_git20220219-r2)
(
3
/20
) Installing binutils (
2
.38
-r2)
(
4
/20
) Installing libmagic (
5
.41
-r0)
(
5
/20
) Installing file (
5
.41
-r0)
(
6
/20
) Installing libgomp (
11
.2
.1_git20220219-r2)
(
7
/20
) Installing libatomic (
11
.2
.1_git20220219-r2)
(
8
/20
) Installing gmp (
6
.2
.1
-r2)
(
9
/20
) Installing isl22 (
0
.22
-r0)
(
10
/20
) Installing mpfr4 (
4
.1
.0
-r0)
(
11
/20
) Installing mpc1 (
1
.2
.1
-r0)
(
12
/20
) Installing gcc (
11
.2
.1_git20220219-r2)
(
13
/20
) Installing musl-dev (
1
.2
.3
-r0)
(
14
/20
) Installing libc-dev (
0
.7
.2
-r3)
(
15
/20
) Installing g++ (
11
.2
.1_git20220219-r2)
(
16
/20
) Installing make (
4
.3
-r0)
(
17
/20
) Installing fortify-headers (
1
.1
-r1)
(
18
/20
) Installing patch (
2
.7
.6
-r7)
(
19
/20
) Installing build-base (
0
.5
-r3)
(
20
/20
) Installing ca-certificates (
20211220
-r0)
Executing busybox-1
.35
.0
-r14.trigger
Executing ca-certificates-20211220
-r0.trigger
OK: 187
MiB in
33
packages
---
Alpine installation is complete
Run /mnt/enter-chroot [-u <
user>
] [command] to enter the chroot
and /mnt/destroy [--remove] to destroy it.
Nous nous plaçons dans le dossier contenant le système de base :
cd /mnt
Nous supprimons les fichiers ajoutés par le dépôt et qui ne nous seront pas utiles : destroy, enter-chroot et env.sh
rm destroy enter-chroot env.sh
Nous lançons ensuite le chroot :
mount --bind /proc proc
mount --bind /sys sys
mount --bind /dev dev
cp /etc/resolv.conf etc
chroot . /bin/ash -l
Alpine Linux est fourni avec le shell ash, que nous appelons lors de la commande chroot, l’option -l change le prompt.
Nous installons ensuite le paquet suivant :
apk add alpine-base
apk est le gestionnaire de paquets d’Alpine Linux.
Une fois cette installation effectuée, il est possible de lancer le script suivant, permettant de facilement configurer le système :
setup-alpine
La première question posée concernera le hostname, celui-ci étant Ubuntu par défaut, le hostname de notre hôte chroot :
Enter system hostname (
fully qualified form, e.g. 'foo.example.org'
) [ubuntu] alpine
L’étape suivante concernera la configuration réseau, que nous allons sauter en laissant les valeurs par défaut :
* WARNING: mdev is already starting
Available interfaces are: enp0s3.
Enter '?'
for
help on bridges, bonding and vlans.
Which one do
you want to initialize? (
or '?'
or 'done'
) [enp0s3]
Ip address for
enp0s3? (
or 'dhcp'
, 'none'
, '?'
) [192
.168
.1
.80
]
Netmask? [255
.255
.255
.0
]
Gateway? (
or 'none'
) [192
.168
.1
.1
]
Configuration for
enp0s3:
type
=
static
address
=
192
.168
.1
.80
netmask
=
255
.255
.255
.0
gateway
=
192
.168
.1
.1
Do
you want to do
any manual network configuration? (
y/n) [n]
DNS domain name? (
e.g 'bar.com'
)
DNS nameserver
(
s)? [127
.0
.0
.53
]
Adresse à adapter à votre cas de figure.
Ensuite le mot de passe root :
Changing password for
root
New password:
Retype password:
passwd: password for
root changed by root
Suivi de la sélection du fuseau horaire :
Which timezone are you in
? (
'?'
for
list) [UTC] ?
Ci-dessous la liste affichée après entrée de « ? » :
Africa/ Chile/ GB-Eire Israel Navajo US/
America/ Cuba GMT Jamaica PRC UTC
Antarctica/ EET GMT+0
Japan PST8PDT Universal
Arctic/ EST GMT-0
Kwajalein Pacific/ W-SU
Asia/ EST5EDT GMT0 Libya Poland WET
Atlantic/ Egypt Greenwich MET Portugal Zulu
Australia/ Eire HST MST ROC posixrules
Brazil/ Etc/ Hongkong MST7MDT ROK right/
CET Europe/ Iceland Mexico/ Singapore
CST6CDT Factory Indian/ NZ Turkey
Canada/ GB Iran NZ-CHAT UCT
Which timezone are you in
? (
'?'
for
list) [UTC] Europe
La sélection de la zone « Europe » affichera une sous-liste :
What sub-timezone of 'Europe'
are you in
? (
'?'
for
list) ?
ls: Europe/: No such file or directory
Amsterdam Busingen Kiev Moscow Saratov Vatican
Andorra Chisinau Kirov Nicosia Simferopol Vienna
Astrakhan Copenhagen Lisbon Oslo Skopje Vilnius
Athens Dublin Ljubljana Paris Sofia Volgograd
Belfast Gibraltar London Podgorica Stockholm Warsaw
Belgrade Guernsey Luxembourg Prague Tallinn Zagreb
Berlin Helsinki Madrid Riga Tirane Zaporozhye
Bratislava Isle_of_Man Malta Rome Tiraspol Zurich
Brussels Istanbul Mariehamn Samara Ulyanovsk
Bucharest Jersey Minsk San_Marino Uzhgorod
Budapest Kaliningrad Monaco Sarajevo Vaduz
What sub-timezone of 'Europe'
are you in
? (
'?'
for
list) Paris
Étape de configuration en cours :
* Caching service dependencies ... [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/sysfs': No such file or directory
mkdir: can'
t create directory '/sys/fs/cgroup/unified/devfs'
: No such file or directory
* Remounting devtmpfs on /dev ... [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/mdev': No such file or directory
* Starting busybox mdev ...
modprobe: can'
t change directory to '/lib/modules'
: No such file or direc [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/fsck': No such file or directory
* Checking local filesystems ... [ ok ]
mkdir: can'
t create directory '/sys/fs/cgroup/unified/root'
: No such file or directory
* Remounting filesystems ... [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/localmount': No such file or directory
* Mounting local filesystems ... [ ok ]
mkdir: can'
t create directory '/sys/fs/cgroup/unified/acpid'
: No such file or directory
* Starting busybox acpid ... [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/modules': No such file or directory
* Loading modules ...
modprobe: can'
t change directory to '/lib/modules'
: No such file or directory
modprobe: can't change directory to '
/lib/modules': No such file or direc [ ok ]
mkdir: can'
t create directory '/sys/fs/cgroup/unified/hwclock'
: No such file or directory
* Setting system clock using the hardware clock [UTC] ... [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/hostname': No such file or directory
* Setting hostname ... [ ok ]
mkdir: can'
t create directory '/sys/fs/cgroup/unified/syslog'
: No such file or directory
* Starting busybox syslog ... [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/crond': No such file or directory
* Starting busybox crond ... [ ok ]
mkdir: can'
t create directory '/sys/fs/cgroup/unified/networking'
: No such file or directory
* Starting networking ...
* lo ... [ ok ]
* enp0s3 ...
ip: RTNETLINK answers: File exists [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/urandom': No such file or directory
* Saving 4096 bits of creditable seed for next boot
* Caching service dependencies ... [ ok ]
mkdir: can'
t create directory '/sys/fs/cgroup/unified/syslog'
: No such file or directory
* Starting busybox syslog ... [ ok ]
Il vous sera ensuite demandé l’éventuel proxy pour accéder à Internet :
HTTP/FTP proxy URL? (
e.g. 'http://proxy:8080'
, or 'none'
) [none]
Suivi du client NTP de votre choix (chrony par défaut, positionné à none) :
Which NTP client to run? (
'busybox'
, 'openntpd'
, 'chrony'
or 'none'
) [chrony] none
Puis le miroir à utiliser :
Available mirrors:
1
) dl-cdn.alpinelinux.org
2
) uk.alpinelinux.org
3
) dl-4
.alpinelinux.org
4
) dl-5
.alpinelinux.org
5
) mirror.yandex.ru
6
) mirrors.gigenet.com
7
) mirror1.hs-esslingen.de
8
) mirror.leaseweb.com
9
) mirror.fit.cvut.cz
10
) alpine.mirror.far.fi
11
) alpine.mirror.wearetriple.com
12
) mirror.clarkson.edu
13
) mirror.aarnet.edu.au
14
) mirrors.dotsrc.org
15
) ftp.halifax.rwth-aachen.de
16
) mirrors.tuna.tsinghua.edu.cn
17
) mirrors.ustc.edu.cn
18
) mirrors.nju.edu.cn
19
) mirror.lzu.edu.cn
20
) ftp.acc.umu.se
21
) mirror.xtom.com.hk
22
) mirror.csclub.uwaterloo.ca
23
) alpinelinux.mirror.iweb.com
24
) pkg.adfinis.com
25
) mirror.ps.kz
26
) mirror.rise.ph
27
) mirror.operationtulip.com
28
) mirrors.ircam.fr
29
) alpine.42
.fr
30
) mirror.math.princeton.edu
31
) mirrors.sjtug.sjtu.edu.cn
32
) ftp.icm.edu.pl
33
) mirror.ungleich.ch
34
) mirrors.edge.kernel.org
35
) ap.edge.kernel.org
36
) eu.edge.kernel.org
37
) download.nus.edu.sg
38
) alpine.yourlabs.org
39
) mirror.pit.teraswitch.com
40
) mirror.reenigne.net
41
) quantum-mirror.hu
42
) tux.rainside.sk
43
) alpine.cs.nycu.edu.tw
44
) mirror.ihost.md
45
) mirror.ette.biz
46
) mirror.lagoon.nc
47
) alpinelinux.c3sl.ufpr.br
48
) foobar.turbo.net.id
49
) alpine.ccns.ncku.edu.tw
50
) mirror.dst.ca
51
) mirror.kumi.systems
52
) mirror.sabay.com.kh
53
) alpine.northrepo.ca
54
) alpine.bardia.tech
55
) mirrors.ocf.berkeley.edu
56
) mirrors.pardisco.co
57
) mirrors.aliyun.com
58
) mirror.alwyzon.net
59
) mirror1.ku.ac.th
60
) mirrors.bfsu.edu.cn
61
) ftpmirror2.infania.net
62
) repo.iut.ac.ir
63
) mirror.fcix.net
64
) alpine.sakamoto.pl
65
) mirror.2degrees.nz
66
) mirror.arvancloud.com
67
) mirror.0
-1
.cloud
68
) mirror.kku.ac.th
69
) mirror.uepg.br
70
) alpine.astra.in
.ua
71
) mirrors.neusoft.edu.cn
72
) ftp.udx.icscoe.jp
73
) alpinelinux.mirror.garr.it
74
) mirrors.hostico.ro
r) Add random from the above list
f) Detect and add fastest mirror from above list
e) Edit /etc/apk/repositories with text editor
Enter mirror number (
1
-74
) or URL to add (
or r/f/e/done
) [1
]
Suite de la procédure :
Added mirror dl-cdn.alpinelinux.org
Updating repository indexes... done
.
Il vous sera également demandé si vous souhaitez créer un utilisateur (en plus de root) :
Setup a user? (
enter a lower-case
loginname, or 'no'
) [no]
Puis le choix du serveur SSH :
Which ssh server? (
'openssh'
, 'dropbear'
or 'none'
) [openssh]
Dans l’étape suivante, nous annulerons la procédure qui normalement formate le disque :
Available disks are:
loop0 (
2
.4
GB )
loop1 (
0
.0
GB )
loop2 (
0
.1
GB )
loop3 (
0
.1
GB )
loop4 (
0
.1
GB )
loop5 (
0
.2
GB )
loop6 (
0
.3
GB )
loop7 (
0
.0
GB )
sr0 (
2
.5
GB VBOX CD-ROM )
loop8 (
0
.0
GB )
loop9 (
0
.0
GB )
loop10 (
0
.0
GB )
Which disk
(
s) would you like to use? (
or '?'
for
help or 'none'
) [none] loop10
The following disk is selected:
loop10 (
0
.0
GB )
How would you like to use it? (
'sys'
, 'data'
, 'crypt'
, 'lvm'
or '?'
for
help) [?] data
WARNING: The following disk
(
s) will be erased:
loop10 (
0
.0
GB )
WARNING: Erase the above disk
(
s) and continue
? (
y/n) [n] n
Vu que la procédure d’installation a été interrompue, nous appelons ensuite le script de configuration clavier, normalement appelé par setup-alpine :
setup-keymap
Available keyboard layouts:
af be cn fi
hu it lk mm pl sy uz
al bg cz fo id jp lt mt pt th vn
am br de fr ie ke lv my ro tj
ara brai dk gb il kg ma ng rs tm
at by dz ge in
kr md nl ru tr
az ca ee gh iq kz me no se tw
ba ch epo gr ir la mk ph si ua
bd cm es hr is latam ml pk sk us
Select keyboard layout: [none] fr
Une fois « fr » sélectionné, une seconde option vous sera demandée :
Available variants: fr-afnor fr-azerty fr-bepo fr-bepo_afnor fr-bepo_latin9 fr-bre fr-dvorak fr-geo fr-latin9 fr-latin9_nodeadkeys fr-mac fr-nodeadkeys fr-oci fr-oss fr-oss_latin9 fr-oss_nodeadkeys fr-us fr
Select variant (
or 'abort'
): fr-azerty
Sortie :
* Caching service dependencies ... [ ok ]
mkdir: can't create directory '
/sys/fs/cgroup/unified/loadkmap': No such file or directory
* Setting keymap ... [ ok ]
Nous installons ensuite nano, celui-ci n’étant pas installé par défaut, contrairement à vi (que vous pouvez utiliser si vous le souhaitez).
apk add nano
Nous modifions ensuite le fichier /etc/fstab, qui devra contenir comme précédemment vu :
/dev/sda2 / ext4 defaults,rw 0
1
/dev/sda3 none swap sw 0
1
Nous continuons par l’installation du noyau :
apk add linux-lts
Sortie :
(
1
/105
) Installing lddtree (
1
.26
-r2)
(
2
/105
) Installing xz-libs (
5
.2
.5
-r1)
…
(
103
/105
) Installing linux-firmware-other (
20220509
-r0)
(
104
/105
) Installing linux-firmware (
20220509
-r0)
(
105
/105
) Installing linux-lts (
5
.15
.48
-r0)
Executing busybox-1
.35
.0
-r14.trigger
Executing kmod-29
-r2.trigger
Executing mkinitfs-3
.6
.1
-r2.trigger
==>
initramfs: creating /boot/initramfs-lts
OK: 1170
MiB in
161
packages
Nous installons ensuite GRUB :
mkdir /boot/efi
mount /dev/sda1 /boot/efi
apk add grub-efi efibootmgr
Puis nous ajoutons l’entrée suivante dans /etc/default/grub pour que le démarrage fonctionne :
GRUB_CMDLINE_LINUX
=
"modules=ext4"
Et nous lançons :
grub-install
Création du fichier de configuration GRUB :
grub-mkconfig -o /boot/grub/grub.cfg
11-1. Configuration post-installation▲
11-1-1. Configuration réseau▲
Au redémarrage, pour avoir le réseau, j’ai du remplacer enp0s3 par eth0 dans le fichier /etc/network/interfaces : Alpine Linux utilise l’ancienne nomenclature des cartes réseaux utilisées par le paquet net-tool, dépréciée dans les distributions les plus courantes.
11-1-2. Activation du swap▲
12. Conclusion▲
Au cours de ce tutoriel, nous avons vu comment installer/configurer une distribution Linux à partir d’une autre en montrant la flexibilité du système. Même si cela est possible, il est rare que ce soit utile : il est nettement plus simple d’effectuer une installation à partir d’un média dédié. Finalement, l’exercice est intéressant, voir amusant et permet de progresser dans l’utilisation de Linux.
12-1. Remerciements▲
Je remercie Sergiomaster, Philippe dpt35 et LitttleWhite pour leur relecture technique, ainsi qu’Escartefigue pour sa relecture orthographique