GRUBブートローダーの問題を解決するためのヘルプとヒントをいただければ幸いです。ルートLUKS暗号化のシステムがあります。ブートローダーのパーティションを除いて、システム全体が暗号化されたLUKSになっていることを意味しますコンテナ。考えられる問題がどこにあるのかわからないので、もう少し詳しく説明します。
システムの更新後、GRUBはGRUBシェル(レスキューモードではない)でハングします。
ただし、手動で開始することはできます。
insmod cryptodisk
insmod luks
insmod lvm
insmod ext2
cryptomount -a
set root=(lvm/system-root)
linux (lvm/system-boot)/vmlinuz-[...]-generic root=/dev/system/root
initrd (lvm/system-boot)/initrd.img-[...]-generic
私のシステムでlsblkを実行すると、次のようになります。
nvme0n1 259:0 0 953,9G 0 disk
├─nvme0n1p1 259:1 0 450M 0 part
├─nvme0n1p2 259:2 0 100M 0 part /boot/efi
├─nvme0n1p3 259:3 0 16M 0 part
├─nvme0n1p4 259:4 0 97,9G 0 part
└─nvme0n1p5 259:5 0 839,4G 0 part
└─system 253:0 0 839,4G 0 crypt
├─system-boot 253:1 0 512M 0 lvm /boot
├─system-swap 253:2 0 16,1G 0 lvm [SWAP]
└─system-root 253:3 0 822,8G 0 lvm /
p1、p3、p4はインストールされたWindows 10に属します。p2はfat32 EFIシステムパーティションです。p5はブート、スワップ、ルートパーティションを備えたluks暗号化システムです。
Grubは/boot/efi/grub/grub.cfgのp2パーティションに設定ファイルを見つけられないと思いました。
ただし、この場合、構成ファイルの手動実行は成功するはずです。そのため、起動時にgrubシェルで実行しました(オートコンプリートを使用したため、パスは正しいはずです)。
configfile (hd0,gpt2)/grub/grub.cfg
しかし、私は(エラーなしで)クリアされたgrubシェルを取得します。
Grubがgrub.cfgを見つけられないと思ったのは、EFIフォルダー(corecctlyを理解したときに最初にロードされる)のgrub構成ファイルの内容が原因です:/boot/efi/EFI/ubuntu/grub.cfg:
search.fs_uuid db041d94-37fa-42a6-b2f3-87572a38f23c root lvmid/uWUnvj-b70J-Gfam-Tfr3-87I3-GQAP-bL2Lym/gEpImK-yuWK-W6Ip-v5KF-ZGKm-8GZS-ALhXxF
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
ここで、検索するUUID(最後のリスト)は、暗号化されたブートパーティションの1つです。これは奇妙に思えます:パスワードを入力するまで、grubに表示されるべきではありませんか?.
しかし、設定ファイルを手動でロードするコマンドが機能しなかったので、これは私の問題の問題ではないと思います。
したがって、それは私の構成ファイルである可能性があります。このファイルがどれほど正しいかを判断できないため、ファイルの内容を要約します。
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX="cryptdevice=UUID=8d82f654-43fd-40ba-a185-1ead48838f54:system root=/dev/system/system-root resume=/dev/system/system-swap ro"
GRUB_PRELOAD_MODULES="luks cryptodisk lvm ext2"
私にはこれはそれほど悪くは見えません。 cryptdeviceのUUIDは正常に見えます。 「/ dev/system/system-root」を「/ dev/system/system」に変更してみました。これはシステムの実行中のパスですが、効果はありません。また、update-grupとgrub-installを実行しました。
さらに、grub-emu(grubブートローダー用のエミュレーター)をインストールしました。これは私に少なくともガーブメニューを見せてくれました。 ubuntuを開始するエントリを選択すると、少なくともいくつかのエラーが発生します。
error: no such cryptodisk found.
error: no such device: db041d94-37fa-42a6-b2f3-87572a38f23c.
error: can't find command `linux'.
error: can't find command `initrd'.
どうもありがとう、Ecco
/boot/efi/grub/grub.cfgの内容は、 https://Pastebin.com/D1X7jPsS にあります。
最後にそれは(再び)動作します:cmd refreshgrubトリックを行いましたこのコマンドはファイル/boot/efi/EFI/ubuntu/grub.cfgの内容を次のように変更しました:
search.fs_uuid 2885-45AC root
set prefix=($root)'/EFI/ubuntu/grub'
configfile $prefix/grub.cfg
これは以前よりも理にかなっています。暗号化されていないパーティションを検索します。しかし、今では大きなgrub.cfgファイルが別のフォルダーに保存されています。これで問題ありません。
メニューが表示されていましたが、起動に失敗しました。/etc/default/grub.cfgで次の行を変更する必要がありました。
GRUB_CMDLINE_LINUX="cryptdevice=UUID=8d82f654-43fd-40ba-a185-1ead48838f54:system root=/dev/system/root resume=/dev/system/swap ro"