Avvio doppio Win 8 / Ubuntu carica solo Win


13

Il mio computer è un notebook Sony Vaio. Ho usato Ubuntu e Win 8 con dualboot ma Windows in qualche modo è riuscito a rimuovere il menu per scegliere il sistema operativo all'avvio. Penso che il BIOS sia UEFI. L'avvio protetto era già disabilitato e Boot Repair in qualche modo fallisce.

Come posso risolvere questo problema?


sda manca GRUB ... "Posiziona GRUB in sda" utilizzando: help.ubuntu.com/community/Boot-Repair
jmunsch

3
Con UEFI non hai grub nell'MBR di sda, ma solo nella partizione efi che è.
oldfred

Risposte:


19

Sony, HP e molti produttori di laptop sono hardcoded per avviare solo Windows.

Esistono diversi round di lavoro che suggeriscono di spostare il file grubx64.efio il shimx64.efifile in cima a Windows /EFI/windows/bootmgfw.efi. Tuttavia, questo non è raccomandato perché Windows Update verrà ripristinato bootmgfw.efie tornerai solo all'avvio di Windows.

Invece, suggerisco di rinominare il fallback /EFI/Boot/bootx64.efi e avviare la voce del disco rigido o utilizzare rEFInd.

Assicurarsi di eseguire il backup dell'intera partizione EFI prima di apportare modifiche.

Sono disponibili diverse opzioni:

I. Sposta e rinomina i file grub grubx64.efio shim64.efi(per l'avvio sicuro) in questa cartella / file/EFI/BOOT/BOOTX64.EFI

  1. Rinominare /efi/boot/bootx64.efi, copiare shim o grub in / efi / boot e denominarlo bootx64.efi Quindi avviare la voce del disco rigido. Le nuove versioni di Boot-Repair lo fanno automaticamente con "Usa il file EFI standard" nelle opzioni avanzate. Esegue anche il backup del bootx64.efi corrente, che probabilmente è solo una copia del file di avvio .efi di Windows.

    Dall'installatore live montare la partizione efi sul disco rigido: montare la partizione efi. controlla quale partizione è FAT32 con flag di avvio. Spesso sda1 o sda2 ma varia.

    sudo mount /dev/sda1 /mnt
    

    solo se non già esistente,

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

    Se viene creata una nuova cartella, bootx64.efi non esisterà, saltare questo comando

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

    Rendi grub la voce di avvio del disco rigido in UEFI. Se non esistente, potrebbe essere necessario aggiornare UEFI anche con efibootmgr.

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

    Se necessario, aggiungere una nuova voce di avvio del disco rigido UEFI: vedere anche

    man efibootmgr
    

    Se ESP è sda o voci di unità e partizioni predefinite:

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

    Se ESP non è sda1, sdX è unità, Y è partizione efi, anche unità 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. (Questo è lo stesso di quello che faceva Boot-Repair in II. Non ora raccomandato: Rinomina /efi/Microsoft/Boot/bootmgfw.efi e copia grub o shim in / efi / Microsoft / Boot e chiamalo bootmgfw.efi Quindi avvia la voce di Windows per avviare il menu di grub. Devi aggiungere manualmente una voce di menu di grub per avviare il file efi di Windows rinominato. La voce os-prober di Grub2 avvia la voce bootmgfw.efi che ora è solo grub, quindi non funzionerà.

    Gli utenti che hanno spostato manualmente i file efi in giro vedono il post n. 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

II. Se hai eseguito la correzione di Boot-Repair per "buggy UEFI" con una copia precedente, è meglio annullarla. E quindi apporta la modifica sopra per utilizzare bootx64.efi Per annullare e rinominare i file con i loro nomi originali, devi solo selezionare l'opzione "Ripristina backup EFI" di Boot-Repair.

Qualsiasi ridenominazione manuale o con Boot-Repair dovrà essere rifatta dopo un aggiornamento di Windows poiché ripristinerà i file di Windows.

III. Modifica il BCD di Windows, un'alternativa alla ridenominazione di Boot-Repair per fare in modo che shim abbia il nome di Windows. Alcuni sistemi funzionano meglio per registrare grub / shim dall'interno di Windows, per quelli che continuano a ripristinare Windows come predefinito.

Grub non viene visualizzato all'avvio per Windows 8.1 Ubuntu 13.10 Dual boot

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

https://coderwall.com/p/vfyqkg

IV. Se la descrizione deve essere Windows, cambia la descrizione UEFI. Questo funziona davvero solo per quelli con solo Ubuntu e nessuna installazione di Windows.

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

Ripristina o una nuova voce UEFI di Windows: presuppone che sda1 aggiunga -p 2 se sda2 (vedi man efibootmgr -d drive & -p opzioni di partizione):

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. Alcuni installano rEFInd che sembra essere un'altra soluzione alternativa e ha delle belle icone di avvio.

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

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

PPA disponibile per semplificare l'installazione in Ubuntu

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


Sì! Rinominare ha funzionato per me! Ho montato la partizione efi e copiato i file ../EFI/ubuntu/grubx64.efi su ../EFI/Boot/ e su / EFI / Microsoft / Boot e ho cambiato il nome del file come segue. Nella directory ../EFI/Boot ho sovrascritto bootx64.efi con il file e in ../EFI/Microsoft/Boot ho sovrascritto bootmgfw.efi con il file. Questo è tutto ciò che penso. Grazie mille!
user296880,

Per quelli bloccati su Windows: sono riuscito a fare l'approccio di rinomina descrivere nell'opzione a1 senza uscire da Windows. Ho aperto una finestra di comando come amministratore, quindi ho corso mountvol S: /Sper montare la partizione EFI come S :. Ho avuto strani problemi con andare su e giù per le cartelle, ma spostare una copia di grubx64.efi una cartella alla volta in / EFI / Boot, quindi rinominarla in bootx64.efi ha funzionato.
Peter Becker,

Sono sorpreso che il maggiore inglese che ha rinumerato il mio incarico non l'abbia fatto. Ho avuto commenti più vecchi riferiti ad A: & B: come sezioni principali. :)
oldfred

2

La risposta sopra non ha funzionato per HP Pavilion del mio amico, ma ho trovato una soluzione decente. Sembra che il firmware di HP sovrascriva sempre BootOrderogni avvio e imposta prima Windows, ma rispetta comunque BootNext. Quindi ho scritto uno script di avvio da impostare BootNextad ogni avvio.

  1. Correre

    efibootmgr
    

    per trovare il codice numerico di BootCurrent. Nel caso del mio amico questo era 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. Correre

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

Ciò significa che se avessi mai avviato qualcos'altro dovrai selezionare manualmente Linux all'avvio la prossima volta.


0

Ho un Acer che ha lo stesso problema. La mia soluzione è quella di "riavviare" Windows, piuttosto che l'arresto (che è davvero solo un hybernate.)

Riavviando (che può attivare gli aggiornamenti), il sistema si arresta e puoi selezionare l'avvio dal BIOS. Devi prenderlo prima che si riavvii.

Uso raramente Windows, quindi l'avvio in questo modo non mi disturba affatto. A meno che, ovviamente, gli aggiornamenti di Windows.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.