GRUB2は、Windows 10ではなくWindows 7またはWindowsリカバリー環境を表示します


8

これは私が最近気付いたQ&Aなので、以下に回答を掲載しました。

Windows 10をインストールした後、カーネルアップデートを取得するか実行するたびに、update-grub2常にWindows 7またはのWindows Recovery Environment代わりに表示されWindows 10ます。これを永久に修正するにはどうすればよいですか?


これらの変更は(my Mint 19.2)/ usr / lib / os-probes / mounted / 20microsoftにすでに存在しますが、それでも「Windows Vista」を返します。デュアルブートシステムがWindows 7の場合、それは正しい値を返したため、欠落している情報のソースであることがわかります。
cdg '18

@cdgこのサイトは公式のUbuntuフレーバー専用であるため、Linux&Unixで確認する必要があります。また、これらが正しく検出されていない可能性があるため、すでにこれらすべてを持っている場合は、ミント開発にバグレポートを提出する必要があります。
Terrance、

回答:


10

更新: Xubuntu 14.04のクリーンインストールを実行したところ、以下にリストされているファイルへのエントリはすでに存在しています。GRUBチームがアップデートを組み込んだようです。まだシステムのアップデートなしでこれに出くわす可能性がある人のために、これをここに残します。


アップデート#2: 少なくとも1GBの永続ファイルを含むUbuntu 14.04 LiveUSBを作成する場合、このファイルの場所は同じであり、永続ファイルにより、行われた変更を維持できます。このファイルは、システムをTry Ubuntu起動時にUSBドライブから起動した後でのみ変更する必要があります。


それがまだWindows 7またはWindows Recovery Environment代わりに表示される理由Windows 10は、ファイルに/usr/lib/os-probes/mounted/20microsoftのラベルが含まれていないWindows 10ためos-prober、OS の検出中に、Windows 7またはにフォールバックしWindows Recovery Environmentます。

これを修正するには、次のファイルを次のように変更する必要があります(私はgeditをエディターとして使用しますが、必要なものを使用します)。

sudo gedit /usr/lib/os-probes/mounted/20microsoft

注:ファイルを変更する前に、必ずバックアップを作成してください。

if item_in_dir -q bootmgr "$2"; then
        # there might be different boot directories in different case as:
        # boot Boot BOOT
        for boot in $(item_in_dir boot "$2"); do
                bcd=$(item_in_dir bcd "$2/$boot")
                if [ -n "$bcd" ]; then
                        if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; then
                                long="Windows 10 (loader)"
                        elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then
                                long="Windows 8 (loader)"
                        elif grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
                                long="Windows 7 (loader)"

上記の変更は、行を変更するif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenにはelif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then、加算if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; then及びlong="Windows 10 (loader)"そのライン上で、それを保存します。

保存すると、実行os-proberは次のようになります。

terrance@terrance-ubuntu:~$ sudo os-prober
[sudo] password for terrance: 
/dev/sdf1:Windows 10 (loader):Windows:chain

それを実行update-grub2すると/boot/grub/grub.cfg、カーネルの更新を取得するたびに更新が永続的になり、正しいバージョンのWindowsが表示されます(以下の例)。

terrance@terrance-ubuntu:~$ sudo update-grub2
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.19.0-26-generic
Found initrd image: /boot/initrd.img-3.19.0-26-generic
Found linux image: /boot/vmlinuz-3.13.0-58-generic
Found initrd image: /boot/initrd.img-3.13.0-58-generic
Found linux image: /boot/vmlinuz-3.13.0-57-generic
Found initrd image: /boot/initrd.img-3.13.0-57-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 10 (loader) on /dev/sdf1
done

お役に立てれば!


4
これは、Grub2メンテナのために、(バグ/修正として)アップストリームに投稿されましたか?
david6 2015

@ david6そうであったかどうかはわかりません。昨夜、GRUB2とそれがどのOSを検出するかをどのように決定するかについてさらに学習しようとしているときに、ちょうど発見をしました。
Terrance

'20microsoft'スクリプトは乱雑に見え、他の改善が必要な場合があります。
david6 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.