Cosa devo fare prima di eseguire il dual boot di Windows 7 e Debian su EFI?


10

Sto per acquistare una scheda madre Asus con firmware EFI e volevo prepararmi per l'installazione di Windows e Debian una volta arrivato l'hardware. Speravo che qualcuno che fosse sceso su questa strada potesse darmi qualche suggerimento.

Quali preparativi devo fare prima di provare a installare Windows 7 e Debian su un nuovo sistema basato su UEFI?

Risposte:


8

EDIT: Quando ho scritto questa risposta, pochissime distribuzioni sono state spedite con un kernel configurato EFI_STUB, quindi è stato necessario crearne uno personalizzato. Oggi la maggior parte delle distribuzioni distribuisce un kernel opportunamente configurato e non è più necessaria una compilazione personalizzata. In questo caso le sezioni "Configura le tue partizioni" e "Configurare le cose" sono quelle interessanti, "Requisiti" e "Compilazione del kernel" possono essere saltati.

Non so come Windows gestisce UEFI, ma dal lato Debian è piuttosto semplice.

Imposta le tue partizioni

Utilizzare lo schema di partizione GPT, non MBR.

Per eseguire l'avvio da una partizione GPT con UEFI è obbligatoria una partizione di avvio dedicata, denominata EFI SYSTEM PARTITION (ESP). Non è obbligatorio, ma il modo più compatibile è utilizzare una partizione FAT32. Una dimensione di 200 MiB dovrebbe andare bene per la maggior parte dei casi.

Per registrare la partizione come ESP, è necessario contrassegnarla con il bootflag. Contrariamente agli schemi MBR, il flag di avvio viene utilizzato solo per indicare ESP, non le partizioni da cui è possibile eseguire l'avvio.

UEFI utilizza una struttura di directory \EFI\<vendor>\<application>.efiper archiviare le applicazioni UEFI. Un separatore di directory è indicato da una barra rovesciata , anche su Linux. potrebbe essere un nome di distribuzione, il valore effettivo non è rilevante per l'UEFI.

Le applicazioni possono essere utilità di sistema come controllori di memoria o shell UEFI. Può anche essere un caricatore del sistema operativo o il sistema operativo stesso. Queste applicazioni devono essere registrate nell'UEFI per poter essere avviate all'avvio.

Requisiti

La versione del kernel Linux> = 3.3 può essere caricata direttamente dall'UEFI. Il kernel può fungere da proprio caricatore. Questo si chiama EFISTUB . Sono necessarie le seguenti configurazioni del kernel.

CONFIG_EFI = y
CONFIG_EFI_PARTITION = y
CONFIG_EFI_STUB = y
CONFIG_RELOCATABLE = y
CONFIG_FB_EFI = y
CONFIG_FRAMEBUFFER_CONSOLE = y
CONFIG_EFI_VARS = m

Un kernel con questa configurazione non è attualmente in Debian stable, ancora. Puoi creare il tuo kernel o usare quello dall'albero sperimentale in quel caso puoi saltare il paragrafo successivo.

Compilare il kernel

(probabilmente non è più necessario, vedi modifica)

Se decidi di compilare il kernel qui ci sono brevi istruzioni su come farlo. In caso di problemi, sono disponibili molte informazioni su come compilare un kernel.

Ottenere la fonte

git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

Dai un'occhiata a una versione particolare

git checkout v3.6

Configurare il kernel

fare menuconfig

Effettua le impostazioni necessarie sul tuo sistema o lascialo così com'è se non hai nulla da personalizzare. Questo scrive la configurazione del kernel nel file .config.

Assicurarsi che le impostazioni del paragrafo precedente siano impostate. Ha anche senso selezionare CONFIG_INPUT_EVBUG=n. Altrimenti i tuoi log saranno riempiti con GiB di spazzatura.

Compilare il kernel

INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binary-arch

I pacchetti vengono creati nella directory principale.

Installazione del kernel

dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb

Costruire initramfs

mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0

3.6.0 è la versione del kernel. L'impostazione predefinita è il kernel in esecuzione, che non è una buona scelta, poiché si sta ancora eseguendo il vecchio kernel.

Preparare le cose

Per poter avviare il kernel Linux, deve essere copiato nell'ESP insieme a initramfs. Dato che l'ESP è montato su/boot/efi

/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0

NOTA: per garantire la compatibilità con la maggior parte dei sistemi, l'estensione efideve essere aggiunta al kernel.

Ora il kernel può essere registrato nell'UEFI. Usiamo lo strumento efibootmgrper quello.

echo "root = UUID = 3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype = ext4 add_efi_memmap initrd = \\ EFI \\ debian \\ initrd.img-3.6.0" |
  iconv -f ascii -t ucs2 |
  efibootmgr \
    --creare \
    --gpt \
    --disk / dev / sda \
    --parte 4 \
    --label "Debian Linux kernel 3.6.0" \
    --loader "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
    --write-signature \
    --append-binary-args -

L'argomento di --diskè il dispositivo in cui risiede il kernel, non l'ESP. --partè il numero di partizione in cui risiede il kernel. --labelè la voce nel menu di avvio UEFI.

Per visualizzare un elenco delle voci disponibili, basta avviare efibootmgrsenza argomenti. Sintassi per eliminare una voce specifica

efibootmgr -b entry (hex) -B

per esempio:

efibootmgr -b 001a -B

Queste istruzioni non gestiscono il caso di un aggiornamento del kernel. Il kernel e initramfs non vengono copiati automaticamente nell'ESP. Questo può essere fatto usando un breve script che copia il kernel e initramfs su ESP ed esegue efibootmgr. Questo script può essere inserito /etc/kernel/postinst.dper essere lanciato automaticamente dopo l'aggiornamento del kernel.

Nota: non è necessario un boot manager come GRUB, la stessa UEFI funge da boot manager.

Questo è tutto ciò che serve dal lato Linux, non so cosa ci vuole per aggiungere Windows.


2

Assicurati che UEFI non stia per bloccare Linux fuori dalla tua macchina; probabilmente c'è un'impostazione in tal senso nel BIOS. Controlla e verifica di sicuro. Vorrei ricontrollare questo punto con il manuale e con il produttore se è necessario.

Ci fu una discussione estesa a riguardo; ZDNet aveva diversi articoli. Ecco un articolo del 21 settembre 2011 e uno del 23 settembre .

In secondo luogo, in base ai dati storici, potresti voler prima installare Windows. Tradizionalmente, Windows presume che sia l'unico sistema operativo sul computer, quindi cancella tutti i dati di avvio relativi a Linux. Questo potrebbe essere diverso per UEFI, non lo so.


2

Non è necessario il doppio avvio di Windows e Linux su UEFI. Segui la guida per convertire il tuo UEFI in BIOS MBR senza perdita di dati.

Questa guida è stata fatta da me. Inoltre, il blog di riferimento non verrà mai rimosso. Anche se l'ho usato 10 volte senza perdita di dati, ti consiglio di eseguire il backup dei dati prima di utilizzare la mia procedura.


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.