web-dev-qa-db-fra.com

Impossible de faire démarrer Ubuntu à partir du groupe LUKS / LVM sur un lecteur externe sur iMac avec refind

J'ai un iMac 2017 et j'essaie d'installer Ubuntu sur un lecteur USB3 externe. Le lecteur externe a une table de partition GPT (pas de MBR hybride) et est partitionné comme suit:

/dev/sda1: EFI partition
/dev/sda2: Windows-To-Go partition
/dev/sda3: ext4 Linux boot partition
/dev/sda4: LUKS / LVM partition
/dev/sda5: extra partition, not currently being used

Le groupe LVM disponible une fois la partition LUKS déchiffrée contient une partition ext4 destinée à être la partition principale de mon système linux et une partition swap.

J'utilise refind sur mon mac pour faciliter le démarrage de ces différents systèmes d'exploitation.

Lorsque j’ai installé Ubuntu, je me suis assuré que toutes mes partitions étaient déjà déchiffrées et montées, j’ai choisi la configuration manuelle du disque dans le programme d’installation (car je ne voulais pas que tout mon disque externe soit détruit, y compris l’installation de Windows), Suivant:

  1. /boot comme point de montage pour /dev/sda3
  2. / en tant que point de montage de la partition principale ext4 de mon groupe LVM
  3. grub doit être installé sur /dev/sda3

Le programme d'installation s'est terminé sans erreur. Lorsque je redémarre, cependant, j'ai deux options pour démarrer cette installation Ubuntu, et aucune d’elles ne fonctionne.

Je peux démarrer à partir d'un chargeur de démarrage Grub installé dans la partition EFI de mon disque dur interne. Notez que je ne voulais pas que Linux ou tout autre système d'exploitation ajoute son chargeur de démarrage à ce lecteur. Je veux juste qu'il reste un lecteur macOS normal avec l'ajout de refind. Néanmoins, si je démarre à l'aide de refind, il affiche le logo Ubuntu avant de me laisser tomber à l'invite (initramfs) sans aucun message d'erreur.

Si je sélectionne le chargeur de démarrage que j'ai spécifié doit être installé sur /dev/sda3, son chargement commence, échoue avec les erreurs suivantes:

mount: can't find /root in /etc/fstab
...
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /run on /root/run failed: No such file or directory
run-init: current directory on the same filesystem as the root: error 0
Target file system doesn't have requested /sbin/init
run-init: current directory on the same filesystem as the root: error 0
(repeats four more times)
No init found. Try passing init= bootarg.

... et me laisse ensuite tomber à l'invite (initramfs).

Je n'ai aucune idée de comment résoudre ce problème! J'ai essayé d'utiliser Boot-Repair mais cela ne faisait aucune différence. Aidez-moi!

2
GuyGizmo

J'ai enfin réussi à le faire fonctionner! Merci en grande partie à cette réponse pour une autre question relative au cryptage . Je n'ai pas fini par chiffrer ma partition de démarrage car je ne pensais pas que c'était nécessaire, mais j'ai fait quelques choses clés différentes de celles mentionnées ci-dessus. Il semble que le problème majeur était que l'installateur Ubuntu ne parvenait pas à comprendre exactement comment mes partitions étaient configurées. Il était donc nécessaire d'insérer chroot dans la nouvelle installation de Linux, d'apporter des modifications indiquant ce qui se passait, puis de réinstaller grub. Voici ce que j'ai fait:

  1. J'ai formaté/dev/sda3 en tant qu'ext2. (Je ne sais pas si c'était important.)
  2. Lors de l’installation, j’ai précisé que le chargeur de démarrage devait être installé sur /dev/sda pas /dev/sda3
  3. J'ai spécifié /dev/sda1 en tant que partition de démarrage EFI
  4. Une fois l'installation terminée, je lui ai dit de ne pas redémarrer et j'ai procédé comme suit dans un terminal:

    Sudo mount /dev/mapper/my_linux_lvm_partition /target Sudo mount /dev/sda3 /target/boot Sudo mount /dev/sda1 /target/boot/efi Sudo mount --bind /dev /target/dev Sudo mount --bind /proc /target/proc Sudo mount --bind /sys /target/sys Sudo chroot /target

  5. Maintenant que j'ai chroot 'ed dans mon installation, j'ai édité /etc/default/grub et ajouté la ligne suivante: GRUB_ENABLE_CRYPTODISK=y

  6. J'ai obtenu l'UUID de mes différentes partitions en utilisant blkid

  7. Ajout d'une ligne à /etc/crypttab: my_luks_partition_name UUID=<UUID of /dev/sda4> none luks,discard

  8. Sudo grub-install --target=x86_64-efi --efi-directory /boot/efi --bootloader=ubuntu --boot-directory=/boot/efi/EFI/ubuntu --recheck

  9. Sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg

  10. Sudo update-initramfs -c -k all

J'ai remarqué qu'il était important de corriger le nom de la partition LUKS, sinon il y aurait des erreurs lors de l'exécution de update-initramfs.

Cela m'a pris deux jours entiers de frustration à tirer les cheveux pour comprendre. J'espère seulement que cette information aidera quelqu'un d'autre à le faire aussi sans presque autant d'agonie.

1
GuyGizmo