Comment installer Fedora / Rhel / Centos via Kickstart sur un appareil LUKS existant
- 3556
- 256
- Romain Martinez
Installations Kickstart Laissez-nous facilement le scripter et reproduire les installations sans surveillance ou semi-désordre de Fedora, Red Hat Enterprise Linux ou CentOS. Les instructions nécessaires pour installer le système d'exploitation sont spécifiées, avec une syntaxe dédiée, à l'intérieur d'un fichier Kickstart qui est transmis au programme d'installation d'Anaconda. Dans ce tutoriel, nous verrons comment réutiliser un Luks
(Configuration Linux Unified Keys) Container Lors de l'exécution d'une installation Kickstart: c'est quelque chose qui ne peut pas être réalisé uniquement avec des instructions Kickstart et nécessite quelques étapes supplémentaires.
Dans ce tutoriel, vous apprendrez:
- Comment utiliser un conteneur LUKS existant lors de la réalisation d'une installation Kickstart de Fedora, Rhel ou Centos
- Comment créer et utiliser une mise à jour.Fichier IMG à utiliser avec l'installateur Anaconda.
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Fedora / Rhel / Centos |
Logiciel | Aucun logiciel spécifique n'est nécessaire pour suivre ce tutoriel. |
Autre |
|
Conventions | # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier |
Introduction
Kickstart Laissez-nous facilement reproduire et personnaliser les installations du système d'exploitation d'une manière qui est tout simplement impossible à réaliser à partir de l'installateur graphique Anaconda. Nous pouvons, par exemple, déclarer quels packages ou groupes de packages doivent être installés sur le système et ce qui devrait être exclu à la place.
Nous avons également la possibilité d'exécuter des commandes personnalisées avant ou après l'installation effectuée, les spécifiant à l'intérieur du dédié %pré
et %poste
sections du fichier kickstart respectivement. Nous profiterons de cette dernière fonctionnalité mentionnée pour utiliser un Luks
dispositif pendant le processus d'installation.
Cryptage avec syntaxe de kickstart native
La création de conteneurs Luks est assez facile et peut être fait en utilisant simplement les instructions de Kickstart natives. Voici un exemple:
partie PV.01 --ondisk = sda --encrypted - lUks-type = LUKS1 --cipher = aes-xts-plain64 --pbkdf-time = 5000 --passphrase = SecretPassphrase
Dans l'exemple ci-dessus, en utilisant le partie
instruction, nous créons un chiffre LVM
volume physique sur le / dev / sda
disque. Nous spécifions le Luks
Version à utiliser (LUKS1 Dans ce cas - au moins dans les versions récentes de Fedora Luks2 est devenue la valeur par défaut), le chiffrer
, et le temps, exprimé en millisecondes, à passer pour Pbkdf
(Fonction de dérivation de clé basée sur un mot de passe) Traitement en phrase de passe (il équivaut à l'utilisation du --time iter
option cryptsetup
).
Même si ce n'est pas une habitude sûre, nous avons également utilisé --phrase secrète
Pour fournir la phrase secrète de chiffrement: sans cette option, le processus d'installation serait interrompu et nous serions invités à en fournir un de manière interactive.
Nous pouvons clairement voir comment, en utilisant Kickstart, nous obtenons beaucoup plus de flexibilité par rapport à une installation traditionnelle; Pourquoi aurions-nous besoin d'effectuer des étapes supplémentaires, alors? Il y a encore des tâches que nous ne pouvons pas réaliser en utilisant uniquement la syntaxe Kickstart standard. Entre autres choses, nous ne pouvons pas créer Luks
conteneurs sur des appareils bruts (uniquement sur les partitions) ou spécifiez l'algorithme de hachage à utiliser pour le Luks
Configuration de la clé, qui est par défaut sur sha256
(Rien de mal avec ça).
Pour ces raisons, nous voulons peut-être créer notre configuration de partition avant d'effectuer l'installation, soit manuellement, soit en utilisant des outils comme séparés à l'intérieur du %pré
Section du fichier Kickstart lui-même. Nous pouvons également simplement avoir un existant Luks
Configuration Nous ne voulons pas détruire. Dans tous ces cas, nous devons effectuer les étapes supplémentaires que nous verrons dans un instant.
La section Kickstart% Pre
Le %pré
La section d'un fichier Kickstart est la première à être analysée lorsque le fichier est récupéré. Il est utilisé pour effectuer des commandes personnalisées avant le début de l'installation et doit être fermé explicitement avec le %fin
instruction.
Dans %pré
, L'interprète Bash Shell est utilisé par défaut, mais d'autres peuvent être spécifiés via le --interprète
Option (pour utiliser Python que nous écrivions % avant - interpréter / usr / bin / python
). Nous pouvons utiliser cette section pour exécuter les commandes nécessaires pour ouvrir l'existence Luks
récipient. Voici ce que nous pouvons écrire:
% pre iotty = "$ (tty)" exec> "$ iotty" 2> "$ iotty" while true; faire cryptsetup luksopen / dev / sda1 cryptroot - && pause fait% fin
Copie Jetons un coup d'œil au code ci-dessus. Tout d'abord, nous stockons le résultat du tty
Commande, qui imprime le nom de fichier du terminal connecté à la saisie standard, dans le iotty
variable.
Avec le exec> "$ iotty" 2> "$ iotty"
Commande Nous avons redirigé la sortie standard et l'erreur standard vers le même terminal:
De cette façon, nous pourrons saisir le mot de passe du conteneur lorsque crytpsetup luksopen
La commande sera exécutée et l'invite sera affichée à l'écran. La commande est lancée dans une boucle infinie qui n'est interrompue que si le Luks
Le conteneur est ouvert avec succès.
Si nous voulons avoir besoin d'exécuter une installation complètement sans surveillance, nous devons passer la phrase de passe directement à CryptSetUp (encore une fois, ce n'est pas recommandé). Nous écrivions:
% Pre écho -n "OurverySecretPassphrase" | cryptsetup luksopen / dev / sda1 cryptroot -% fin
Dans l'exemple ci-dessus, nous avons passé la phrase secrète à l'entrée standard de la commande cryptsetup via un tuyau |
: nous avons utilisé le écho
commande avec le -n
Option pour éviter qu'un caractère Newline soit ajouté à la fin de la phrase secrète.
Patching Fedora 31 ANACONDA INSTALLATEUR
Si nous essayons d'utiliser un conteneur LUKS déverrouillé lors de l'installation de Fedora 31 via Kickstart, nous recevrons ce qui suit
Message, et le processus sera interdit:
Le périphérique LUKS déverrouillé existant ne peut pas être utilisé pour l'installation sans une clé de chiffrement spécifiée pour cela
appareil. S'il vous plaît, annulez le stockage.
Cela se produit en raison de ce commit introduit dans la version Fedora 31 du programme d'installation d'Anaconda. Le code vérifie essentiellement qu'un périphérique LUKS existant a une clé enregistrée, si ce n'est pas interdit l'installation. Le problème est que balise
, La bibliothèque Python utilisée par Anaconda pour gérer la partition acquiert la clé uniquement si le conteneur est ouvert par celui-ci: cela peut être fait à partir de l'installateur graphique, mais il n'y a pas, au moment de l'écriture, une instruction de lancement pour déverrouiller un existant existant Luks
récipient. J'ai personnellement commenté l'engagement expliquant la situation, et un bug a été ouvert sur Red Hat Bugzilla.
Créer une mise à jour.fichier IMG
Pour le moment, la seule solution de contournement (que je connais) est de corriger le code source Anaconda, commentant la ligne qui exécute le contrôle introduit avec le commit que nous avons mentionné ci-dessus. La bonne nouvelle est que c'est un très simple à opérer.
En première chose, nous devons cloner le référentiel Anaconda Git, en particulier le F31-libération
bifurquer:
$ git clone https: // github.com / rhinstaller / anaconda -b f31-libération
Une fois le repo cloné, nous entrons dans le anaconda
répertoire et modifier le Pyanaconda / Storage / vérificateur.py
Fichier: Tout ce que nous avons à faire est de commenter la ligne 619
:
def set_default_checks (self): "" "Définissez les vérifications par défaut.""" soi.checks = list () self.add_check (Verify_root) self.add_check (Verify_S390_Constraints).add_check (Verify_Partition_formatting) self.add_check (Verify_Partition_Sizes) self.add_check (Verify_Partition_format_sizes) self.add_check (Verify_bootloader) self.add_check (Verify_gpt_biosboot) Self.add_check (Verify_swap) self.add_check (Verify_swap_uuid) self.add_check (Verify_mountpoils_on_linuxfs) self.add_check (Verify_mountpoils_on_root) #self.add_check (Verify_unlocked_devices_have_key) self.add_check (Verify_luks_devices_have_key) self.add_check (Verify_luks2_memory_requirements) self.add_check (Verify_Mounted_Partitions)
Copie Nous enregistrons la modification et, à partir de la racine du référentiel, nous lançons le maquillage
script qui se trouve dans le scripts
annuaire. Pour que le script soit exécuté, nous devons avoir python2
installée:
$ ./ scripts / maquilleurs
Le script générera le mises à jour.IMG
fichier qui contiendra nos modifications. Pour vérifier son contenu, nous pouvons utiliser le lsinitrd
commande:
$ lsinitrd mises à jour.Img Img: Mises à jour.IMG: 8.0k =============================================================== ======================= Version: Arguments: Modules Dracut: =================== ==============================================. == drwxr-xr-x 3 egdoc egdoc 0 janvier 30 09:29 . drwxr-xr-x 3 egdoc egdoc 0 janvier 30 09:29 Run drwxr-xr-x 3 egdoc egdoc 0 janvier 30 09:29 Run / installer drwxr-xr-x 3 egdoc egdoc 0 janvier 30 09:29 Run / install / install / Mises à jour DRWXR-XR-X 3 Egdoc Egdoc 0 janvier 30 09:29 Exécuter / installer / mises à jour / pyanaconda drwxr-xr-x 2 egdoc Egdoc 0 jan -R-- 1 Egdoc Egdoc 25443 Jan 30 09:29 Exécuter / installer / mises à jour / pyanaconda / stockage / vérificateur.py ============================================================================== ======================
Nous utiliserons ce fichier pour «patcher» l'installateur de Fedora 31.
Appliquer le patch
Pour appliquer les modifications contenues dans le fichier que nous venons de générer, nous devons le placer quelque part où nous pouvons facilement y accéder, peut-être via FTP ou HTTP, ou même sur un appareil de bloc local, et utiliser le inst.mises à jour
Paramètre pour le référencer à partir de l'image d'installation de Fedora. Dans le menu Grub, nous mettons en surbrillance l'entrée du menu «Installer Fedora»:
Menu d'installation de Fedora 31
Une fois la ligne de menu sélectionnée, nous appuyons sur la touche Tab: La ligne de commande du noyau associée à l'entrée s'affiche en bas de l'écran:
La ligne de commande du noyau utilisée par l'entrée «Installer Fedora», tout ce que nous avons à faire maintenant est d'ajouter le
inst.mises à jour
instruction et fournir le chemin vers le mises à jour.IMG
Fichier que nous avons créé. En supposant à la fois le kickstart et les mises à jour.Le fichier IMG est accessible via HTTP sur un serveur local avec IP 192.168.0.37, nous écrivions: vmLinUz initrd = initrd.img inst.stage2 = hd: label = fedora-s-dvd-x86_31-31 silencieux inst.mises à jour = http: // 192.168.0.37 / mises à jour.img inst.ks = http: // 192.168.0.37 / KS.CFG
À ce stade, nous pouvons appuyer sur Entrée pour démarrer. Avec la modification ci-dessus, l'installateur ne se plaindra plus
le déverrouillé Luks
dispositif, et l'installation se déroulera sans problèmes.
Conclusions
Dans cet article, nous avons vu comment régler une installation Kickstart afin de réutiliser un Luks
dispositif, le déverrouillant dans le %pré
Section du fichier Kickstart, et comment appliquer une petite solution de contournement au programme d'installation de Fedora 31 qui échouerait autrement lorsque ce type d'installation sera tenté. Si vous êtes curieux de savoir la syntaxe Kickstart, veuillez jeter un œil à la documentation en ligne.
Tutoriels Linux connexes:
- Choses à installer sur Ubuntu 20.04
- Comment installer Debian sur un conteneur Luks existant
- Comment installer Anaconda Scientific Computing Python…
- Comment effectuer des installations Linux sans surveillance avec Kickstart
- Comment utiliser un fichier comme clé de périphérique LUKS
- Oracle Linux vs Red Hat (Rhel)
- Téléchargement Linux
- Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
- Une introduction à l'automatisation Linux, des outils et des techniques
- Choses à installer sur Ubuntu 22.04
- « Ajouter de nouvelles partitions, des volumes logiques et échanger à un système de destructif - Préparation d'objectif RHCSA
- Objectifs de l'étude pour l'examen RHCSA et le guide de préparation »