Debianシステム(SID)からの起動に一連の問題が発生しました。
/grub/i386-pc/normal.mod not found.
最終的に私はそれを再び得ました(fsckは/bootからLost + foundに多くの項目を移し、grub-installで置き換える必要がありました)
しかし、すべてが機能した後、さまざまなgrub-*パッケージを再インストールしました(今は紛失+発見状態の場合)。 grub.cfgで、次のような多くの違いを見つけました。
< set root='hd2,msdos1'
---
> set root='hd0,msdos1'
実際、私の/boot(および/(root))デバイスは/dev/sda(hd0)の代わりに/dev/sdc(hd2)です。一方では、どのように/なぜ変更されたのかわかりませんが、他方では/dev/sdX名が固定されておらず、あるブートから次のブートに変更される可能性があります。したがって、これらすべてを念頭に置いて、私の質問は次のとおりです。
grub.cfgに次のエントリが含まれる方法:
set root='hd2,msdos1'
(マッピングファイルなし)これは/ dev / sdcと同じですので、次回の起動時にディスクがsdbまたはsdaとして表示されるとどうなりますか?
ABTW。最初の原因は破損した/bootかもしれません。 ext2であることを確認しましたが、ext4を使用できませんか? ...これはデフォルトではありませんか? [抜け穴985470 ]
答え1
次のように見えます。
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1' f19c92f4-9ead-4207-b46a-723b7a2c51c8
else
search --no-floppy --fs-uuid --set=root f19c92f4-9ead-4207-b46a-723b7a2c51c8
fi
したがって、初期値は単なるオプションのヒントです。実際に行うことは、ファイルシステムのUUIDを検索することです。
答え2
これはgrub-probe
(https://www.gnu.org/software/grub/manual/grub/html_node/Invoking-grub_002dprobe.html)/dev/sda1
は名前をに変換します(hd0,msdos1)
。
ただし、変換が失敗した場合は、デバイスマッピングファイルを使用してヘルプを入手できます(https://www.gnu.org/software/grub/manual/grub/html_node/Device-map.html#Device-map)。
Grub 命名方式を入力してgrub-probe -t drive /
ドライブをインポートできます。/