web-dev-qa-db-ja.com

Boot-RepairがWindows用のgrubメニューエントリを作成しすぎた

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

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

「Windows UEFI bootmgfw.efi」オプションを使用してWindowsを開くことはできますが、「Windows Boot Manager(/ dev/sda1)」の標準オプションは使用できません。

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

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

grub - the 1st option is Ubuntu

9
Abhay

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を起動し、それを徹底的にカスタマイズします。 enter image description here

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

4
Fabby

boot-repairを実行するたびに、動作しないメインgrubメニューに5余分なWindowsブートオプションが追加されます。あなたの場合、それは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には、保持したい「良い」Windows grubメニューエントリが含まれています。セクション25_customには、boot-repairによって作成された偽のエントリが含まれています。 grub構成ファイルは、次回update-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メニューエントリでメニューが肥大化しなくなりました。

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

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

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

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

8