私のルートパーティションが開いていて、/dev/sda1
ルートパーティションを 。 UUIDで/dev/sda2
アイテムを更新しました。/etc/fstab
/dev/sda2
しかし、わかりません。 grubは、ルートパーティションが新しいUUIDに変更されたことをどうやって知ることができますか/dev/sda2
?それ以外に、/etc/fstab
grubがルートパーティションを見つけてシステムを起動できるように、他の部分を変更する必要がありますか?
何かを学びたいので、簡単なコマンドupdate-grub以上のステップも知りたいです。
他の場所で何かを変更する必要がありますか?
私はただLinuxを書いています。
答え1
grub2を使用すると仮定すると、最も重要な設定ファイルはgrub.cfg
(通常は/boot/grub
BIOSベースのシステムと/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
。)gpt2
hd0
構成によっては、ファイルシステムの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。