GNU/Linux >> Linux Esercitazione >  >> Linux

Linux – Windows Dual Boot sul secondo disco rigido, sistema Uefi/gpt?

Mi piacerebbe installare Linux, ma non voglio rischiare di danneggiare la mia attuale installazione di Windows poiché ho sentito molte storie dell'orrore. Fortunatamente, ho un disco rigido extra. Posso installare Linux su quello e quindi eseguire il dual boot di Windows senza dover modificare l'unità di Windows?

Inoltre, ho un "BIOS" UEFI e l'unità Windows è in formato GPT.

Risposta accettata:

Userò il termine BIOS di seguito quando si fa riferimento a concetti che sono gli stessi sia per i sistemi UEFI più recenti che per i sistemi BIOS tradizionali, poiché mentre questa è una domanda orientata all'UEFI, parlare del "BIOS" è meglio con, ad esempio, documentazione GRUB e "BIOS/UEFI" è troppo goffo. 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 delle unità e sull'ordine di avvio. Ordine di guida si riferisce all'ordine in cui le unità sono fisicamente collegate al bus sulla scheda madre (prima unità, seconda unità, ecc.); queste informazioni sono riportate dal BIOS. Ordine di avvio si riferisce alla sequenza in cui il BIOS verifica la presenza di un'unità avviabile. Questo non è necessariamente lo stesso dell'ordine delle unità e di solito è configurabile tramite la schermata di configurazione del BIOS. L'ordine delle unità non dovrebbe essere configurabile o influenzato dall'ordine di avvio, poiché sarebbe una cosa molto ostile al sistema operativo (ma in teoria potrebbe farlo un BIOS ottuso). Inoltre, se si scollega la prima unità, è probabile che la seconda unità diventerà la prima. Useremo gli UUID nella configurazione del boot loader per cercare di evitare problemi come questo (anche gli installatori Linux contemporanei lo fanno).

Il modo ideale per ottenere ciò che desideri è installare Linux sulla seconda unità in termini di ordine delle unità quindi selezionalo prima in termini di ordine di avvio utilizzando la configurazione 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 "concatenare" il bootloader nativo di Windows e il bootloader di Windows presume sempre che sia sulla prima unità. C'è un modo per ingannarlo, tuttavia, se preferisci o se ne hai bisogno il contrario.

Si spera che tu possa semplicemente andare avanti e usare 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 si incasina e ti rimangono problemi come:

  1. Ho installato Linux sul prima disco e ora non riesco ad avviare Windows, oppure

  2. Ho installato Linux sul secondo disco, ma utilizzando il primo disco per il bootloader, e ora non riesco ad avviare nulla!

Allora continua a leggere. Nel secondo caso, dovresti prima provare a reinstallare Linux sul secondo disco e questa volta assicurati che sia lì che va il bootloader. Il modo più semplice e infallibile per farlo sarebbe rimuovere temporaneamente l'unità Windows dalla macchina, poiché supponiamo che non ci sia nulla di aggiuntivo 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à di Windows (se l'hai rimossa e ricorda, idealmente la vogliamo prima in termini di ordine delle unità e la seconda prima in termini di avvio ordine) e procedere al passaggio successivo.

Accesso alla configurazione di GRUB

Avvia Linux, apri un terminale e

> su root

Ti verrà richiesta la password di root. Da questo momento in poi, sei il superutente in quel terminale (per verificare, prova whoami ), quindi non fare nulla di stupido. Tuttavia, sei ancora un utente normale nella GUI e poiché modificheremo un file di testo, se preferisci un editor della GUI dovremo modificare temporaneamente la proprietà di quel file e la directory in cui si trova:

> chown -R yourusername /etc/grub.d/

Se ricevi "Operazione non consentita", non hai su correttamente. Se ricevi chown: invalid user: ‘yourusername’ , hai preso l'ultimo comando troppo alla lettera.

Ora puoi accedere a /etc/grub.d nel tuo browser di file e cerca un file chiamato 40_custom . Dovrebbe assomigliare a 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 (iniziando con #!/bin/sh ) e al passaggio successivo.

Relazionato:Bash:Maiusc+tasti freccia fanno A,B,C,D?

Aggiunta di un'opzione di avvio di Windows

Copia e incollalo con l'editor di testo alla fine del file:

menuentry "MS Windows" {
        insmod part_gpt
        insmod search_fs_uuid
        insmod ntfs
        insmod chain
}

Questo è l'elenco dei moduli di cui GRUB avrà bisogno per fare le cose (ntfs può essere superfluo, ma non dovrebbe nemmeno nuocere). Nota che questa è una voce incompleta — dobbiamo aggiungere alcuni comandi cruciali.

Trovare il bootloader della seconda fase di Windows

La tua installazione di Linux ha probabilmente montato automaticamente la tua partizione 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 digitazione, lo inseriremo in una variabile di shell:

win="/whatever/the/path/is"

Non ci dovrebbero essere spazi su entrambi i lati del segno di uguale. Non includere qui tutti gli elementi di un percorso di Windows. Questo dovrebbe puntare alla cartella di livello superiore sulla partizione di Windows. Ora:

cd $win
find . -name bootmgfw.efi

Questo potrebbe richiedere alcuni minuti se hai una grande partizione, ma molto probabilmente la prima cosa che sputa è quello che stiamo cercando; potrebbero esserci ulteriori riferimenti nel filesystem contenenti lunghe stringhe goobledygook - non è così. Usa 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 .

Fatta eccezione per il . all'inizio, ricorda questo percorso per dopo; puoi copiarlo nel tuo editor di testo su una riga vuota in basso, poiché lo useremo lì. Se vuoi tornare alla directory precedente ora, usa cd - , anche se da qui in poi non importa dove ti trovi nella shell.

Impostazione dei parametri corretti

GRUB deve essere in grado di trovare e trasferire 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 . Digita grub e poi premi Tab due 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 tutto il 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 avvolgersi nel display:un modo semplice per capire la differenza è impostare la numerazione delle righe. Avanti:

> grub-probe --target=fs_uuid $win

Questo dovrebbe restituire una stringa più breve di lettere, numeri e possibili trattini come "123A456B789X6X" o "b942fb5c-2573-4222-acc8-bbb883f19043". Aggiungilo alla fine della search --fs-uuid riga dopo la stringa del BIOS di suggerimento, separata da uno spazio.

Avanti, se (e solo se) Windows è sulla seconda unità in termini di ordine unità , aggiungi una riga dopo search --fs-uuid riga:

    drivemap -s hd0 hd1

Questo è "il trucco" menzionato prima. Nota che non è garantito che funzioni ma non fa male provare.

Infine, l'ultima riga dovrebbe essere:

    chainloader (${root})[the Windows path to the bootloader]
}

Tanto per essere chiari, ad esempio:

    chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi

Questo è tutto. Salva il file e controlla in un browser di file per assicurarti 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 con Tab prima. Potresti anche avere un comando chiamato update-grub . Per verificarlo, digitalo nel terminale di root. Se ricevi "comando non trovato", devi usare grub-mkconfig direttamente. In caso contrario (compreso un errore più lungo), hai appena impostato la configurazione e puoi scremare un po'.

Per usare 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 alla ricerca di errori. grub-mkconfig non lo farà, 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 ) genera un errore indicando un numero di riga, che è il numero di riga in grub.cfg, ma è necessario correggere la parte corrispondente in /etc/grub.d/40_custom (il file nel tuo 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 immettere il numero di riga. Dovresti vedere la voce del menu. Trova l'errore di battitura, correggilo nell'editor di testo ed esegui update-grub o grub-mkconfig di nuovo.

Correlati:ibrido in memoria e disco rigido?

Quando hai finito puoi chiudere l'editor di testo e digitare exit nel terminale per uscire dalla modalità superutente.

Riavvia!

Quando arrivi al menu di grub, scorri rapidamente verso il basso (prima che il timeout scada, in genere 5 secondi) fino all'opzione "Windows" e testala. Se ricevi un messaggio di errore da grub, c'è qualcosa che non va nella configurazione. Se ricevi un messaggio di errore da Windows , quel problema è tra te e Microsoft. Non preoccuparti, tuttavia, il tuo disco Windows non è stato modificato e potrai avviarlo direttamente inserendolo per primo (in termini di ordine di avvio) tramite la configurazione del BIOS.

Quando torni di nuovo su Linux, restituisci la proprietà del /etc/grub.d directory e il suo contenuto nel suo stato originale:

sudo chmod 755 /etc/grub.d/40_custom

Riferimenti

  • Manuale di GRUB 2

  • Pagina di Arch Linux Wiki GRUB

    Arch ha alcuni dei migliori documenti in circolazione e gran parte di essa (inclusa quella pagina) è per lo più applicabile a qualsiasi distribuzione GNU/Linux.


Linux
  1. Installa Linux Mint con Windows 8 | Dual Boot Windows 8 e Linux Mint 12

  2. Come eseguire il dual boot di Windows 10 e MX Linux

  3. fsck un'unità ntfs in Linux

  4. Crea un'unità USB Windows 10 avviabile (UEFI) da Linux

  5. Doppio avvio Windows + Linux con crittografia

Modifica l'ordine di avvio in Windows Linux Dual Boot con Grub Customizer

Come eseguire il dual boot di Linux Mint e Windows 10 [Guida per principianti]

Risolto il problema con Grub che non veniva visualizzato per il sistema di avvio doppio di Windows e Linux

Come eseguire il dual boot di Antergos Linux e Windows UEFI

Come eseguire il dual boot di Fedora e Windows

Come installare Dual Boot Windows e Kali Linux?