Comment installer deux installations Ubuntu indépendantes sur un seul disque dur avec UEFI?

8

Pour des raisons de sécurité, j'aimerais installer un système d'exploitation secondaire complètement indépendant sur un ordinateur à disque dur unique utilisant UEFI. Les deux installations doivent pouvoir utiliser différentes partitions de chiffrement LUKS en tant que périphérique racine (LVM au-dessus de la chiffrement) et doivent pouvoir utiliser leurs propres noyaux.

Avoir un double démarrage avec deux systèmes d'exploitation différents n'est pas un gros problème. Un Ubuntu et Fedora n'interfèrent pas et peuvent partager la partition système EFI, mais deux installations Ubuntu se battront l'une contre l'autre car elles souhaitent que les deux installent leur instance Grub sur le même emplacement EFI.

  • Existe-t-il un moyen de changer Ubuntu pour installer Grub sur un emplacement différent de celui de l' /boot/efi/EFI/ubuntuinstallation? J'ai besoin d'un moyen persistant, pour que les mises à jour des packages et les mises à jour du noyau / grub soient toujours installées dans ce chemin. Tout comme la façon dont Fedora's Grub s'installerait /boot/efi/EFI/fedora. Je ne trouve pas cette option de configuration dans Grub. Si je le pouvais, mon menu de démarrage Dell UEFI me permettrait de choisir le système d'exploitation à charger. Peut-être qu'il me manque un peu de colle entre efibootmgr et grub-efi ici.

  • Sinon, serait-il possible d'utiliser une seule installation Grub à partir de l'une des deux installations Ubuntu et de la faire détecter automatiquement les bons paramètres de démarrage? Je veux dire, je sais os-proberqu'il trouvera l'autre /bootpartition avec des noyaux, mais comment peut-il connaître les bons paramètres de démarrage pour ce système d'exploitation (par exemple, le volume LVM à l'intérieur du volume crypté verrouillé en tant que système de fichiers racine)? Je peux comprendre qu'il puisse le faire avec des installations à partition unique non chiffrées, mais il ne peut pas correspondre à un /bootavec son système de fichiers racine correspondant, non? Et c'est complètement impossible s'il est crypté. Cela nécessiterait donc beaucoup de réglages manuels des fichiers de configuration de grub. Je n'aime pas non plus cette option d'une configuration de chargeur de démarrage partagé unique, ce qui rend les deux systèmes d'exploitation moins isolés dans une certaine mesure.

Soit dit en passant, je suis d'accord avec une installation experte basée sur le texte du serveur. Aussi une configuration personnalisée tant que je n'ai pas à répéter les étapes pour chaque mise à jour du noyau / Grub.

gertvdijk
la source

Réponses:

6

J'ai deux suggestions ...

Option n ° 1: ESP séparés

Sous EFI, le chargeur de démarrage réside sur "la" partition système EFI (ESP). J'ai mis le mot «le» entre guillemets parce qu'il n'y a aucune règle qui dit que vous êtes limité à un ESP. Si vous créez deux ESP sur votre disque dur, vous pouvez utiliser l'un d'entre eux pour votre première installation et le deuxième ESP pour la deuxième installation. Cela devrait fonctionner de manière assez transparente, bien que vous deviez créer vos partitions manuellement (en utilisant l'option "Something Else" lors de l'installation), au moins pour votre deuxième installation d'Ubuntu.

Un problème avec cette approche est que, bien que la spécification EFI indique explicitement que vous pouvez créer autant d'ESP que vous le souhaitez, certains logiciels peuvent devenir confus. Un exemple frappant de cela est le programme d'installation de Windows, au moins via Windows 7 (je ne connais pas Windows 8 ou version ultérieure); lorsque le programme d'installation de Windows 7 voit un disque avec deux ESP, il s'écaille et fait des choses étranges. IIRC, il ne termine pas correctement sa propre installation. Il est concevable que les outils de réparation de Windows souffrent du même problème. Si vous ne démarrez pas Windows sur ce système, cela ne devrait pas être un gros problème. Si vous êtesen démarrant avec Windows, vous devez simplement être conscient du problème, car vous pouvez facilement le résoudre en modifiant temporairement le code de type des ESP non Windows si vous rencontrez des problèmes. Notez que Windows démarrera très bien sur un disque avec plusieurs ESP; c'est juste l'installateur qui s'étouffe sur ces disques.

Un autre problème est de savoir comment basculer entre vos deux distributions. Vous devrez peut-être personnaliser l'une ou les deux configurations GRUB de vos installations à l'aide d'un outil tel que GRUB Customizer. Une autre option (mais non incompatible) serait d'utiliser le propre gestionnaire de démarrage de votre micrologiciel pour basculer entre vos deux installations GRUB et d'utiliser chacune pour démarrer uniquement sa propre version d'Ubuntu.

Option n ° 2: abandonner GRUB (ou au moins les outils GRUB d'Ubuntu)

Le problème avec GRUB pour votre situation est que vous avez deux installations et les outils de maintenance GRUB sont susceptibles de devenir confus par cette configuration. Cette observation conduit à la solution évidente que vous ne devez tout simplement pas utiliser ces outils. Il existe plusieurs autres chargeurs de démarrage EFI pour Linux, dont la plupart sont plus faciles à entretenir manuellement que GRUB. Vous pouvez configurer ELILO, SYSLINUX, GRUB Legacy patché par Fedora, gummiboot ou rEFInd et gérer vos deux installations manuellement. En fait, parce que rEFInd détecte les noyaux chaque fois qu'il démarre, rEFInd devrait être proche de l'absence de maintenance, une fois qu'il est configuré. Alternativement, mais dans la même veine, vous pouvez modifier manuellement votre grub.cfgfichier pour faire ce que vous voulez, plutôt que de vous fier aux scripts de configuration de GRUB.

Mis à part rEFInd, tous ces outils vous obligeront à faire des changements de configuration chaque fois que vous mettez à jour un noyau, ce qui sera un frein. Il y a aussi la question de savoir quand et comment installer le programme de démarrage supplémentaire. Je le retarderais probablement après votre deuxième installation d'Ubuntu, car chaque installation enregistrera sa propre copie de GRUB en tant que chargeur de démarrage par défaut, et vous souhaitez remplacer cette valeur par défaut.

Notez également qu'aucun de ces outils ne peut lire un noyau à partir d'un système de fichiers chiffré ou d'un LVM, vous aurez donc besoin d'avoir une /bootpartition non chiffrée distincte pour chacune de vos installations Ubuntu. C'est de cette façon que la plupart des instructions que j'ai vues disent de configurer une installation Ubuntu cryptée de toute façon, donc ce n'est probablement pas un gros problème à moins que vous ne vouliez jouer sur le "bord saillant" du cryptage du disque.

Certains chargeurs de démarrage EFI ont des exigences de partitionnement ou de système de fichiers spécifiques supplémentaires. Plus particulièrement, ELILO, SYSLINUX et gummiboot nécessitent tous que le noyau réside sur une partition FAT, et l'ESP fonctionne mieux pour cela. Vous pouvez le faire en montant l'ESP sur /boot, mais c'est une solution douteuse dans Ubuntu car certaines mises à jour de packages nécessitent des liens symboliques. Vous auriez également du mal à le faire avec deux installations Ubuntu distinctes car elles essaieraient toutes les deux de revendiquer les mêmes fichiers. (Dans ce cas, "l'ESP" signifie vraiment "la partition à partir de laquelle le chargeur de démarrage a fonctionné", donc vous ne pouvez avoir qu'un seul ESP dans ce cas.) GRUB Legacy et rEFInd sont plus flexibles à ce sujet.

Ma recommandation

Personnellement, j'utiliserais rEFInd pour cela - mais comme je maintiens rEFInd, je ne suis pas exactement impartial. En fait, j'ai un ordinateur qui démarre simultanément entre trois installations Ubuntu et les commutateurs rEFInd entre eux très bien. Ce système particulier n'utilise pas de cryptage, mais je doute que cela cause de nouveaux problèmes du point de vue de rEFInd.

Cela dit, les ESP séparés devraient également fonctionner correctement, avec la mise en garde que vous pourriez avoir besoin d'utiliser GRUB Customizer pour modifier les paramètres d'au moins une de ces copies GRUB.

Rod Smith
la source
Très bonnes suggestions, merci! Je suis sûr que vous avez raison sur le fait que l'on peut avoir plusieurs ESP selon la spécification, mais je doute que mon implémentation Dell Latitude UEFI le supporte également. Il me permet uniquement de parcourir les chemins par des disques individuels individuels. Je dois quand même l'essayer.
gertvdijk
si l'implémentation EFI de votre Dell est si cassée qu'elle ne peut pas gérer plusieurs ESP, vous devez la retourner au magasin pour un remboursement. Sérieusement; ce genre de mal indiquerait une telle horreur que je ne ferais pas confiance au firmware pour faire ses tâches les plus élémentaires. En pratique, je ne pense pas que ce serait si mauvais; Je n'ai jamais entendu parler d'un EFI qui ne peut pas gérer plusieurs ESP.
Rod Smith
1

Voici les étapes que j'ai utilisées pour effectuer un double démarrage avec deux systèmes Ubuntu cryptés LUKS sur un seul disque dur avec UEFI en utilisant l'option # 2 recommandée par Rod Smith précédemment. C'était spécifiquement avec Ubuntu 18.04.1-desktop. Le cryptage du répertoire personnel n'est plus proposé en option lors de l'installation car il existe des problèmes de fiabilité et de maintenance d'eCryptfs. Il est recommandé d'utiliser LUKS à la place, donc je pense que c'est la meilleure option pour avoir plusieurs utilisateurs avec des partitions personnelles chiffrées.

    1. Démarrez dans un Live USB, c'était en téléchargeant l'ISO et en utilisant le Startup Disk Creator pour formater et configurer un lecteur USB.
    1. Utilisez GParted pour partitionner le disque. Cela était basé sur les recommandations de https://help.ubuntu.com/community/ManualFullSystemEncryption et sur l'utilisation de certains des paramètres par défaut définis par le programme d'installation d'Ubuntu lors de la sélection du chiffrement de disque pour le disque complet.
      • Partition système EFI / 512 Mo / FAT32 / boot, esp (drapeaux)
      • Système de démarrage # 1 / 732MiB / EXT4
      • Système de démarrage # 2 / 732MiB / EXT4
      • Données cryptées # 1 / [taille souhaitée] / effacées
      • Données cryptées # 2 / [taille souhaitée] / effacées
    1. Redémarrez à nouveau en Live USB
      • Installez Ubuntu
      • Sélectionnez les préférences d'installation
      • Sélectionnez "Autre chose" pour la disposition du disque de partition, et dans cette configuration de partition pour l'installation:
        • Sélectionnez "EFI System Partition" comme chargeur de démarrage dans le menu en bas.
        • Sélectionnez "Data Encrypted # 1" et sélectionnez "périphérique physique pour le cryptage", puis entrez la phrase de cryptage à utiliser pour la partition.
        • Sélectionnez la partition nouvellement créée avec EXT4 et changez le point de montage en "/".
        • Sélectionnez le "Boot System # 1" et faites en sorte que le point de montage soit "/ boot".
      • Continuer et installer
    1. Redémarrez dans la nouvelle installation
      • Installez "refind" via "apt-get install refind" et faites-le installer automatiquement sur l'ESP, la "partition système EFI".
    1. Redémarrez à nouveau dans le Live USB
      • Répétez les étapes 3 et 4 pour les partitions # 2 Boot System et Data Encrypted # 2 installant la deuxième installation d'Ubuntu.
    1. Configurez et mettez à niveau chaque installation selon vos besoins.
brihoriq
la source
1

J'utilise l'approche suivante avec un seul ESP:

J'ai créé des chargeurs de démarrage supplémentaires pour chaque système d'exploitation avec

sudo grub-install --bootloader-id=ID

en utilisant un différent IDpour chaque système d'exploitation.

Exemple:

J'ai Ubuntu 16.04 et Ubuntu 18.04 installés. Je démarre dans Ubuntu 16.04 et je lance

sudo grub-install --bootloader-id=Ubuntu1604

Ensuite, depuis booté dans Ubuntu 18.04, je lance

sudo grub-install --bootloader-id=Ubuntu1804

Dans les UEFI paramètres que je vois les nouvelles entrées de démarrage avec les noms Ubuntu1604et Ubuntu1804et modifier l'ordre de démarrage à un ensemble de nouvelles entrées à la première place.

Je peux également voir les dossiers portant ce nom dans l'ESP.

Lorsqu'une mise à niveau du système est livrée avec une nouvelle version de grub, elle réinstallera une nouvelle instance de grub dans le ubuntudossier-sur l'ESP, cela n'affectera pas les chargeurs de démarrage que j'ai créés moi-même, mais je dois réorganiser à nouveau l'ordre de démarrage car l' ubuntuentrée sera poussée à la première place dans l'ordre de démarrage.

C'est ce que efibootmgr -vmontre ma configuration:

~ $ efibootmgr -v
BootCurrent: 0001
Délai d'expiration: 0 seconde
BootOrder: 0001,0002,0004,0000,0003,0005
Boot0000 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ ubuntu \ shimx64.efi)
Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / File (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Fichier (EFI \ Ubuntu \ grubx64.efi)
mook765
la source
Cela ne fonctionnait toujours pas pour moi. Je change par défaut dans / etc / default / grub en distribution like GRUB_DISTRIBUTOR="Bionic_18_04"et réinstalle grub l'utilise comme ID par défaut UEFI. Mais à chaque fois, il utilise uniquement /EFI/ubuntu/grub.cfg comme emplacement par défaut pour démarrer à partir de mon nouveau /EFI/bionic_18_04/grub.cfg.
oldfred
@oldfred Pour moi, cela fonctionne bien pendant plusieurs années en exécutant une triple botte.
mook765
J'ai essayé votre commande, plutôt que de la renommer dans / etc / default / grub. Aucune différence. UEFI est défini sur la nouvelle entrée de démarrage par défaut. Mais il a démarré en utilisant mon / efi / ubuntu avec Disco comme démarrage par défaut, plutôt que grub dans le nouveau dossier / EFI / ubuntu1804. Je pense que ce n'est pas le UEFI qui fait la différence.
oldfred
@oldfred S'il vous plaît jetez un oeil à la sortie efibootmgr -vdont j'ai ajouté à ma réponse. Ça marche. Des modifications supplémentaires peuvent vous empêcher de le faire. Ce que j'ai décrit est la seule chose que je fais pour le faire fonctionner.
mook765
J'ai vérifié efibootmgr -v et il a été défini pour une nouvelle entrée, mais j'ai démarré le grub dans / EFI / ubuntu. Le mien démarre /EFI/ubuntu1804/shimx64.efi. Utilisez-vous un grubx64.efi ou shimx64.efi, c'est peut-être une différence? J'ai le démarrage sécurisé désactivé, mais il a été défini par défaut comme shim comme première entrée ubuntu1804. À un moment donné, je me suis retrouvé avec tellement d'entrées UEFI ou de dossiers dans / EFI que j'ai eu des problèmes de démarrage et j'ai dû utiliser rEFInd sur un autre lecteur pour démarrer. Donc je n'aime pas trop avoir dans le dossier / EFI ou des entrées dans UEFI.
oldfred