ルートを新しいハードドライブパーティションに変更すると、グラブがハングします。

ルートを新しいハードドライブパーティションに変更すると、グラブがハングします。

私のルートパーティションが開いていて、/dev/sda1ルートパーティションを 。 UUIDで/dev/sda2アイテムを更新しました。/etc/fstab/dev/sda2

しかし、わかりません。 grubは、ルートパーティションが新しいUUIDに変更されたことをどうやって知ることができますか/dev/sda2?それ以外に、/etc/fstabgrubがルートパーティションを見つけてシステムを起動できるように、他の部分を変更する必要がありますか?

何かを学びたいので、簡単なコマンドupdate-grub以上のステップも知りたいです。

他の場所で何かを変更する必要がありますか?

私はただLinuxを書いています。

ベストアンサー1

grub2を使用すると仮定すると、最も重要な設定ファイルはgrub.cfg(通常は/boot/grubBIOSベースのシステムと/boot/efi/EFI/<os name>/efiシステムのディレクトリにあります)。コンピュータが起動すると、grubはこのファイルの指示に従います。これはテキストファイルなので、手動で編集するか、一部の自動化ツール(シェルスクリプト)grub-mkconfig(別名grub2-mkconfig)を使用して、ファイルとディレクトリ/etc/default/grubで定義され/etc/grub.d/ている規則に基づいて構成を作成できます。

それにもかかわらず、ルートパーティションを変更した場合には、注意すべき点がいくつかあります。まず、Linuxカーネルパラメータ:grubはルートパーティションの直接的な影響を受けませんが、カーネルへの正しいパスを渡す必要があるため、次の行を見つけます。

linux /vmlinuz-4.19.5 root=/dev/sda1

に変更します/dev/sda2

UUIDを介して渡すこともできます。

linux /vmlinuz-4.19.5 root=UUID=abcdefgh-ijkl-mnop-qrst-uvwxyz

grubのコマンドを使用してルートUUIDをテストできます。

grub-probe --target=fs_uuid /

2番目に確認/変更する必要があるのは、カーネルファイル自体です。これは別々のパーティション(通常は/boot)またはルートパーティション(/)にあります。後者の場合は、行を検索する必要があります。

set root='hd0,gpt1'

(ここではディスクが1つしかなく、現在標準のGUIDパーティションテーブルを使用しているとしますgpt1。)gpt2hd0

構成によっては、ファイルシステムのUUIDとプロンプト文字列を変更してカーネルへの正しいパスを見つける必要があります。それは次のように見えるかもしれません

search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt1' --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  abcd-efgh
search --no-floppy --fs-uuid --set=root abcd-efgh

grub-probe --target=hints_string /プロンプト文字列の正しい値を見つけるために既に知っている新しいUUID。

おすすめ記事