Dual boot Win 8 / Ubuntu โหลดได้เฉพาะ Win


13

คอมพิวเตอร์ของฉันคือ Sony Vaio Notebook ฉันใช้ Ubuntu และ Win 8 ด้วย dualboot แต่ windows ก็จัดการลบเมนูเพื่อเลือกระบบปฏิบัติการเมื่อเริ่มต้น ฉันคิดว่า BIOS เป็น UEFI การบูตที่ปลอดภัยถูกปิดใช้งานแล้วและซ่อมแซมการบูตไม่สำเร็จ

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร


sda ไม่มีคำว่า GRUB ... "ใส่ GRUB ใน sda" โดยใช้: help.ubuntu.com/community/Boot-Repair
jmunsch

3
ด้วย UEFI คุณไม่มีด้วงใน MBR ของ sda เพียงแค่ในพาร์ติชัน efi ซึ่งเป็น
oldfred

คำตอบ:


19

Sony, HP และผู้จำหน่ายแล็ปท็อปจำนวนมากได้รับการเข้ารหัสเพื่อบูต Windows เท่านั้น

มีหลายงาน-a-รอบที่ขอแนะนำให้คุณย้ายด้วงมีgrubx64.efiหรือไฟล์บนวินโดวส์shimx64.efi /EFI/windows/bootmgfw.efiไม่แนะนำให้ทำเช่นนี้เพราะ Windows Update จะคืนค่าbootmgfw.efiและคุณจะกลับไปที่หน้าต่างบูตเท่านั้น

ฉันขอแนะนำให้เปลี่ยนชื่อ /EFI/Boot/bootx64.efi แทนและบูตรายการฮาร์ดไดรฟ์หรือใช้ rEFInd

ตรวจสอบให้แน่ใจว่าคุณสำรองพาร์ติชัน EFI ทั้งหมดก่อนทำการเปลี่ยนแปลง

คุณมีหลายตัวเลือก:

I.ย้ายและเปลี่ยนชื่อไฟล์ด้วงgrubx64.efiหรือshim64.efi(สำหรับการบูตอย่างปลอดภัย) ไปยังโฟลเดอร์ / ไฟล์นี้/EFI/BOOT/BOOTX64.EFI

  1. เปลี่ยนชื่อ /efi/boot/bootx64.efi คัดลอก shim หรือ grub ไปที่ / efi / boot และตั้งชื่อมันว่า bootx64.efi จากนั้นบูตรายการฮาร์ดไดรฟ์ Boot-Repair เวอร์ชันใหม่ทำสิ่งนี้โดยอัตโนมัติด้วย 'ใช้ไฟล์ EFI มาตรฐาน' ในตัวเลือกขั้นสูง นอกจากนี้ยังสำรอง bootx64.efi ปัจจุบันซึ่งอาจเป็นเพียงสำเนาของไฟล์บูต Windows .efi

    จากตัวติดตั้งแบบสดให้เมาท์พาร์ติชัน efi บนฮาร์ดไดรฟ์: เมานต์พาร์ติชัน efi ตรวจสอบพาร์ติชันที่เป็น FAT32 ด้วยแฟล็กสำหรับบูต มักจะ sda1 หรือ sda2 แต่แตกต่างกันไป

    sudo mount /dev/sda1 /mnt
    

    เฉพาะในกรณีที่ยังไม่มีอยู่

    sudo mkdir /mnt/EFI/Boot
    sudo cp /mnt/EFI/ubuntu/* /mnt/EFI/Boot
    

    หากสร้างโฟลเดอร์ใหม่ bootx64.efi จะไม่มีอยู่ให้ข้ามคำสั่งนี้

    sudo mv /mnt/EFI/Boot/bootx64.efi /mnt/EFI/Boot/bootx64.efi.backup
    

    ทำให้ด้วงเป็นรายการบูตฮาร์ดไดรฟ์ใน UEFI หากไม่มีอยู่อาจต้องอัปเดต UEFI ด้วย efibootmgr

    sudo mv /mnt/EFI/Boot/grubx64.efi /mnt/EFI/Boot/bootx64.efi 
    

    ถ้าจำเป็นให้เพิ่มรายการบูตฮาร์ดไดรฟ์ UEFI ใหม่: ดูเพิ่มเติม

    man efibootmgr
    

    ถ้า ESP เป็น sda หรือรายการไดรฟ์และพาร์ติชั่นเริ่มต้น:

    sudo efibootmgr -c -L "UEFI Hard drive" -l "\EFI\Boot\bootx64.efi"
    

    ถ้า ESP ไม่ใช่ sda1, sdX คือไดรฟ์, Y คือพาร์ติชัน efi, และไดรฟ์ NVMe เช่นกัน:

    sudo efibootmgr -c -g  -w -L "UEFI hard drive" -l '\EFI\Boot\bootx64.efi' -d /dev/sdX -p Y
    sudo efibootmgr -c -L "UEFI hard drive" -l "\EFI\Boot\bootx64.efi" -d /dev/nvme0n1 -p 2 
    
  2. (นี่เป็นสิ่งเดียวกับที่ Boot-Repair ใช้ในการทำในIIไม่แนะนำตอนนี้: เปลี่ยนชื่อ /efi/Microsoft/Boot/bootmgfw.efi และคัดลอก grub หรือ shim ลงใน / efi / Microsoft / Boot และตั้งชื่อ bootmgfw.efi รายการบูต Windows เพื่อบู๊ตเมนูด้วงคุณต้องเพิ่มรายการเมนูด้วงเพื่อบู๊ตไฟล์ Windows efi ที่เปลี่ยนชื่อด้วยตนเองรายการ os-prober ของรายการ Grub2 บูตรายการ bootmgfw.efi ซึ่งตอนนี้เพิ่งด้วงดังนั้นมันจะไม่ทำงาน

    ผู้ใช้ที่ย้ายไฟล์ efi ด้วยตนเองดูโพสต์ # 6

    http://ubuntuforums.org/showthread.php?t=2101840
    http://ubuntuforums.org/showthread.php?t=2219452
    http://ubuntuforums.org/showthread.php?t=2221498&p=13012109#post13012109

ครั้งที่สอง หากคุณเรียกใช้การแก้ไขของ Boot-Repair สำหรับ "buggy UEFI" ด้วยสำเนาที่เก่ากว่าจะเป็นการดีที่สุดที่จะเลิกทำ จากนั้นทำการเปลี่ยนแปลงข้างต้นเพื่อใช้ bootx64.efi หากต้องการยกเลิกและเปลี่ยนชื่อไฟล์เป็นชื่อดั้งเดิมคุณเพียงแค่เลือกตัวเลือก "กู้คืน EFI backups" ของ Boot-Repair

การเปลี่ยนชื่อใด ๆ ด้วยตนเองหรือด้วย Boot-Repair จะต้องทำซ้ำหลังจากอัปเดต Windows เพราะจะคืนค่าไฟล์ Windows

สาม. แก้ไข Windows BCD ซึ่งเป็นทางเลือกหนึ่งในการเปลี่ยนชื่อ Boot-Repair เพื่อให้ shim มีชื่อ Windows ระบบบางระบบทำงานได้ดีกว่าในการลงทะเบียน grub / shim จากภายใน Windows - สำหรับระบบที่รีเซ็ต Windows เป็นค่าเริ่มต้น

ด้วงไม่แสดงเมื่อเริ่มต้นสำหรับ Windows 8.1 Ubuntu 13.10 Dual boot

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

https://coderwall.com/p/vfyqkg

IV หากคำอธิบายต้องเป็น Windows ให้เปลี่ยนคำอธิบาย UEFI สิ่งนี้ใช้ได้กับผู้ที่มี Ubuntu เท่านั้นและไม่มี Windows ติดตั้งเลย

sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\ubuntu\shimx64.efi"

กู้คืนหรือรายการ Windows UEFI ใหม่ - สมมติว่า sda1 เพิ่ม -p 2 หาก sda2 (ดูตัวเลือก man efibootmgr -d drive & -p พาร์ติชั่น):

sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi"
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi" -d /dev/nvme0n1 -p 1 

V.บางส่วนติดตั้ง rEFInd ซึ่งดูเหมือนจะเป็นวิธีแก้ปัญหาอื่นและมีไอคอนการบูตที่ดี

http://www.rodsbooks.com/refind/index.html

http://www.rodsbooks.com/refind/secureboot.html

มี PPA ให้ติดตั้งใน Ubuntu ได้ง่าย

http://www.rodsbooks.com/refind/getting.html

พระมงกุฎเกล้าเจ้าอยู่หัว กู้คืนรายการ Ubuntu UEFI sdX คือไดรฟ์ Y คือพาร์ติชัน efi ถ้า sda2 เป็นตัวอย่าง

sudo efibootmgr -c -L ubuntu -l "\EFI\ubuntu\shimx64.efi"  -d /dev/sda -p 1
sudo efibootmgr -c -L "Ubuntu" -l "\EFI\ubuntu\shimx64.efi" -d /dev/nvme0nX -p Y

ปกเกล้าเจ้าอยู่หัว เปลี่ยนลำดับการบู๊ตด้วย efibootmgr:

เปลี่ยนลำดับการบูตโดยใช้ efibootmgr

VIII ถอนการติดตั้งรายการ UEFI:

ถอนการติดตั้ง Grub และใช้ Windows bootloader เปลี่ยนลำดับการบูตโดยใช้ efibootmgr


ใช่ การเปลี่ยนชื่อทำงานให้ฉัน! ฉันติดตั้งพาร์ติชัน efi และคัดลอกไฟล์ ../EFI/ubuntu/grubx64.efi เป็น ../EFI/Boot/ และไปที่ / EFI / Microsoft / Boot และเปลี่ยนชื่อของไฟล์ดังนี้ ในไดเรกทอรี ../EFI/Boot ฉันเขียนทับ bootx64.efi ด้วยไฟล์และใน ../EFI/Microsoft/Boot ฉันจะเขียนทับ bootmgfw.efi ด้วยไฟล์ นั่นคือทั้งหมดที่ฉันคิด ขอบคุณมาก!
user296880

สำหรับผู้ที่ติดอยู่บน Windows: ฉันจัดการวิธีการเปลี่ยนชื่ออธิบายในตัวเลือก a1 โดยไม่ต้องออกจาก Windows ฉันเปิดหน้าต่างคำสั่งในฐานะผู้ดูแลระบบจากนั้นจึงวิ่งmountvol S: /Sไปยังพาร์ติชัน EFI เป็น S: ฉันมีปัญหาแปลก ๆ เกี่ยวกับการขึ้นและลงโฟลเดอร์ แต่การย้ายสำเนาของ grubx64.efi หนึ่งโฟลเดอร์ไปยัง / EFI / Boot จากนั้นเปลี่ยนชื่อเป็น bootx64.efi
Peter Becker

ฉันประหลาดใจที่ผู้สอนวิชาภาษาอังกฤษที่เรียงลำดับโพสต์ของฉันไม่ได้ทำเช่นนั้น ฉันมีความคิดเห็นเก่ากว่าที่อ้างถึง A: & B: เป็นหัวข้อหลัก :)
oldfred

2

คำตอบข้างต้นไม่ได้ผลสำหรับเพื่อนของฉัน HP Pavilion แต่ผมพบว่าวิธีแก้ปัญหาที่ดี มันดูเหมือนว่าเฟิร์มของ HP เสมอเขียนทับBootOrderในทุกบูตและการตั้งค่าของ Windows แรก BootNextแต่ก็ยังคงประการ ดังนั้นฉันจึงเขียนสคริปต์เริ่มต้นเพื่อตั้งค่าBootNextในการบูต

  1. วิ่ง

    efibootmgr
    

    BootCurrentเพื่อหาสิ่งที่รหัสตัวเลขของ 0003ในกรณีของเพื่อนของฉันนี้คือ

  2. /etc/systemd/system/boot-linux-next.service:

    [Unit]
    Description=Boot Linux next
    
    [Service]
    Type=oneshot
    # Replace '3' in the next line with the appropriate code.
    ExecStart=efibootmgr --bootnext 3
    
    [Install]
    WantedBy=multi-user.target
    
  3. วิ่ง

    systemctl enable --now boot-linux-next.service
    

นี่หมายความว่าหากคุณเคยบูตเครื่องอย่างอื่นคุณจะต้องเลือก Linux ด้วยตนเองในการบูตครั้งต่อไป


0

ฉันมีเอเซอร์ที่มีปัญหาเดียวกัน ทางออกของฉันคือ "รีบูต" windows แทนที่จะปิดเครื่อง (ซึ่งจริงๆแล้วเป็นเพียง hybernate)

โดยการรีบู๊ต (ซึ่งอาจทำให้เกิดการอัพเดท) ระบบจะปิดและคุณสามารถเลือกการบู๊ตจากไบออส คุณต้องจับมันก่อนที่จะรีบูท

ฉันไม่ค่อยใช้ windows ดังนั้นการบูตด้วยวิธีนี้จะไม่ทำให้ฉันรำคาญเลย แน่นอนว่าการอัพเดท windows

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