Install Arch Linux from existing Linux (Français)
Ce document décrit le processus d'amorçage nécessaire pour installer Arch Linux à partir d'un système hôte Linux en fonctionnement. Après l'amorçage, l'installation se déroule comme décrit dans le Guide d'installation.
Installer Arch Linux à partir d'un système Linux en fonctionnement est utile pour :
- installer Arch Linux à distance, par exemple un serveur racine (virtuel)
- remplacer un Linux existant sans LiveCD (voir #Remplacer le système existant sans LiveCD)
- créer une nouvelle distribution Linux ou LiveMedia basé sur Arch Linux.
- créer un environnement chroot Arch Linux, par exemple pour un conteneur de base Docker
- rootfs-over-NFS for diskless machines.
Le but de la procédure d'amorçage est de mettre en place un environnement à partir duquel les scripts de arch-install-scripts (tels que pacstrap
et arch-chroot
) peuvent être exécutés.
Si le système hôte utilise Arch Linux, il suffit d'installer arch-install-scripts. Si le système hôte fonctionne sous une autre distribution Linux, vous devrez d'abord configurer un chroot basé sur Arch Linux.
Sauvegarde et préparation
Sauvegardez toutes vos données, y compris les courriers électroniques, les serveurs Web, etc. Ayez toutes les informations à portée de main. Conservez toutes les configurations de vos serveurs, les noms d'hôtes, etc.
Voici une liste des données dont vous aurez probablement besoin :
- adresse IP
- nom(s) d'hôte (note : les serveurs racines font souvent partie du domaine du fournisseur, vérifiez ou sauvegardez votre
/etc/hosts
avant de le supprimer) - serveur DNS (vérifiez
/etc/resolv.conf
) - Clés SSH (si d'autres personnes travaillent sur votre serveur, elles devront accepter de nouvelles clés sinon. Cela inclut les clés de votre Apache, de vos serveurs de messagerie, de votre serveur SSH et autres).
- Infos sur le matériel (carte réseau, etc. Référez-vous à votre
/etc/modules.conf
pré-installé) - Les fichiers de configuration de Grub.
En général, c'est une bonne idée d'avoir une copie locale de votre répertoire original /etc
sur votre disque dur local.
Depuis un hôte exécutant Arch Linux
Installez le paquet arch-install-scripts.
Suivez Guide d'installation#Montage des systèmes de fichiers pour monter le système de fichiers qui sera utilisé pour le répertoire racine ainsi que tous les autres points de montage nécessaires. Si vous utilisez déjà le répertoire /mnt
pour autre chose, créez simplement un autre répertoire tel que /mnt/install
et utilisez-le comme base de point de montage pour le reste de l'installation.
À ce stade, Arch Linux peut soit être installé à partir de zéro, soit refléter l'installation de l'hôte. Les deux options sont décrites ci-après.
Créer une nouvelle installation d'Arch
Suivez Guide d'installation#Installation.
Dans la procédure, la première étape, Guide d'installation#Sélection du miroir, peut être sautée puisque l'hôte devrait déjà avoir une liste de miroirs correcte.
- Afin d'éviter de retélécharger tous les paquets, envisagez de suivre Pacman (Français)/Tips and tricks (Français)#Cache pacman partagé en réseau, ou utilisez l'option
-c
de pacstrap pour utiliser le cache des paquets de votre machine hôte. - Lorsque le chargeur d'amorçage GRUB est utilisé, le
grub-mkconfig
peut détecter les périphériques de manière incorrecte. Il en résulteraError:no such device
lors de la tentative d'amorçage à partir de la clé. Pour résoudre ce problème, depuis l'hôte exécutant Arch Linux, montez les partitions nouvellement installées, arch-chroot sur la nouvelle partition, puis installez et configurez GRUB. La dernière étape peut nécessiter la désactivation de lvmetad dans/etc/lvm/lvm.conf
en définissantuse_lvmetad=0
.
Créer une copie d'une installation Arch existante
Il est possible de répliquer une installation Arch Linux existante en copiant le système de fichiers hôte sur la nouvelle partition et en y apportant quelques ajustements pour la rendre amorçable et unique.
La première étape consiste à copier les fichiers hôtes dans la nouvelle partition montée, pour cela, envisagez d'utiliser l'approche exposée dans Rsync (Français)#Clonage du système de fichiers.
Ensuite, suivez la procédure décrite dans Guide d'installation#Configuration du système avec quelques avertissements et étapes supplémentaires :
- Guide d'installation#Heure, Guide d'installation#Locales et Guide d'installation#Mot de passe administrateur peuvent être ignorés.
- Guide d'installation#Initramfs peut être nécessaire en particulier si vous changez de système de fichiers, par exemple de ext4 à Btrfs.
- Concernant Guide d'installation#Installation d'un chargeur d'amorçage, il est nécessaire de réinstaller le chargeur d'amorçage
- Supprimer
/etc/machine-id
pour qu'un nouveau, unique, soit généré au prochain démarrage.
Si l'installation miroir d'Arch peut être utilisée dans une configuration différente ou avec un autre matériel, envisagez les opérations supplémentaires suivantes :
- Utilisez la mise à jour du microcode du processeur adaptée au système cible lors de l'étape Guide d'installation#Installation d'un chargeur d'amorçage.
- Si une Xorg (Français)#Configuration spécifique était présente sur l'hôte et peut être incompatible avec le système cible, suivez Moving an existing install into (or out of) a virtual machine#Disable any Xorg-related files.
- Effectuez tout autre ajustement approprié au système cible, comme la reconfiguration du réseau ou de l'audio.
Depuis un hôte exécutant une autre distribution Linux
Il existe de nombreux outils qui automatisent une grande partie des étapes décrites dans les sous-sections suivantes. Consultez leurs pages d'accueil respectives pour des instructions détaillées.
- arch-bootstrap (Bash)
- digitalocean-debian-to-arch (repartitionnement du disque, spécifique à DigitalOcean)
- image-bootstrap (Python)
- vps2arch (Bash)
- archbashstrap (Bash)
La méthode manuelle est présentée dans les sous-sections suivantes. L'idée est soit de faire fonctionner pacman directement sur le système hôte, soit de faire tourner un système Arch à l'intérieur du système hôte, l'installation réelle étant exécutée à partir du système Arch. Le système imbriqué est contenu dans un chroot.
Utiliser pacman depuis le système hôte
Pacman peut être compilé sur la plupart des distributions Linux, et utilisé directement sur le système hôte pour amorcer Arch Linux. Les arch-install-scripts devraient s'exécuter sans problème directement à partir des sources téléchargées sur toute distribution récente.
Certaines distributions fournissent un paquet pour pacman et/ou arch-install-scripts dans leurs dépôts officiels qui peuvent être utilisés à cette fin. En juillet 2020, Void Linux est connu pour fournir le paquet pacman, et Alpine Linux et Fedora sont connus pour fournir à la fois pacman et arch-install-scripts.
Création d'un chroot
Deux méthodes pour configurer et entrer dans le chroot sont présentées ci-dessous, de la plus simple à la plus compliquée. Ne sélectionnez qu'une seule des deux méthodes. Ensuite, continuez à #Utilisation d'un environnement chroot.
Méthode A : Utilisation de l'image bootstrap (recommandée)
Téléchargez l'image bootstrap depuis un mirror dans /tmp
. Vous pouvez également télécharger la signature (même URL avec .sig
ajouté) et vérifier avec GnuPG.
Extrayez l'archive tarball :
# tar xzf <path-to-bootstrap-image>/archlinux-bootstrap-*-x86_64.tar.gz --numeric-owner
Prenez note de l'option finale --numeric-owner
, qui est importante pour préserver les numéros UID et GID corrects des fichiers extraits dans le cas où votre système Linux existant utilise des numéros différents de ceux d'Arch Linux.
Sélectionnez un serveur de dépôt en éditant /tmp/root.x86_64/etc/pacman.d/mirrorlist
.
Entrez dans le chroot :
- Si bash 4 ou plus est installé, et que unshare prends en charge les options
--fork
et--pid
:# /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
- Sinon, exécutez les commandes suivantes :
# mount --bind /tmp/root.x86_64 /tmp/root.x86_64 # cd /tmp/root.x86_64 # cp /etc/resolv.conf etc # mount -t proc /proc proc # mount --make-rslave --rbind /sys sys # mount --make-rslave --rbind /dev dev # mount --make-rslave --rbind /run run # (en supposant que /run existe sur le système) # chroot /tmp/root.x86_64 /bin/bash
Méthode B : Utilisation de l'image LiveCD
Il est possible de monter l'image racine du dernier support d'installation d'Arch Linux et d'y accéder par chroot. Cette méthode a l'avantage de fournir une installation d'Arch Linux fonctionnelle au sein même du système hôte sans avoir besoin de le préparer en installant des paquets spécifiques.
FATAL ERROR aborting : uncompress_inode_table : failed to read block}.
L'image racine peut être trouvée sur l'un des mirrors sous iso/latest/arch/x86_64/
. Le format squashfs n'est pas modifiable, donc nous déséquilibrons l'image racine et la montons.
Pour déséquiper l'image racine, exécutez
# unsquashfs airootfs.sfs
Sélectionnez un serveur de dépôt en éditant squashfs-root/etc/pacman.d/mirrorlist
.
Avant de chrooter vers l'image racine non squashfs, nous devons configurer quelques points de montage et copier le resolv.conf
pour le réseau.
# mount --bind squashfs-root squashfs-root # mount -t proc none squashfs-root/proc # mount -t sysfs none squashfs-root/sys # mount -o bind /dev squashfs-root/dev # mount -o bind /dev/pts squashfs-root/dev/pts ## important pour pacman (pour la vérification de la signature) # cp -L /etc/resolv.conf squashfs-root/etc ## ceci est nécessaire pour utiliser le réseau dans le chroot.
Maintenant, tout est prêt pour le chroot dans l'environnement Arch nouvellement installé :
# chroot squashfs-root bash
Utilisation d'un environnement chroot
L'environnement bootstrap est vraiment dépouillé (pas de nano ou lvm2). Par conséquent, nous devons configurer pacman afin de télécharger les autres paquets nécessaires.
Initialisation du trousseau de clés pacman
Avant de commencer l'installation, les trousseaux de clés pacman doivent être configurés. Avant d'exécuter les deux commandes suivantes, lisez Pacman (Français)/Package signing (Français)#Initialisation du trousseau de clés pour comprendre les exigences en matière d'entropie :
# pacman-key --init # pacman-key --populate
pacman-key --init
sur un ordinateur qui ne génère pas beaucoup d'entropie (par exemple, un serveur sans affichage), la génération de clés peut prendre beaucoup de temps. Pour générer une pseudo-entropie, installez haveged ou rng-tools sur le système hôte et démarrez le service correspondant avant d'exécuter pacman-key --init
. (L'installation de ces services sur le système cible ne fonctionnera pas, puisque systemd refuse de démarrer les services à partir d'un chroot et que vous devez initialiser le trousseau de clés pacman avant d'installer tout paquet).
Si vous préférez générer de l'entropie à travers l'activité du système et décidez d'exécuter ls -Ra /
dans une autre console (TTY, terminal, session SSH...), n'ayez pas peur de l'exécuter en boucle plusieurs fois : cinq ou six exécutions depuis l'hôte se sont avérées suffisantes pour générer suffisamment d'entropie sur un serveur distant sans affichage.
Téléchargement des outils de base
Refresh the package lists et install ce dont vous avez besoin : base-devel, parted etc.
error : could not determine cachedir mount point /var/cache/pacman/pkg
. Pour contourner ce problème, exécutez mount --bind directory-to-livecd-or-bootstrap directory-to-livecd-or-bootstrapavant le chrootage. Consultez FS#46169.
Conseils d'installation
Vous pouvez maintenant passer à Guide d'installation#Montage des systèmes de fichiers et suivre le reste du Guide d'installation.
Certains systèmes hôtes ou configurations peuvent nécessiter certaines étapes supplémentaires. Consultez les sections ci-dessous pour obtenir des conseils.
Hôte basé sur Debian
/dev/shm
Sur certains systèmes hôtes basés sur Debian, pacstrap peut produire l'erreur suivante :
# pacstrap /mnt base
==> Création de la racine de l'installation sur /mnt mount : le point de montage /mnt/dev/shm est un lien symbolique vers nulle part. ==> ERROR : échec de la configuration des systèmes de fichiers API dans la nouvelle racine
Ceci est dû au fait que dans certaines versions de Debian, /dev/shm
pointe vers /run/shm
alors que dans le chroot basé sur Arch, /run/shm
n'existe pas et le lien est rompu. Pour corriger cette erreur, créez un répertoire /run/shm
:
# mkdir /run/shm
/dev/pts
Lors de l'installation de archlinux-2015.07.01-x86_64
depuis un hôte Debian 7, l'erreur suivante a empêché pacstrap(8) et arch-chroot de fonctionner :
# pacstrap -i /mnt
mount : le point de montage /mnt/dev/pts n'existe pas ==> ERROR : échec de la configuration du chroot /mnt
Apparemment, c'est parce que ces deux scripts utilisent une fonction commune. chroot_setup()
[1] s'appuie sur de nouvelles fonctionnalités de util-linux, qui sont incompatibles avec l'espace utilisateur de Debian 7 (voir FS#45737).
La solution pour pacstrap est d'exécuter manuellement ses various tasks, mais d'utiliser la regular procedure pour monter les systèmes de fichiers du noyau sur le répertoire cible ("$newroot"
) :
# newroot=/mnt # mkdir -m 0755 -p "$newroot"/var/{cache/pacman/pkg,lib/pacman,log} "$newroot"/{dev,run,etc} # mkdir -m 1777 -p "$newroot"/tmp # mkdir -m 0555 -p "$newroot"/{sys,proc} # mount --bind "$newroot" "$newroot" # mount -t proc /proc "$newroot/proc" # mount --rbind /sys "$newroot/sys" # mount --rbind /run "$newroot/run" # mount --rbind /dev "$newroot/dev" # pacman -r "$newroot" --cachedir="$newroot/var/cache/pacman/pkg" -Sy base base-devel ... ## ajoutez les paquets que vous voulez # cp -a /etc/pacman.d/gnupg "$newroot/etc/pacman.d/" ## copier le porte-clés # cp -a /etc/pacman.d/mirrorlist "$newroot/etc/pacman.d/" ## copy mirrorlist
Au lieu d'utiliser arch-chroot pour Guide d'installation#Chroot, utilisez simplement :
# chroot "$newroot"
lvmetad
Essayer de créer LVM volumes logiques à partir d'un environnement archlinux-bootstrap-2015.07.01-x86_64
sur un hôte Debian 7 a entraîné l'erreur suivante :
# lvcreate -L 20G lvm -n root
/run/lvm/lvmetad.socket : connect failed : Aucun fichier ou répertoire de ce type WARNING : Échec de la connexion à lvmetad. Retour à l'analyse interne. /dev/lvm/root : non trouvé : périphérique non effacé Abandon. Échec de l'effacement du début du nouveau LV.
(La création du volume physique et du groupe de volumes a fonctionné malgré /run/lvm/lvmetad.socket : connect failed : No such file or directory
s'affiche).
Ceci peut être facilement contourné en créant les volumes logiques en dehors du chroot (depuis l'hôte Debian). Ils sont alors disponibles une fois le chroot rétabli.
De plus, si le système que vous utilisez dispose de lvm, vous pouvez obtenir le résultat suivant :
# grub-install --target=i386-pc --recheck /dev/main/archroot
Installation pour la plate-forme i386-pc. /run/lvm/lvmetad.socket : échec de la connexion : Aucun fichier ou répertoire de ce type WARNING : échec de la connexion à lvmetad. Retour à l'analyse interne. /run/lvm/lvmetad.socket : connect failed : No such file or directory WARNING : Échec de la connexion à lvmetad. Retour à l'analyse interne. /run/lvm/lvmetad.socket : échec de la connexion : No such file or directory WARNING : Échec de la connexion à lvmetad. Retour à l'analyse interne. /run/lvm/lvmetad.socket : échec de la connexion : No such file or directory WARNING : Échec de la connexion à lvmetad. Retour à l'analyse interne. /run/lvm/lvmetad.socket : échec de la connexion : No such file or directory WARNING : Échec de la connexion à lvmetad. Retour à l'analyse interne.
Ceci est dû au fait que debian n'utilise pas lvmetad par défaut. Vous devez éditer /etc/lvm/lvm.conf
et définir use_lvmetad
à 0
:
use_lvmetad = 0
Cela déclenchera plus tard une erreur au démarrage dans l'étape initrd. Par conséquent, vous devez le modifier après la génération de grub. Dans un RAID logiciel + LVM, les étapes seraient les suivantes :
- Après avoir installé le système, vérifiez votre Mkinitcpio et vos paramètres de chargeur d'amorçage. Consultez Chargeur d'amorçage pour une liste de chargeurs de démarrage.
- Vous devrez peut-être modifier votre
/etc/mdadm.conf
pour refléter vos paramètres RAID (si applicable). - Vous devrez peut-être modifier vos
HOOKS
etMODULES
en fonction de vos besoins en LVM et RAID :MODULES="dm_mod" HOOKS="base udev mdadm_udev ... block lvm2 filesystems ..."
} - Vous aurez très probablement besoin de générer de nouvelles images initrd avec mkinitcpio. Consultez Mkinitcpio (Français)#Création et activation d'images.
- Définissez
use_lvmetad = 0
dans/etc/lvm/lvm.conf
. - Mettez à jour les paramètres de votre chargeur d'amorçage. Consultez la page wiki de votre chargeur d'amorçage pour plus de détails.
- Définissez
use_lvmetad = 1
dans/etc/lvm/lvm.conf
.
Hôte basé sur Fedora
Sur les hôtes basés sur Fedora et les live USB, vous pouvez rencontrer des problèmes en utilisant genfstab pour générer votre fstab. Supprimez les entrées en double et l'option "seclabel" lorsqu'elle apparaît, car elle est spécifique à Fedora et empêchera votre système de démarrer normalement.
Choses à vérifier avant de redémarrer
Avant de redémarrer, vérifiez quelques détails de votre installation afin d'obtenir une installation réussie. Pour ce faire, il faut d'abord chrooter sur le système nouvellement installé, puis :
- créer un utilisateur avec un mot de passe, afin que vous puissiez vous connecter via ssh. Ceci est essentiel puisque la connexion root est désactivée par défaut depuis OpenSSH-7.1p2.
- créer un mot de passe root pour que vous puissiez passer en tant que root via su plus tard.
- installer une solution ssh et activer son instance de serveur pour qu'elle démarre automatiquement au démarrage.
- Configurez votre configuration réseau afin qu'une connexion soit lancée automatiquement au démarrage.
- Installez un chargeur d'amorçage et configurez-le pour qu'il utilise la partition swap que vous vous êtes appropriée plus tôt comme partition racine. Vous voudrez peut-être configurer votre chargeur d'amorçage pour pouvoir démarrer sur votre ancien système ; il est utile de réutiliser la partition
/boot
existante du serveur dans le nouveau système à cette fin.
Remplacer le système existant sans LiveCD
Trouvez ~700 MB d'espace libre quelque part sur le disque, par exemple en partitionnant une partition swap. Vous pouvez désactiver la partition swap et y installer votre système.
Définir l'ancienne partition swap comme nouvelle partition racine
Vérifiez cfdisk
, /proc/swaps
ou /etc/fstab
pour trouver votre partition swap. En supposant que votre disque dur est situé sur sdaX
(X
sera un nombre).
Faites ce qui suit :
Désactivez l'espace d'échange :
# swapoff /dev/sdaX
Créez un système de fichiers dessus
# fdisk /dev/sda (définissez le champ ID de /dev/sdaX à "Linux" - Hex 83) # mke2fs -j /dev/sdaX
Créez un répertoire pour le monter
# mkdir /mnt/newsys
Enfin, montez le nouveau répertoire pour installer le système intermédiaire.
# mount -t ext4 /dev/sdaX /mnt/newsys
Installation
Installation des paquets essentiels et tout autre paquet nécessaire pour obtenir un système avec une connexion internet opérationnelle dans la partition temporaire, en faisant attention à la limite de ~700 Mo d'espace. Lorsque vous spécifiez les paquets à installer avec pacstrap, pensez à ajouter le paramètre -c
pour éviter de remplir un espace précieux en téléchargeant les paquets sur le système hôte.
Une fois le nouveau système Arch Linux installé, corrigez la configuration du chargeur d'amorçage, puis redémarrez le système nouvellement créé, et rsync the entire system sur la partition primaire.