web-dev-qa-db-ja.com

refindを使用して、iMacの外部ドライブのLUKS / LVMグループからUbuntuを起動できない

私は2017 iMacを持っていますが、外部USB3ドライブにUbuntuをインストールしようとしています。外付けドライブにはGPTパーティションテーブル(ハイブリッドMBRなし)があり、次のようにパーティション化されています。

/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

LUKSパーティションが復号化されると利用できるLVMグループには、Linuxシステムのメインパーティションとなるext4パーティションとスワップパーティションが含まれます。

これらの異なるオペレーティングシステムの起動を容易にするために、Macでrefindを使用しています。

Ubuntuをインストールしたとき、すべてのパーティションがすでに復号化されてマウントされていることを確認し、インストーラーで手動ディスクセットアップを選択しました(Windowsインストールを含む外部ディスク全体を吹き飛ばしたくないので)、手動で指定しました以下:

  1. /bootのマウントポイントとしての/dev/sda3
  2. /はLVMグループのメインext4パーティションのマウントポイントとして
  3. grubは/dev/sda3にインストールする必要があります

インストーラーはエラーなしで終了しました。ただし、再起動すると、このUbuntuインストールを起動する方法について2つのオプションがあり、どちらも機能しません。

内蔵ハードドライブのEFIパーティションにインストールされたgrubブートローダーから起動できます。 not Linuxまたは他のオペレーティングシステムがブートローダーをこのドライブに追加するようにしたことに注意してください。 refindを追加して、通常のmacOSドライブのままにしておきたいだけです。それにもかかわらず、refindを使用して起動すると、(initramfs)プロンプトにエラーメッセージなしでドロップする前にUbuntuロゴが表示されます。

/dev/sda3にインストールする必要があると指定したブートローダーを選択すると、ロードが開始され、次のエラーで失敗します。

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.

...そして(initramfs)プロンプトが表示されます。

これを修正する方法がわかりません! Boot-Repairを使用してみましたが、まったく違いはありませんでした。助けて!

2
GuyGizmo

ようやく機能しました!主に 別の暗号化関連の質問に対するこの回答 に感謝します。ブートパーティションを暗号化する必要はないと思っていたので、最終的には暗号化しませんでしたが、上記とは異なるいくつかの重要なことがありました。大きな問題は、Ubuntuインストーラーがパーティションの設定方法を正確に把握できなかったため、新しい[/ projects/freshmeat_linux/linux]インストールにchrootを実行し、何が起こっているかを示す変更を加えてから、 GRUBを再インストールします。私がやったことは次のとおりです。

  1. / dev/sda3をext2としてフォーマットしました。 (それが重要だったかどうかはわかりません。)
  2. インストール時に、ブートローダーを/dev/sdaではなく/dev/sda3にインストールするように指定しました
  3. EFIブートパーティションとして/dev/sda1を指定しました
  4. インストールが正常に終了した後、再起動しないように指示し、ターミナルで次の操作を行いました。

    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. インストールにchroot 'したので、/etc/default/grubを編集し、次の行を追加しました:GRUB_ENABLE_CRYPTODISK=y

  6. blkidを使用して、さまざまなパーティションのUUIDを取得しました

  7. /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

LUKSパーティションの名前を正しく取得することが重要であることに気付きました。そうしないと、update-initramfsの実行時にエラーが発生します。

これは私が理解するために欲求不満を引っ張って2日間丸ごとかかった。この情報が、他の誰かがあまり苦労せずにそれを行うのに役立つことを願っています。

1
GuyGizmo