ブート修復でWindowsに作成されたGRUBメニューエントリが多すぎます


11

最近、UbuntuをWindows 10とともにデュアルブートでHPラップトップにインストールしました。Windowsオプションを選択するとgrubにループバックするだけなので、最初はgrubを使用してWindowsを起動できませんでした。

次に、ブート修復を実行したところ、これらすべての追加オプションがグラブメニューに表示されました。

「Windows UEFI bootmgfw.efi」オプションを使用してWindowsを開くことはできますが、「Windowsブートマネージャ(/ dev / sda1上)」の標準オプションを使用できません。

これらのエントリを減らす方法と、後者のオプションを使用してWindowsを起動できないのはなぜですか?

こちらがgrubの画像です。最初のオプションはUbuntuです。

grub-最初のオプションはUbuntuです



3
それは実際にはそれの複製ではありません。私はLinuxカーネルエントリを表示しません。さらに、ブートマネージャーオプションを使用してWindowsを起動できないという点も重要です。
Abhay 2017

1
うわー、あなたは速いです!答えを試した後でのみ受け入れるべきですが、これは確かに役に立ちます!!! ;-) また、私はあなたが本当に始める前にバックアップを取るべきだと言っていましたか、それとも本当に何を削除するかについて本当に注意する必要がありますか?!
Fabby 2017

1
Fabbyが示唆しているように、GRUBカスタマイザを使用すると役立つ可能性があります。あるオプションが機能する理由と機能しない理由については/boot/grub/grub.cfg、システムからファイルを確認する必要があります。私の疑いは、機能していないエントリーはBIOSベースのシステム用に設計されているが、あなたのエントリーは明らかにEFIベースであるため、BIOSモードのオプションは(文字通りの)非スターターです。
ロッドスミス

回答:


5

ここではWindowsは話題外です が、答えはこれは非常に古い技術であり、ブートセクターは512バイトしかないため、保持したいすべてのものを保持するのに十分な大きさではありません。

自分でgrubのエントリを簡単に追加および削除するには、次のようにしてください:

  1. CloneZilla Liveを使用して、他のOSを含むコンピューター全体の完全なシステムバックアップを作成します
  2. いいえ、冗談ではありませんでした。最初にシステム全体のバックアップを取ってください!:-)
  3. 誰かがPPAインストールするように非常に慎重になるように言うときはいつでも、これが本当に欲しいものであるならあなた自身の調査をしてそしてそれから続けてください
  4. 次のコマンドを実行して、grub-customizerをインストールします。

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt update
    sudo apt install grub-customizer
    
  5. それを開始grub-customizerしてカスタマイズします。 ここに画像の説明を入力してください

  6. 深刻な問題が発生した場合は、システムのバックアップを復元してください。


1
あなたは答えで、そしてあなたのコメントでさえ、繊細なスタイルを持っています。正直なところ、誰もが正しい有用な回答を回答としてマークしないのは本当に不思議です。私はあなたのコメントをコピーして、私の答えの後に貼り付け😂こと
Haitham A.エルGhareeb

grubブートメニューの非表示に関する別の質問について、プラス1を挙げました。ただし、この場合、「私は比較的確信している」このスレッドに投稿したばかりの答えは正しいものです。それは今私に二度起こりました、そして、修理方法は毎回完璧です。
WinEunuuchs2Unix

FTR私もこの回答に賛成しています。昨年のコメントは誤解された可能性があります。
WinEunuuchs2Unix

12

実行boot-repairするたびに、メインメニューに5つの Windowsブートオプションが追加され、機能grubしなくなります。あなたの場合、それは11の余分なエントリを追加しました!

grub.cfg 問題を示しています

シークレットは/etc/grub/grub.cfgファイル内にあります:

### BEGIN /etc/grub.d/25_custom ###
    menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi
### END /etc/grub.d/25_custom ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p2)' --class windows --class os $menuentry_id_option 'osprober-efi-D656-F2A8' {
    savedefault
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  D656-F2A8
    else
      search --no-floppy --fs-uuid --set=root D656-F2A8
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-9478-B6E2' {
    savedefault
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  9478-B6E2
    else
      search --no-floppy --fs-uuid --set=root 9478-B6E2
    fi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

このセクションに30_os-proberは、grub保持したい「適切な」Windows メニューエントリが含まれています。セクションに25_customは、によって作成された偽のエントリが含まれていますboot-repair。次回のupdate-grub実行時に単に上書きされるため、GRUB構成ファイルを編集することはできません。


セクション25_customはブート修復によって作成されました

私のシステムでは:

$ locate 25_custom
/boot/efi/boot-repair/log/20171111_224241/nvme0n1p5/25_custom
/boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
/etc/grub.d/25_custom

セットアップされた(そして動作しない)追加のWindowsオプションを見てください:

$ cat /boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
#!/bin/sh
exec tail -n +3 $0

menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi

これらは、後ににコンパイルさboot-repairれた/etc/grub.d/25_customで作成された誤ったエントリです\boot\grub\grub.cfg


リバースブート修復の変更 25_custom

sudo -H gedit /etc/grub.d/25_custom最初の3行を除くすべてを使用して削除します。

#!/bin/sh
exec tail -n +3 $0
  • これで、ファイルには2行のテキストと1行の空白行が含まれています。
  • ファイルを保存します。
  • を実行しますsudo update-grub
  • リブート。

これで、メニューは、機能しない5つの偽のWindowsメニューエントリで肥大化しなくなりました。

3行あることを再確認してください 25_custom

このコマンドを実行し25_customて、3行あることを確認します。

$ wc /etc/grub.d/25_custom
      3       6      30
#     ^       ^       ^
#     |       |       +--- Number of characters
#     |       +----------- Number of words
#     +------------------- Number of lines

#解読wc(単語数)出力にコメントを追加しました。


1
私は自分の回答に反対票を投じることも削除することもできませんが、反対票を投じることはできます... :)テキストベースのソリューションの方が一般的に正確ですが、GUIソリューションは常にテキストベースのソリューションよりも多くの票を獲得することに注意してください(=技術的にはより良い)
Fabby

1
回答に賛成票を入れたところ、非GUIが私の票よりも多くの票を獲得したことに驚いています! よくやった!
Fabby

1
@ファビーありがとう。私もあなたに賛成票を入れました:)
WinEunuuchs2Unix '19

私は質問に遅れるかもしれませんが...なぜ25_customが必要なのですか?なぜこれらの3行が必要なのですか?
poomerang

@poomerangこれは、grubの世界での空の構成ファイルの自然な順序です。反逆するよりも従うほうが簡単です。
WinEunuuchs2Unix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.