web-dev-qa-db-ja.com

GRUBルートLUKS暗号化を使用したブートローダー:grubシェルのみ

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はgrub.cfgをロードできませんか?

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に表示されるべきではありませんか?.

しかし、設定ファイルを手動でロードするコマンドが機能しなかったので、これは私の問題の問題ではないと思います。

/ etc/default/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'.

何が私を助けますか

  • もちろん、私に問題を指摘し、修正を教えてください。私は今それに対処しなければならないので、grubを使ったブートプロセスに興味があります:
  • /boot/efi/EFI/ubuntu/grub.cfgの内容がわかりません。
  • ここの($ root)の内容は何ですか?そして、なぜ暗号化されたパーティションを探しているのですか?
  • このファイルの内容はどこで決定されますか?
  • システムの起動を妨げるエラーが発生した場合でも、少なくともgrubメニューが表示されないのはなぜですか?

どうもありがとう、Ecco

追加コンテンツ

/boot/efi/grub/grub.cfgの内容は、 https://Pastebin.com/D1X7jPsS にあります。

UUID(Windows固有のパーティションを省略しました)

  • / dev/nvme0n1p2:UUID = "2885-45AC" TYPE = "vfat" PARTLABEL = "EFIシステムパーティション" PARTUUID = "1043df12-d11d-4023-bf6a-6acc2919c06f"
  • / dev/nvme0n1p5:UUID = "8d82f654-43fd-40ba-a185-1ead48838f54" TYPE = "crypto_LUKS" PARTLABEL = "system" PARTUUID = "2457b24a-7695-4737-ae46-5687aca3ab01"

LUKSコンテナのUUID

  • / dev/mapper/system:UUID = "X7XHJG-pQ21-edgj-d73H-kK8Z-DxM8-eXBCh6" TYPE = "LVM2_member"
  • / dev/mapper/system-root:LABEL = "root" UUID = "07e1d1e4-cd00-42dd-96cf-4f99864d0b7f" TYPE = "ext4"
  • / dev/mapper/system-swap:UUID = "02664e3e-3ba7-4a03-8b03-eb0335ca40f9" TYPE = "swap"
  • / dev/mapper/system-boot:LABEL = "boot" UUID = "db041d94-37fa-42a6-b2f3-87572a38f23c" TYPE = "ext4"
1
EccoB

最後にそれは(再び)動作します: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"
1
EccoB