Boot-Repair สร้างรายการเมนูด้วงมากเกินไปสำหรับ Windows


11

ฉันเพิ่งติดตั้ง Ubuntu ในบูตคู่พร้อมกับ Windows 10 บนแล็ปท็อป HP ตอนแรกฉันไม่สามารถบูท Windows โดยใช้ด้วงเพราะการเลือกตัวเลือก Windows จะวนกลับไปเป็นด้วง

จากนั้นฉันก็ทำการซ่อมแซมการบู๊ตและตัวเลือกพิเศษเหล่านี้ปรากฏขึ้นในเมนูด้วง

ฉันสามารถเปิด Windows โดยใช้ตัวเลือก "Windows UEFI bootmgfw.efi" แต่ไม่ได้ใช้ตัวเลือกมาตรฐานของ "Windows Boot Manager (บน / dev / sda1)

ฉันจะลดรายการเหล่านี้ได้อย่างไรและทำไมฉันไม่สามารถบูต Windows โดยใช้ตัวเลือกหลังได้

นี่คือภาพด้วง ตัวเลือกแรกคือ Ubuntu:

grub - ตัวเลือกแรกคือ Ubuntu



3
มันไม่ได้ซ้ำกันจริง ๆ Mine ไม่แสดงรายการเคอร์เนล Linux บวกกับจุดที่ฉันไม่สามารถบูต Windows โดยใช้ตัวเลือกตัวจัดการการบูต
Abhay

1
ว้าวคุณเร็วมาก! คุณควรยอมรับหลังจากที่คุณได้ลองคำตอบแล้ว แต่อันนี้จะช่วยได้แน่นอน !!! ;-) นอกจากนี้ฉันยังพูดถึงว่าคุณควรสำรองข้อมูลก่อนที่จะเริ่มต้นหรือระมัดระวังจริงๆเกี่ยวกับสิ่งที่คุณลบ?!
Fabby

1
การใช้ GRUB Customizer ดังที่ Fabby แนะนำนั้นมีแนวโน้มที่จะช่วยได้ สาเหตุที่ตัวเลือกหนึ่งทำงานได้ แต่ตัวเลือกอื่นไม่ได้เราจะต้องดู/boot/grub/grub.cfgไฟล์จากระบบของคุณ ความสงสัยของฉันคือรายการที่ไม่ทำงานนั้นถูกออกแบบมาสำหรับระบบที่ใช้ BIOS แต่คุณเห็นได้ชัดว่าใช้ระบบ EFI ดังนั้นตัวเลือกโหมด BIOS จึงไม่ใช่ตัวเริ่มต้น (ตามตัวอักษร)
Rod Smith

คำตอบ:


5

Windows อยู่นอกหัวข้อที่นี่ แต่คำตอบคือเทคโนโลยีเก่ามากและบูตเซกเตอร์มีขนาดเพียง 512 ไบต์ดังนั้นจึงไม่ใหญ่พอที่จะเก็บทุกสิ่งที่เราต้องการเก็บไว้

หากต้องการเพิ่มและลบรายการออกจากด้วงทั้งหมดด้วยตัวคุณเองโปรด:

  1. ใช้การสำรองระบบทั้งหมดของคอมพิวเตอร์ของคุณรวมถึงระบบปฏิบัติการอื่นโดยใช้CloneZilla Live
  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. El-Ghareeb

ฉันเพิ่งให้คุณบวกหนึ่งในgrubคำถามที่แตกต่างกันเกี่ยวกับการซ่อนเมนูการบูต อย่างไรก็ตามในกรณีนี้ "ฉันค่อนข้างมั่นใจ" คำตอบที่ฉันเพิ่งโพสต์ในกระทู้นี้เป็นคำตอบที่ถูกต้อง มันเกิดขึ้นกับฉันสองครั้งแล้วและวิธีการซ่อมนั้นไร้ที่ติทุกครั้ง
WinEunuuchs2Unix

FTR ฉันก็ตอบคำถามนี้ด้วยเช่นกัน ความคิดเห็นของปีที่แล้วอาจมีการเข้าใจผิด
WinEunuuchs2Unix

12

ทุกครั้งที่ฉันเรียกใช้boot-repairจะเพิ่มตัวเลือกการบูต Windows 5พิเศษให้กับ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ถูกเรียกใช้


ส่วน25_customถูกสร้างโดย Boot Repair

ในระบบของฉัน:

$ 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ภายหลัง


ย้อนกลับการเปลี่ยนแปลง Boot Repair เป็น 25_custom

ใช้sudo -H gedit /etc/grub.d/25_customและลบทุกอย่างยกเว้นสามบรรทัดแรก:

#!/bin/sh
exec tail -n +3 $0
  • ตอนนี้ไฟล์มีสองบรรทัดพร้อมข้อความและหนึ่งบรรทัดว่าง
  • บันทึกไฟล์
  • sudo update-grubวิ่ง
  • Reboot

ตอนนี้เมนูของคุณจะไม่เต็มไปด้วยห้ารายการเมนู Windows ปลอมที่ไม่ทำงาน

ตรวจสอบอีกครั้งว่ามีสามบรรทัด 25_custom

รันคำสั่งนี้และตรวจสอบว่า25_customมีสามบรรทัด:

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

ฉันเพิ่ม#ความคิดเห็นในการถอดรหัสwc(จำนวนคำ) เอาท์พุท


1
ฉันไม่สามารถ downvote คำตอบของฉันเองหรือลบ แต่ฉันสามารถ upvote คุณ ... :) ระวังว่าโซลูชัน GUI จะได้รับคะแนนมากกว่าโซลูชันแบบข้อความเสมอแม้ว่าโซลูชันแบบข้อความจะแน่นอนมากขึ้น (= เทคนิคดีกว่า)
Fabby

1
ในขณะที่ฉันเพิ่งได้รับการโหวตจากคำตอบของฉันฉันก็แปลกใจที่เห็นว่าไม่ใช่ GUI ของคุณได้เพิ่มคะแนนมากกว่าฉัน! เยี่ยมมาก!
Fabby

1
@ Fabby ขอบคุณ ฉันเพิ่งให้คะแนนของคุณเกินไป :)
WinEunuuchs2Unix

ฉันอาจจะมาสาย แต่ ... 25_custom ทำไมถึงจำเป็น? เหตุใดจึงต้องใช้ 3 บรรทัดเหล่านี้
poomerang

@poomerang มันเป็นธรรมชาติของไฟล์การกำหนดค่าที่ว่างเปล่าในโลกของด้วง ง่ายกว่าที่จะทำตามกบฏ
WinEunuuchs2Unix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.