Install Arch Linux from existing Linux (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de Install Arch Linux from existing Linux. Date de la dernière traduction: 2022-05-22. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

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 :

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.

Note: Ce guide exige que le système hôte existant soit capable d'exécuter les programmes de la nouvelle architecture Arch Linux cible. Cela signifie qu'il doit s'agir d'un hôte x86_64.
Attention: Veuillez vous assurer que vous comprenez chaque étape avant de procéder. Il est facile de détruire votre système ou de perdre des données critiques, et votre fournisseur de services vous facturera probablement beaucoup pour vous aider à récupérer.

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.

Astuce:
  • 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ésultera Error: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éfinissant use_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 :

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 :

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.

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.

Note: Avant de procéder, assurez-vous que la dernière version de squashfs est installée sur le système hôte. Sinon, des erreurs comme celles qui suivent sont à prévoir : 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
Astuce: Si vous devez exécuter 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.

Note: Lorsque vous essayez d'installer des paquets avec pacman, vous pouvez obtenir 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-bootstrap
avant 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 et MODULES 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.