Userò il termine BIOS qui sotto quando mi riferirò a concetti che sono gli stessi sia per i più recenti sistemi UEFI che per i sistemi BIOS tradizionali, poiché mentre questa è una domanda orientata all'UEFI, parlando di "BIOS" si adatta meglio con, ad esempio, la documentazione di GRUB e "BIOS / UEFI" è troppo grosso. GRUB (in realtà, GRUB 2 - questo è spesso usato in modo ambiguo) è il bootloader installato da Linux e utilizzato per il dual boot di Windows.
Innanzitutto, una parola sull'ordine dell'unità e sull'ordine di avvio. L'ordine dell'unità si riferisce all'ordine in cui le unità sono fisicamente connesse al bus sulla scheda madre (prima unità, seconda unità, ecc.); queste informazioni sono riportate dal BIOS. Ordine di avviosi riferisce alla sequenza in cui il BIOS verifica un'unità avviabile. Questo non è necessariamente uguale all'ordine dell'unità, ed è generalmente configurabile tramite la schermata di configurazione del BIOS. L'ordine delle unità non dovrebbe essere configurabile o influenzato dall'ordine di avvio, dal momento che sarebbe una cosa molto ostile da fare al sistema operativo (ma in teoria un BIOS ottuso potrebbe). Inoltre, se si scollega la prima unità, probabilmente la seconda diventerà la prima. Useremo gli UUID nella configurazione del boot loader per cercare di evitare problemi come questo (anche gli installatori di Linux contemporanei lo fanno).
Il modo ideale per ottenere ciò che vuoi è installare Linux sul secondo disco in termini di ordine unità e quindi selezionarlo prima in termini di ordine di avvio usando il setup UEFI. Un ulteriore vantaggio di ciò è che è quindi possibile utilizzare l'ordine di avvio BIOS / UEFI per selezionare l'unità Windows e bypassare grub, se lo si desidera. Il motivo per cui raccomando linux sulla seconda unità è perché GRUB deve "caricare a catena" il bootloader nativo di Windows e il bootloader di Windows presuppone sempre che si trovi sulla prima unità. C'è un modo per ingannarlo, tuttavia, se lo preferisci o ne hai bisogno al contrario.
Spero che tu possa semplicemente andare avanti e utilizzare un CD live o qualsiasi altra cosa e farlo usando il programma di installazione della GUI. Tuttavia, non tutti gli installatori sono uguali, e se questo viene rovinato e rimangono problemi come:
Ho installato linux su primo disco e ora non riesco ad avviare Windows, o
Ho installato Linux sul secondo disco, ma usando il primo disco per il bootloader, e ora non riesco ad avviare nulla!
Quindi continua a leggere. Nel secondo caso, dovresti prima provare a reinstallare Linux sul secondo disco, e questa volta assicurati che sia dove si trova il bootloader. Il modo più semplice e più sicuro per farlo sarebbe quello di rimuovere temporaneamente l'unità Windows dalla macchina, poiché supponiamo che non ci sia nulla in più installato su di essa, indipendentemente dall'ordine dell'unità.
Una volta che hai installato Linux e ti sei assicurato che possa avviarsi, ricollega l'unità Windows (se l'hai rimossa - e ricorda, idealmente la vogliamo prima in termini di ordine dell'unità, e la seconda unità prima in termini di ordine di avvio) e procedere al passaggio successivo.
Accesso alla configurazione di GRUB
Avvia Linux, apri un terminale e
> su root
Ti verrà chiesta la password di root. Da questo punto in poi, sei il superutente in quel terminale (per controllare, provare whoami
), quindi non fare nulla di stupido. Tuttavia, sei ancora un normale utente nella GUI e poiché modificheremo un file di testo, se preferisci un editor della GUI dovremo cambiare temporaneamente la proprietà di quel file e della directory in cui si trova:
> chown -R yourusername /etc/grub.d/
Se ottieni "Operazione non consentita", non hai eseguito su
correttamente. Se ottieni chown: invalid user: ‘yourusername’
, hai preso l'ultimo comando alla lettera.
Ora puoi navigare /etc/grub.d
nel tuo browser di file e cercare un file chiamato 40_custom
. Dovrebbe sembrare come questo:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
Se non riesci a trovarlo, nel terminale di root inserisci i seguenti comandi:
> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom
Aprilo nel tuo editor di testo, copia incolla la parte sopra (a partire da #!/bin/sh
) e vai al passaggio successivo.
Aggiunta di un'opzione di avvio di Windows
Copia e incolla questo con l'editor di testo alla fine del file:
menuentry "MS Windows" {
insmod part_gpt
insmod search_fs_uuid
insmod ntfs
insmod chain
}
Questa è la lista dei moduli di cui GRUB ha bisogno per fare le cose ( ntfs
potrebbe essere superfluo, ma non dovrebbe far male a nessuno). Si noti che questa è una voce incompleta - dobbiamo aggiungere alcuni comandi cruciali.
Trovare il Bootloader di Windows Secondo Stadio
L'installazione di Linux probabilmente ha montato automaticamente la partizione di Windows e dovresti riuscire a trovarla in un browser di file. In caso contrario, trova un modo per farlo (se non sei sicuro di come, fai una domanda su questo sito). Una volta fatto, dobbiamo conoscere il punto di montaggio - questo dovrebbe essere ovvio nel browser dei file, ad es /media/ASDF23SF23/
. Per salvare un po 'di battitura, lo inseriremo in una variabile shell:
win="/whatever/the/path/is"
Non ci dovrebbero essere spazi su entrambi i lati del segno di uguale. Non includere qui alcun elemento di un percorso Windows. Questo dovrebbe puntare alla cartella di livello superiore sulla partizione di Windows. Adesso:
cd $win
find . -name bootmgfw.efi
Questo potrebbe richiedere alcuni minuti se hai una grande partizione, ma molto probabilmente la prima cosa che sputa è ciò che stiamo cercando; potrebbero esserci ulteriori riferimenti nel filesystem contenente lunghe stringhe goobledygook - quelli non lo sono. Utilizzare Ctrl-c
per interrompere la ricerca quando vedi qualcosa di breve e semplice come ./Windows/Boot/EFI/bootmgfw.efi
o./EFI/HP/boot/bootmgfw.efi
.
Tranne .
all'inizio, ricorda questo percorso per dopo; puoi copiarlo nel tuo editor di testo su una riga vuota in fondo, poiché lo useremo lì. Se vuoi tornare alla tua directory precedente ora, usacd -
, anche se non importa dove ti trovi nella shell da qui in avanti.
Impostazione dei parametri corretti
GRUB deve essere in grado di trovare e distribuire il processo di avvio al bootloader di Windows della seconda fase. Abbiamo già il percorso sulla partizione di Windows, ma abbiamo anche bisogno di alcuni parametri per dire a GRUB dove si trova quella partizione. Dovrebbe esserci uno strumento installato sul tuo sistema chiamato grub-probe
o (su, ad esempio, Fedora) grub2-probe
. Digitare grub
e quindi premere Tabdue o tre volte; dovresti vedere un elenco che include l'uno o l'altro.
> grub-probe --target=hints_string $win
Dovresti vedere una stringa come:
--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1
Torna all'editor di testo con la configurazione di GRUB al suo interno e aggiungi una riga dopo tutti i insmod
comandi (ma prima della parentesi graffa di chiusura) in modo che assomigli a:
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
Non interrompere quella linea o consentire al tuo editor di testo di farlo. Potrebbe apparire sul display: un modo semplice per capire la differenza è attivare la numerazione delle righe. Il prossimo:
> grub-probe --target=fs_uuid $win
Ciò dovrebbe restituire una stringa più corta di lettere, numeri e trattini come "123A456B789X6X" o "b942fb5c-2573-4222-acc8-bbb883f19043". Aggiungilo alla fine della search --fs-uuid
riga dopo la stringa di bios del suggerimento, separata da uno spazio.
Successivamente, se (e solo se) Windows si trova sulla seconda unità in termini di ordine dell'unità , aggiungere una riga dopo la search --fs-uuid
riga:
drivemap -s hd0 hd1
Questo è "il trucco" menzionato in precedenza. Nota che non è garantito per funzionare ma non fa male provare.
Infine, l'ultima riga dovrebbe essere:
chainloader (${root})[the Windows path to the bootloader]
}
Giusto per essere chiari, ad esempio:
chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi
Questo è tutto. Salvare il file e controllare in un browser di file per assicurarsi che sia stato davvero salvato e abbia l'aspetto che dovrebbe.
Aggiungi la nuova opzione di menu a GRUB
Questo viene fatto con uno strumento chiamato grub-mkconfig
o grub2-mkconfig
; sarà stato nell'elenco che hai trovato Tabprima. Potresti anche avere un comando chiamato update-grub
. Per verificarlo, basta digitarlo nel terminale di root. Se ottieni "comando non trovato", devi usarlo grub-mkconfig
direttamente. In caso contrario (incluso ottenere un errore più lungo), hai appena impostato la configurazione e puoi scorrere un po '.
Per utilizzare grub-mkconfig
direttamente, dobbiamo prima trovare grub.cfg
:
> find /boot -name grub.cfg
Questo sarà probabilmente /boot/grub/grub.cfg
o /boot/grub2/grub.cfg
.
> grub-mkconfig -o /boot/grub/grub.cfg
update-grub
analizzerà automaticamente la configurazione per errori. grub-mkconfig
no, ma è importante farlo perché è molto più facile gestirli ora rispetto a quando si tenta di avviare la macchina. Per questo, usa grub-script-check
(o grub2-script-check
):
> grub-script-check /boot/grub/grub.cfg
Se questo (o update-grub
) produce un errore che indica un numero di riga, quello è il numero di riga in grub.cfg, ma è necessario correggere la parte corrispondente in /etc/grub.d/40_custom
(il file nell'editor di testo). Potrebbe essere necessario essere root solo per guardare il file precedente, quindi prova less /boot/grub/grub.cfg
nel terminale, premi :e inserisci il numero di riga. Dovresti vedere la tua voce di menu. Trova l'errore di battitura, correggilo nell'editor di testo ed esegui update-grub
o di grub-mkconfig
nuovo.
Al termine puoi chiudere l'editor di testo e digitare exit
il terminale per uscire dalla modalità superutente.
Reboot!
Quando si arriva al menu di grub, scorrere rapidamente verso il basso (prima della scadenza del timeout, in genere 5 secondi) fino all'opzione "Windows" e testarlo. Se ricevi un messaggio di errore da grub, qualcosa non va nella configurazione. Se ricevi un messaggio di errore da Windows , quel problema è tra te e Microsoft. Non preoccuparti, tuttavia, l'unità Windows non è stata modificata e sarai in grado di avviarlo direttamente inserendolo prima (in termini di ordine di avvio) tramite la configurazione del BIOS.
Quando torni di nuovo su Linux, restituisci la proprietà della /etc/grub.d
directory e i suoi contenuti al loro stato originale:
sudo chmod 755 /etc/grub.d/40_custom
Riferimenti