/sda/
私は、2つのディスク、ハードドライブ、および新しいソリッドステートドライブでDebian 9 2個、Debian 11 1個、Windows 10 1個を実行する必要があるノートブックを持っています/nvme0n1/
。
私はgpartedを使って/sda1/
Debian 9をSDDに複製して拡張しました/nvme0n1p5/
。
/nvme0n1p5/
GRUB2(4つのオペレーティングシステムをすべて認識)を使用してDebian 9()を起動すると、常に/sda1/
レガシー起動モードでソースパーティションが起動します。 Debian 11は起動時にインストールされ/sda5/
ます/nvme0n1p1/
。
最新のSSDは/nvme0n1/
パーティショニングにGPTを使用しますが、HDDはまだMBRを使用します。
ソースパーティションを複製した後、grub2をgrub-efi-amd64として再インストールし、それに合わせてgrub-pcを削除する必要がありました。UEFIデュアルブート/マルチブートここで提案されているように。
マシンからソースパーティションを持つHDDを削除し、GRUBがどのように反応するかを確認しませんでしたが、必要はありません。
編集1
新しいUUIDを提供し、GRUBを更新しようとしましたが、/nvme0n1p5/
問題は解決されませんでした。
その後、ハードドライブを取り外し、何が起こるかを確認しました。結果を第4図に示す。 Windows Open が/nvme0n1p1/
表示されなくなりました。/sda1/
またはで起動できません/nvme0n1p5/
。最初のものが予想されます。 2番目はそうではありません。
答え1
UnixとLinux StackExchangeへようこそ!
私はDebian 9ブートオプションがあなたが説明したように動作するいくつかの考えられる理由を考えることができます。
Debian 11 GRUBの写真には、GRUBのUEFIバージョンが正常に起動したことを示す「システム設定」ブートオプションがあると表示されます。また、WindowsはGPTフォーマットディスクから正しく起動できますが、これはUEFIモードでのみ発生する可能性があると述べました。
GRUBが独自にUEFIからレガシーモードに切り替えることはできないと思います。したがって、「常にレガシー起動モードを使用してDebian 9を起動しますsda1
」という症状は、UEFIバージョンのGRUBがDebian 9カーネルを起動しようとしたときに失敗したことを意味します。システムファームウェアは、実行する操作を1つのステップとして決定します。試すことができる他の有効なUEFIブートオプションがない場合は、従来のブートオプションを試し始め、最終的に起動可能なMBRを見つけ、sda
GRUBのBIOSバージョンを起動し、最終的にはDebian 9を起動しますsda1
。
Debian 9インストールを複製するときにnvme0n1p5
ファイルシステムのUUIDを変更しましたか?同じUUIDを持つ2つのファイルシステムがあり、ファームウェアがUEFIモードのNVMeからのみ起動できる場合、これはDebian 9のUEFIモードの起動に失敗しますが、レガシーモードが機能する理由を説明できます。 UEFIモードのブートローダは両方を見ることができます。 Debian 9のルートファイルシステムに期待されているのと同じUUIDであり、レガシーモードのブートローダでのみ表示されますsda1
。
Linuxカーネルが起動すると、起動モードに関係なく独自にNVMeドライブをサポートするため、誤ってレガシー起動モードにある以外は異常な症状が発生しません。
もう1つの可能性は、Debian 9が32ビット版でインストールされていることです。レガシーモードの起動16ビットモード(!)で起動し、レガシーモードの起動でカーネルの最初の操作の1つは、互換性機能を無効にしてプロセッサの32ビットおよび64ビット機能を表示することです。ただし、UEFIはデフォルトの64ビットモードで起動し、32ビットカーネルの起動を許可するかどうかはわかりません。 32ビットUEFIが64ビットカーネルを起動できることを知っていますが、その逆がサポートされているかどうかはわかりません。 32ビットカーネルのロード試行がUEFI GRUBの起動に失敗した場合、ファームウェアはレガシーモードの起動を試みて最終的にsda1
。
Debianは、セキュアブートを有効にした場合、Debian 10以降でのみセキュアブート互換性を実装します。 (もちろん、セキュアブートを有効にしたと主張してから、UEFIブートが失敗した場合、スムーズにレガシーBIOSブートに戻ることはそれほど安全ではありません...)
したがって、Debian 9 の UEFI ブートが失敗する理由に関する追加情報が必要です。最初にできることは、スプラッシュ画面を一時的に無効にし、詳細な起動メッセージを有効にすることです。 GRUBブートメニューのハイライトを「Debian 9 on nvme0n1p5」ブートオプションに移動し、(非永続)キーブートEエントリを編集します。多くの行が表示されます。次の単語で始まる行を見つけます。
linux /boot/vmlinuz-<kernel version number here> <kernel boot options...>
カーネル起動オプションにquiet
/または単語が含まれている場合はsplash
削除します。安全のためにverbose
andという単語を書くこともできますnosplash
。これでLinuxカーネルが出力されます。たくさん開始に関する詳細。一時的に変更された起動オプションで始めるには、F10またはControl+を押しますX。
まだ一般的なDebian 9ブートスプラッシュ画面が表示され、システムがレガシーモードで終了すると、これは画面が表示モードを切り替えるよりもレガシーモードでのエラーと再起動がより速くなることを意味します。これは、次の場合、GRUBの起動中に問題が発生することを意味します。カーネルを起動しようとしています。
Debian 9と入力してログインし、コマンドプロンプトを開き、と入力しますuname -m
。応答にx86_64
、またはi386
orと同様の内容が表示されますかi686
? 1つ目は、オペレーティングシステムに64ビットカーネルがあることを意味し、残りはすべて32ビットバージョンを意味します。
答え2
最後に、問題がUUIDの問題であることを見つけました/etc/fstab
。複製されたパーティションのLinuxは、/nvme0n1p5/
UUID用のファイルシステムをロードします/sda1/
。
/etc/fstab
ファイル内の元のパーティションの古いUUIDをターゲットパーティションの新しいUUIDに置き換える必要がありました。
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=002ae0f2-b6df-4502-8a0c-b9db279142b1 / ext4 errors=remount-ro 0 1
到着
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=248b6fec-3f9a-4e48-838f-cdea88cfe933 / ext4 errors=remount-ro 0 1
パッチ処理中に様々な方法でグラブを何度も更新しました。私は2番目の部分が元の質問の一部だとは思わないが、私が作成した2番目の質問に対する修正です。もし備えてこれを含んでいます。 grubメニュー項目はファイルシステム検索のための無効なパーティションを指していましたが、Linuxカーネル検索のための正しい項目を指していました。
submenu "Advanced options for Debian GNU/Linux 9 (stretch) (on /dev/nvme0n1p5)"{
menuentry "Debian GNU/Linux (on /dev/nvme0n1p5)" --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.9.0-13-amd64--248b6fec-3f9a-4e48-838f-cdea88cfe933' {
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 002ae0f2-b6df-4502-8a0c-b9db279142b1
else
search --no-floppy --fs-uuid --set=root 002ae0f2-b6df-4502-8a0c-b9db279142b1
fi
linux /boot/vmlinuz-4.9.0-13-amd64 root=UUID=248b6fec-3f9a-4e48-838f-cdea88cfe933 ro efi=runtime quiet
initrd /boot/initrd.img-4.9.0-13-amd64
}
到着する:
submenu "Advanced options for Debian GNU/Linux 9 (stretch) (on /dev/nvme0n1p5)"{
menuentry "Debian GNU/Linux (on /dev/nvme0n1p5)" --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.9.0-13-amd64--248b6fec-3f9a-4e48-838f-cdea88cfe933' {
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 248b6fec-3f9a-4e48-838f-cdea88cfe933
else
search --no-floppy --fs-uuid --set=root 248b6fec-3f9a-4e48-838f-cdea88cfe933
fi
linux /boot/vmlinuz-4.9.0-13-amd64 root=UUID=248b6fec-3f9a-4e48-838f-cdea88cfe933 ro efi=runtime quiet
initrd /boot/initrd.img-4.9.0-13-amd64
}
grub-customizer
これはDebian 10以降で提供されているGUIを介して行うことができます。それ以外の場合は、EFIシステムパーティションをマウントしてオンにします/grub/grub.cfg
。また、高度な起動オプションも変更する必要があります。/grub/grub.cfg
問題が発生した場合に備えて、元のファイルをバックアップしてください。
を使用して自分の正しいUUIDを見つけますsudo blkid
。正しいUUIDは、ブートするパーティションのUUIDです。