外部USBドライブのLinuxが他のコンピュータから起動しない

外部USBドライブのLinuxが他のコンピュータから起動しない

ストレージに使用するNTFSパーティションの横にある外付けハードドライブにGNU / Linux(現在はFedora 26、以前はLinux Mint 18.2 Sonya)がインストールされており、インストールに使用するコンピュータで完全に機能します。ただし、ハードドライブの設定が異なる別のコンピュータから起動しようとすると、OSパーティションが見つからず、エラーメッセージでGRUB Rescueにダンプしますerror: unknown filesystem

hdX,msdosY私はGRUBが変数を設定するときに私のsのsがそれを使うので(そしてXラベルYに対応する整数であるsXY文字sda1X整数Y)のような整数を使ってパーティションを検索するからだと思います。これがMBRの内容がある場所であると仮定します。から来る。私のものは含まれていません。menuentrygrub.cfgrootgrub.cfg/etc/default/grubGRUB_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で使用してください。

おすすめ記事