ストレージに使用するNTFSパーティションの横にある外付けハードドライブにGNU / Linux(現在はFedora 26、以前はLinux Mint 18.2 Sonya)がインストールされており、インストールに使用するコンピュータで完全に機能します。ただし、ハードドライブの設定が異なる別のコンピュータから起動しようとすると、OSパーティションが見つからず、エラーメッセージでGRUB Rescueにダンプしますerror: unknown filesystem
。
hdX,msdosY
私はGRUBが変数を設定するときに私のsのsがそれを使うので(そしてX
ラベルY
に対応する整数であるsXY
文字sda1
とX
整数Y
)のような整数を使ってパーティションを検索するからだと思います。これがMBRの内容がある場所であると仮定します。から来る。私のものは含まれていません。menuentry
grub.cfg
root
grub.cfg
/etc/default/grub
GRUB_DISABLE_LINUX_UUID=true
私の質問に対する解決策UUIDを使用してGRUBからパーティションを検索することはできますか?では、どうすればよいですか?
編集:これはmenuentry
私のFedoraブートの完全な内容ですgrub.cfg
。
menuentry 'Fedora (4.11.8-300.fc26.x86_64) 26 (Twenty Six)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.8-300.fc26.x86_64-advanced-c1bcc95a-66a8-4bd3-ae64-42be8d83137e' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd1,msdos2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd3,msdos2 --hint-efi=hd3,msdos2 --hint-baremetal=ahci3,msdos2 --hint='hd1,msdos2' 3483e8e8-38ab-4b47-aec4-1cb475c285d8
else
search --no-floppy --fs-uuid --set=root 3483e8e8-38ab-4b47-aec4-1cb475c285d8
fi
linux16 /vmlinuz-4.11.8-300.fc26.x86_64 root=UUID=c1bcc95a-66a8-4bd3-ae64-42be8d83137e ro rhgb quiet LANG=en_GB.UTF-8
initrd16 /initramfs-4.11.8-300.fc26.x86_64.img
}
grub.cfg
また、GRUBが更新されると変更が上書きされるため、手動編集を必要としないソリューションを好みます。
編集2:GPTとFedora 26ですべての作業を行った後、元々選択したディストリビューションであるLinux Mintに戻すことにしました。しかし、これがうまくいかないことがわかりました。さまざまなディストリビューション(Debian、Ubuntu、CentOS、openSUSE)でテストした後。すべてのRPMベースのディストリビューションは有効ですが、Debainベースのディストリビューションは無効です。 openSUSEは、SecureBootサポートを有効/無効にするオプションを提供し、無効になってインストールしたときにDebianベースのディストリビューションと同じ結果を得ました。
テストした2台以上のシステムでSecureBootが明示的に無効になっていることを確認できますが、SecureBootのサポートがないとDebainベースのディストリビューションまたはopenSUSEを起動できないため、これは私には意味がありません。
(明確に言えば、GPTを使用するようにハードドライブを変更するまで、RPMの展開も起動に失敗しました。)
答え1
エラー:不明なファイルシステムです。
あるシステムでは動作しますが、別のシステムでは動作しません。つまり、 grub が uuid でパーティションを検索できない可能性があります。
GRUBがパーティションを検索するためにhd0、msdos5などのラベルを使用するためだと思います。 grub.cfgのメニュー項目がそれを使用するためです。 grub.cfg が MBR に入力されるソースであると仮定します。私の/etc/default/grubにGRUB_DISABLE_LINUX_UUID=trueが含まれていません。
これが私の第一印象を確証してくれた。ところで、hd0、msdos5はラベルではなく、古いディスク仕様です。 hd0は、いくつかの要因に応じて、システム内のすべてのドライブになることができます。さらに重要なのは、コンピュータを切り替える時です。
私は以下を持っています:
linux /boot/vmlinuz-3.16.0-4-amd64 root=UUID=<someUUID> ro quiet nomodeset
nomodeset
一部のマザーボードはLinux変更モードが好きではないため、これを使用します。
ルートパーティションにuuidがあることを確認し、上記のようにgrubで使用してください。
答え2
EFIパーティションに興味を持った@TomYanのおかげで、比較的簡単な解決策が明らかになりました。
まず、外部ハードウェアのすべてのデータをバックアップし、完全に再フォーマットし、以前のfdisk
MBRの代わりにGPTを使用しました。これが完了した後に残るのは、UEFIモードでディストリビューションを再インストールすることです。これで、今まで試したすべてのコンピュータで完全に起動します。
編集:これはRPMベースの展開を開始したときにのみ問題を解決します。