Crea un USB avviabile (UEFI GRUB) per l'installazione di Ubuntu e Windows 7


12

Voglio creare un USB EFI avviabile per installare Ubuntu e Windows 7 (forse con utility come PartedMagic ). L'ho fatto usando MultiSystem in precedenza. Tuttavia, sto usando GPT e l'installazione di Windows deve essere avviata in modalità EFI per l'installazione sul sistema GPT. Suppongo che dovrei usare GRUB EFI invece? Se non esiste un'app come MultiSystem che crea un USB avviabile EFI GRUB, come posso crearne uno da solo?

Suppongo che formatterò la mia USB come GPT e installerò GRUB EFI su di essa (come?). Quindi devo configurare GRUB EFI per caricare l'installazione di Ubuntu e Windows 7 in EFI? Come posso fare queste?

AGGIORNARE

Ecco cosa ho provato

  • Crea 2 partizioni sul mio USB (GPT, 100 + MB FAT32 (/ dev / sdc1, imposta flag di avvio), Il resto FAT32, / dev / sdc2, per le installazioni)
  • Estrai gli iso di Windows 7 e Ubuntu 11.10 nella partizione di installazione, 2 cartelle diverse
  • sudo elilo -b /dev/sdc1Ho provato usando --autoconf --efiboot -v`

jiewmeng@JM:~$ sudo elilo -b /dev/sdc1 --autoconf --efiboot -v
elilo: backing up existing /etc/elilo.conf as /etc/elilo.conf-
Loaded efivars kernel module to enable use of efibootmgr
elilo: Checking filesystem on /dev/sdc1...
elilo: Mounting /dev/sdc1...
e    lilo: 44298KB needed, 78781KB free, 42192KB to reuse
elilo: Installing primary bootstrap /usr/lib/elilo/elilo.efi onto /dev/sdc1...
elilo: Installing /tmp/elilo.k8NWXX on /dev/sdc1...
elilo: Installing /vmlinuz on /dev/sdc1...
elilo: Installing /vmlinuz.old on /dev/sdc1...
elilo: Installing /initrd.img on /dev/sdc1...
elilo: Installing /initrd.img.old on /dev/sdc1...
elilo: Updating EFI boot-device variable...
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: An error occured while updating boot menu, we'll ignore it
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: Installation complete.

Non sudo modprobe efivarsho ricevuto alcun output ma ho avuto lo stesso errore, penso che sia perché non sono stato avviato in EFI Ubuntu?

Quindi, proverò a utilizzare USB Startup Disk Creator per avviare un sistema live in modalità EFI per riprovare

AGGIORNARE

Sono così perso, Windows è il primo errore? Ho formattato e creato un USB avviabile per Ubuntu Alternate con UNetBootIn, e ha fallito anche con lo stesso errore di nessun kernel disponibile. Se avessi creato un desktop Ubuntu non avrei potuto configurare le fonti apt

Il syslog per ubuntu desktop installa http://pastebin.com/CdbUPXax

Sento che è meglio non perdere tempo e tornare presto a MBR ... ciò significa che devo in qualche modo fare il backup di tutti i miei dati 1 ° ... motivo per cui li sto ritardando all'ultima risorsa ... qualche idea?

AGGIORNARE

Ho provato ad avviare Ubuntu 11.10 Alternate in modalità BIOS (Non EFI), installato bene tranne che non riesco a installare un boot loader. Dice errore fatale. Ho quindi installato GRUB avviando l'USB in modalità di ripristino. Funziona ma non si avvia. Dà una schermata vuota all'avvio. Se provo ad accedere alla modalità di recupero (su HDD, dove è installato Ubuntu), la tastiera sembra fallire, il mouse ha comunque luce.


Hai esaminato questo? unetbootin.sourceforge.net
Dustin L.

Easy2Boot potrebbe essere quello che vuoi.
SteveSi,

Le risposte sono le migliori quando sono più di un semplice collegamento o riferimento a qualche potenziale soluzione. Le risposte che mostrano come fare qualcosa o almeno descrivono l'approccio generale sono ciò che stiamo cercando qui.
slm

Risposte:


8

Sto lavorando ad un aggiornamento a questa domanda / risposta.
Questo non funziona senza errori, ma mentre lavoravo con @jiewmeng ho scoperto che l'obiettivo era usare una USB per installare sia Windows che Ubuntu su un disco rigido, UEFI.
Ci è voluto del tempo e ho trovato la soluzione ma dobbiamo pulire la domanda e la risposta.
Forse si può rispondere anche alla domanda originale, ma poiché l'obiettivo era più sul lato dell'installazione il singolo avvio UEFI USB sembrava meno importante.
Attualmente sto usando due chiavette USB una per Windows, una per Ubuntu.
Questo è un WIP da aggiornare al più presto

Ci sto lavorando da alcuni giorni, ora di riserva qua e là e finalmente ho una sola USB, che si avvierà e offrirà l'installazione di Windows 7 e Ubuntu.
La mia configurazione è specifica a 64 bit, è possibile provare a modificare un intall a 32 bit, ma ci sono molte differenze nei nomi dei file. Ti preghiamo di seguire se hai bisogno di 32 bit. Detto ciò...

Non è possibile installare Windows 7 da un USB formattato GPT.
È possibile utilizzare gdisk o parted e creare un GPT USB, che verrà avviato tramite UEFI.
Sarai in grado di configurare il boot manager UEFI per caricare il programma di installazione di Windows da USB ma il programma di installazione cercherà i file e i dati necessari per eseguire l'installazione e non riconoscerà l'USB GPT, mentre troverà un USB MBR .

Tuttavia, ciò è di scarsa importanza poiché UEFI osserva MBR / GPT e la partizione EFI, vedere la voce di Wikipedia su UEFI Booting

Nonostante l'utilizzo di un MBR standard per USB, è possibile installare tramite UEFI su un disco GPT.

Di seguito ha funzionato utilizzando installazioni a 64 bit, su UEFI Asus Sabertooth a 64 bit.
Il firmware su ciascuna scheda madre è molto specifico e ogni firmware UEFI della scheda madre cerca l'avvio UEFI in modo diverso. Potresti avere problemi con la scheda madre che trova i dati di avvio, ma quanto segue funziona sul mio ASUS.

Ecco come ho creato un USB avviabile con una copia installabile del DVD di Windows 7 a 64 bit e un ISO di Ubuntu (in questo esempio, l'iso del desktop a 11 bit a 64 bit).

Usando una USB 16G, che è tutto ciò che avevo a portata di mano ... la
mia USB installata come / dev / sdc, cambia i riferimenti pertinenti al dispositivo appropriato per la tua USB.
Assicurati di avere 7zip installato.

fdisk /dev/sdc
create new MBR, 'o' command
create new partition, part 1, size 8G, type ef, set bootable, write
mkfs.vfat -F32 /dev/sdc1
mkdir /mnt/USB
mount /dev/sdc1 /mnt/USB
insert Windows 7 x64 DVD, again, mine appeared as /media/UDF\ Volume, you need to change references below
# Extract/Copy the entire Windows DVD to the USB
cp -r /media/UDF\ Volume/* /mnt/USB
# I don't know what effect the following rename has, I copied blindly from another webpage.
mv /mnt/USB/sources/ei.cfg /mnt/USB/sources/ei.cfg_
cd /mnt/USB/efi/microsoft/boot/
7z e /mnt/USB/sources/install.wim 1/Windows/Boot/EFI/bootmgfw.efi
cp -r /mnt/USB/efi/microsoft/boot /mnt/USB/efi/
mv /mnt/USB/efi/boot/bootmgfw.efi /mnt/USB/efi/boot/bootx64.efi
# At this point I booted the USB, and installed Windows 7 to a GPT SSD
# Upon reboot I noticed the Windows Boot loader in my UEFI boot list (actually it made itself 1st).
# so, here we have a standalone Windows7 UEFI installer that will function correctly (64bit ASUS, at least).
# Now, on to adding Ubuntu
cd /mnt/USB
7z x /path2iso/ubuntu-11.10-desktop-amd64.iso
# If 7z finds prexisting files with the same name, just allow always overwrite
# (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? A

# At this point I booted the USB, and installed Ubuntu x64 to a GPT SSD
# we have a standalone Ubuntu 64bit installer that install Ubuntu 64

# Now, on to add a boot manager that will allow us to select between Windows 7 and Ubuntu

# Get the target UUID of the USB partition, using either blkid or the following command
grub-probe --target=fs_uuid /mnt/USB/efi/Microsoft/Boot/bootmgfw.efi  
will print YOUR_UUID # Substitute into the following references to YOUR_UUID

# Append the following menuentry to /mnt/USB/boot/grub/x86_64-efi/grub.cfg

menuentry "Microsoft Windows x86_64 UEFI-GPT Setup" {
    insmod usbms  
    insmod part_gpt  
    insmod part_msdos  
    insmod fat  
    insmod search_fs_uuid  
    insmod chain  
    search --fs-uuid --no-floppy --set=root YOUR_UUID # <- CHANGE THIS TO YOUR UUID
    chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi  
}

E voilà! Una chiavetta USB funzionante che utilizza grub come boot manager, consentendo l'installazione su dischi GPT con installazione UEFI.

Se hai un errore, non esitare a inviarmi un messaggio e lo esaminerò.


Ho avviato correttamente Windows Installer al punto " A questo punto ho avviato l'USB e ho installato Windows 7 ". Tuttavia quando grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi 4983-DA78provo ottengo "Argomento extra sconosciuto" 4983-DA78 ".
Jiew Meng,

L'esecuzione di grub-probe fornisce l'UUID da utilizzare. Deve quindi essere sostituito nel seguente testo.
nato il

il comando è solo grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi No args. Il valore '4983-DA78' è il tuo UUID che viene restituito da grub-probe, per poterlo utilizzare nel seguente testo come YOUR_UUID
bsd,

installato bene Windows ma quando ho provato Ubuntu non dice kernel, qualche idea?
Jiew Meng,

Hai installato Ubuntu su un computer su cui era già installato Windows 7 tramite la chiavetta USB UEFI?
bsd

3

Farò del mio meglio per rispondere alla domanda, spero di portarti nella giusta direzione.

Come già sapete, l'installazione di Win7 x64 da GPT è possibile solo da EFI. Ancora peggio, è stato impedito l'utilizzo di qualsiasi ibrido, poiché Win7 x64 tratta qualsiasi disco ibrido come un MBR legacy. Quindi devi rietichettare / ripartizionare la tua USB come GPT. Questo tipo di installazione non è preferibile per un dispositivo USB, considerando i problemi di portabilità. Non sto dicendo di non crearne uno, non mi aspetto che esistano strumenti automatizzati. In realtà credo che potresti essere in grado di utilizzare il multisistema, dopo aver formattato l'unità. Se Grub2 installato automaticamente non ha il supporto EFI / GPT, sovrascriverlo con la versione corretta di Grub2.

Quindi suppongo che potresti dover eseguire manualmente una parte dell'installazione, che nella sua interezza va oltre lo scopo di questa risposta. Anche se dovrei essere in grado di iniziare ...

Utilizzando una versione corrente di parted, rietichettare l'unità con GPT. Supponendo che il disco si trovi in ​​/ dev / sdc,

 parted -s /dev/sdc mklabel gpt

Ora è necessario partizionare l'unità, preferibilmente una USB dovrebbe essere un singolo primario. Vado sempre con FAT32, per i miei USB avviabili.

parted -s /dev/sdc mkpart primary fat32 0 -1

parted mkpartnon crea il FS, come mkpartfsfarebbe. Il partedDOC raccomanda di utilizzare l'appropriato mkfs, al contrario parteddel supporto integrato.

mkfs.vfat /dev/sdc1

L'unità è ora pronta per gestire i dati. A questo punto spero che tu possa usare il multisystem, per configurare il tuo disco.

Una volta che hai finito con tutto ciò ... Dobbiamo installare Grub2, ovviamente intendiamo mantenere la configurazione. Il multisistema potrebbe avere la possibilità di avviarsi da EFI, ma dovrai confondere con la configurazione del modulo a prescindere.

La configurazione di Grub2 è situato in, boot/grub/grub.cfg. Dovresti vedere alcuni dei moduli commentati. Ne ho visto uno relativo a GPT, ma non sono sicuro di EFI. Vorrei cercare e fare alcuni test, considera la lettura di alcuni dei documenti di Grub2.

Se hai ancora problemi, commenta con domande di follow-up.


2

Inizia con la risposta di bdowning sopra, quindi continua qui per aggiungere Parted Magic.

Esistono un paio di modi per risolvere questo problema, ma il più semplice è copiare la directory pmagic dall'ISO Parted Magic alla radice del disco USB, quindi aggiungere una voce di menu:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
  linux /pmagic/bzImage
  initrd /pmagic/initrd.img
}

(Potrebbe essere necessario leggere il manuale di grub2 per farlo funzionare completamente; ho usato grub1 quando l'ho fatto l'altro giorno e i file di configurazione sono diversi.)

Il rovescio della medaglia qui è che stai mescolando i file per Windows, Ubuntu e ora Parted Magic in un singolo filesystem. Peggio ancora, li abbiamo inseriti direttamente nella partizione di sistema EFI. Funziona, ma ovviamente potrebbe non funzionare per ogni combinazione di sistemi operativi, quindi ciò che dovremmo davvero fare è creare una partizione separata sull'unità per ciascun sistema operativo. Per fare ciò è necessario dire a grub di cercare il giusto filesystem, cosa che può fare guid. Ogni file system ottiene una guida unica quando viene creato, quindi dovrai usare grub-probe (o strumenti simili) per trovare quella guida. Quindi inseriscilo in un comando di ricerca nella configurazione di grub:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
    search --no-floppy --fs-uuid --set 8d2acb74-5216-4696-90a8-c76f92d5e4ee
    linux /pmagic/bzImage
    initrd /pmagic/initrd.img
}

Spero che sia di aiuto.


Il multiboot funzionerà, ma nella risposta di bdowning, quando provo a installare Ubuntu, ottengo Kernel non disponibile (alternativo) o non riesco a configurare errori apt (desktop) (vedi post e commenti di bdowning), qualche idea su come risolvere? Chattiamo
Jiew Meng

2

Nelle macchine non UEFI, possiamo usare GRUB2 per rendere avviabile la chiavetta USB. Quindi, possiamo usare il comando 'ntldr' in GRUB2 per avviare Windows da USB.

menuentry 'Install Windows 8' {
 ntldr /bootmgr
}

Vedi la risposta completa sul mio blog Creazione di una USB avviabile da Windows da Linux


1
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui una descrizione più dettagliata della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare quasi inutili se il collegamento si interrompe.
G-Man dice "Reinstate Monica" il

1

Perché preoccuparsi di GRUB2? Complica solo le cose. Basta usare il metodo EFI STUB per avviare il kernel Linux dall'ESP aggiungendo una Shell UEFI nell'ESP.


Bello sapere. Nel mio caso specifico (vecchio macbook pro) non funziona, perché Apple ha ribattezzato questa schifezza proprietaria in "EFI" e afferma che il suo bootloader è un EFI. In realtà, si tratta di un bootloader personalizzato senza buggy, privo di documenti, in grado di avviare solo osx e windows. Quindi, ho installato LILO in una delle partizioni e mentire a questo bootloader che si tratta di un Windows. Quindi funziona. Pertanto, "EFI" avvia LILO in modalità di emulazione BIOS e LILO avvia il kernel.
Peter - Ripristina Monica il
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.