
問題は、Windows 11 を追加するために Ubuntu 22.04 LTS ドライブをパーティション分割したときに発生しました (ドライブのパーティション分割には Ubuntu ブータブルを使用しました)。
Windows 11 がインストールされると、コンピューターは grub メニューを表示する代わりに Windows 11 を起動し始めました。BIOS に入り、Ubuntu を一番上に移動することでこの問題を修正しました。コンピューターは Ubuntu を起動するようになりましたが、grub メニューはまだ表示されませんでした。
この投稿を見た後、コンピュータを起動したときに Grub メニューが表示されないのはなぜですか?、GRUB メニューを再び表示できるようになりました (@Akalgnotum)。ただし、Windows 11 はメニューに含まれていませんでした。
この投稿を参考にして、GRUBはWindowsを検出しませんを実行したところ、 が
sudo os-prober
返されました/dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi
。次に を実行すると、sudo update-grub
次の「警告」が表示されました。
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-46-generic
Found initrd image: /boot/initrd.img-5.15.0-46-generic
Found linux image: /boot/vmlinuz-5.15.0-43-generic
Found initrd image: /boot/initrd.img-5.15.0-43-generic
Memtest86+ needs a 16-bit boot, that is not available on EFI, exiting
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
sudo update-grub
私の理解では、Windowsは実行されず、os-prober によって提供される情報を使用しないため、追加されません。
これを修正する方法がわかりません。 何かご提案があれば大変助かります。 さらに情報が必要な場合は、喜んで提供させていただきます。
ありがとう!
答え1
何日もインターネットを検索した後、答えを見つけました!
すべての功績はこの投稿によるものです:https://askubuntu.com/a/977251/1191399繰り返しになりますが。
sudo fdisk -l
次のような内容を含む長い戻り値が返されるはずです。
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 874729471 873678848 416.6G Linux filesystem
/dev/nvme0n1p3 874729472 874762239 32768 16M Microsoft reserved
/dev/nvme0n1p4 874762240 1000214527 125452288 59.8G Microsoft basic data
- UUIDを取得するEFI パーティション
sudo blkid /dev/nvme0n1p1
(nvme0n1p1 を適切なパーティションに置き換えてください)
戻る:
dev/nvme0n1p1: UUID="3C26-6A4C" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3b64b43f-e7eb-4ac8-a32c-9af2edf64d0d"
/etc/grub.d の '40_custom' ファイルへの書き込み権限を自分に付与します。
ターミナル (ctrl+alt+t) を開き、次のコマンドを実行します。
cd /etc/grub.d
sudo chmod o+w 40_custom
40_customファイルを開く
open ./40_custom
ファイルの下部に次の内容を記述し、3C26-6A4C を正しい UUID に置き換えます。
menuentry 'Windows 11' {
search --fs-uuid --no-floppy --set=root 3C26-6A4C
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
ファイルを保存してエディターを閉じます。
ターミナルに戻り、書き込み権限を削除します。
sudo chmod o-w 40_custom
GRUBを更新するには
sudo update-grub
(オプション) /boot/grub/grub.cfg にアクセスし、243-251 行目をチェックすることで、変更が成功したことを確認できます。40_custom ファイルの編集が反映されているはずです。
コンピュータを再起動します
reboot
答え2
Grub 2.06 は /etc/default/grub 内の os-prober をオフにします。
https://www.phoronix.com/news/Ubuntu-22.04-マルチブート変更
他のシステムを探すためにすべてのパーティションをスキャンすると、何らかのセキュリティ上の問題が発生します。/etc/default/grub でオン/オフを切り替えることができます。
一度だけ実行し、Windows ブート スタンザを 40_custom にコピーするのが最善です。また、特にスキャンするパーティションが多数ある場合は、今後のすべての更新が高速化されます。
sudoedit /etc/default/grub
必要に応じて true/false に変更します。true が推奨されます。
GRUB_DISABLE_OS_PROBER=true
ブート スタンザを 40_custom に簡単にコピーできます。
説明を修正する 1 つの方法は、Windows エントリを 40_custom に移動し、自由に編集することです。
次のエントリをコピーします:
sudo cp -a /boot/grub/grub.cfg /boot/grub/grub.cfg.backup
sudoedit /boot/grub/grub.cfg
それらをコピーして編集し、必要なエントリのみにします。
sudoedit /etc/grub.d/40_custom
grub または grub のスクリプトに変更を加えた後は、grub メニューを更新する必要があります。
sudo update-grub
Windows 10 と Ubuntu 14.04 の Grub メニュー
os-prober によって一般化された一般的な UEFI Windows ブート スタンザ。各 ESP には固有の UUID と partUUID があります。ブート スタンザの UUID は ESP の UUID です。
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-F8FD-D8E5' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root F8FD-D8E5
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
上記のスタンザを使用する場合は、UUID に更新する必要があり、os-prober の使用に関するコメントは必要ありません。ESP の UUID を確認します。
lsblk -f
注: Grub は動作中の Windows のみを起動します。また、UEFI セキュア ブートはオフにする必要があります。Windows は、更新プログラムを適用すると、Windows の高速スタートアップを再びオンにすることがよくあります。そのため、UEFI ワンタイム ブート キー (通常は f12 ですが、ベンダーによって異なります) を使用して Windows を直接起動する必要があります。
答え3
1. ディスクとパーティションの一覧
lsblk
2. Windows パーティションを含むディスクを特定します。
sudo cfdisk /dev/sd<YOUR DISK LETTER (NO NUMBER)>
- 垂直矢印キーを使用してデバイスを切り替えます。
- EFI パーティションは、「EFI システム」としてタイプされたデバイスになります。
- EFI デバイスの「ファイルシステム UUID」をコピーします。(XXXX-XXXX)
[ Quit ]
キーボードの矢印キーを使用して選択します。cfdisk を終了するには Enter キーを押します。
3. 開く /etc/grub.d/40_custom
お気に入りのエディタ(nano
、、vim
)code
で
sudo nano /etc/grub.d/40_custom
4. コメントの下にメニューエントリを追加します。
menuentry 'Windows 11' {
search --fs-uuid --no-floppy --set=root <YOUR "File system UUID">
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
5. grub 設定を更新します。
sudo grub-mkconfig -o /boot/grub/grub.cfg
終了sudo reboot
答え4
少なくとも私の場合はこれで解決しました。os-proberが無効になっていました。私はUbuntu 22.04を使用しています。
sudo nano /etc/default/grub
セットGRUB_DISABLE_OS_PROBER=false
そして実行する
sudo update-grub