MBRパーティションディスクの3つの異なるパーティションにトリプルブートシステム(Windows 10 Home 21H1 / Windows 7 Pro / Debian 11)がインストールされており、起動時に問題なく各システムをブートできます。ただし、GRUBメニューでは、「Windows 10」(最初のインストールのため)という単一のエントリからすべてのWindowsシステムにアクセスできます。Windowsブートマネージャ起動したいWindowsシステムを選択します。したがって、すべてのWindowsシステムは起動時に2つのメニューを表示します。これは実用的ではありません。
WBMを介さずにGRUBメニューからWBMのWindowsエントリに直接アクセスできるソリューションがあるかどうか自分に尋ねました。さまざまなソリューションを検索してテストしましたが、何も機能しませんでした。
私はこれが可能だと信じていますが、どうすればいいかわかりません...
私が試した最後の試み:
root@host:~# lsblk -lo NAME,FSTYPE,LABEL,UUID
NAME FSTYPE LABEL UUID
sda
sda1 ntfs W10H 7A42F6E942F6A8D1
sda2 ntfs W7P 0628B81B28B80C25
sda3 ext4 a696a4ab-3120-4028-bd87-c2aaa40499bd
...
root@host:~# cat /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
...
menuentry "Windows 7" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
set root='(hd0,msdos2)'
search --no-floppy --set=root --fs-uuid 0628B81B28B80C25
ntldr ($root)/bootmgr
chainloader +1
}
root@host:~# update-grub
このエントリを起動すると、次のようになります。
error : /bootmgr file not available
@telcoMが提案したように、SEのグローバルセクションで助けを見つけました。ついに@oldfredと@Tom Yanの助けを借りて問題を解決しました。そこそこに私の実装を詳しく説明します。
答え1
GRUBコマンドは現在、最初のHDDの2番目のパーティションで指定されたファイルをntldr
探していますが、そのファイルは存在しません。bootmgr
Windows 10とWindows 7はどちらも同じWindowsブートマネージャを使用できます。現在、システムでこれを行うように構成されており、ブートマネージャーは使用可能なオペレーティングシステムメニューを表示するように構成されています。最新のWindowsオペレーティングシステム用のインストーラは既存のWindowsブートマネージャを探し、存在する場合は別のインスタンスをインストールする代わりに、新しくインストールされたオペレーティングシステムを既存のブートマネージャメニューに追加します。
GRUBはオペレーティングシステムの選択情報をWindowsブートマネージャに渡すことができないため(つまり、WBMは他のブートローダからの入力をユーザーが直接入力することしかできません)、両方をインストールする必要があります。例: 1 つは次のように構成されます。 Windows 10を起動し、もう1つはWindows 7のみを起動するように構成されています。その後、GRUBメニューを使用して使用したいブートマネージャを選択し、Windowsのバージョンを選択できます。
Windowsブートマネージャの2番目のコピーをインストールすることは、Unix&Linux.SEの範囲外です。これについてのアドバイスが必要な場合は、尋ねることもできます。スーパーユーザーSE代わりに。