Voglio capire cosa sta succedendo
Sviluppatore Rufus qui.
In che modo troppe persone non riescono a capire, perché gli ISO di Linux stanno applicando questo metodo, ma questo è essenzialmente un GRANDE HACK CHIAMATO 'ISOHYBRID' , è che, nella maggior parte dei casi, non puoi semplicemente prendere un'immagine ISO e copiarla byte per byte su un'unità USB e aspettarti che anche questo si avvii.
Questo perché il formato ISO e i file system sottostanti che utilizza (ISO9660
o UDF
) sono progettati per l'avvio ottico, che è una bestia completamente diversa dal normale avvio da HDD o USB. Per prima cosa i supporti ottici, e quindi le (normali) immagini ISO, non hanno una tabella delle partizioni, che è (di solito) essenziale per l'avvio da HDD o USB, e inoltre (di solito) non hanno un record di avvio principale, a.k.a. MBR, essenziale per l'avvio del BIOS.
Ciò significa che, se esegui una copia 1:1 di un regolare ISO, come Windows One, su un disco, e prova ad avviare questo è ciò che accadrà:
- Un sistema BIOS o un sistema UEFI in modalità Legacy/CSM non vedrà alcun MBR, e soprattutto non vedrà il
0x55
0xAA
sequenza negli ultimi 2 byte dell'MBR che indica che un disco è avviabile dal BIOS. Pertanto non sarà in grado di avviare quel disco in modalità BIOS. - Un sistema UEFI (di solito) non monterà
UDF
oISO9660
partizioni da un disco o da un'unità flash, perché, anche se dispone di driver per questi file system, il disco risultante che hai creato mancherà di unMBR
oGPT
tabella delle partizioni. Quando si avvia un disco normale, UEFI è progettato per cercare prima una partizione, quindi cercare un bootloader (ad es./efi/boot/bootx64.efi
) su quella partizione. Quindi, se non c'èMBR
oGPT
tabella delle partizioni sul supporto, che sarà il caso di un normale ISO , quindi non importa se l'ISO contiene un file bootloader, perché il firmware UEFI non sarà in grado di montare la partizione su cui risiede.
Quindi, cosa fanno utility come Rufus quando creano un supporto disco avviabile da un ISO di Windows, che è un'immagine di supporto ottico completamente standard, è:
- Crea una tabella delle partizioni, sia
MBR
oGPT
in base a ciò che l'utente ha selezionato e crea almeno una partizione, che in genere utilizzeràFAT32
oNTFS
come file system (si noti che utilizza file system completamente diversi da quelli utilizzati da un ISO). - Se
MBR
viene utilizzato un bit di codice nelMBR
che individua il boot loader secondario, sul relativoMBR
partizione, che è progettata per avviare l'esecuzione del kernel di Windows, in modalità disco, da quella partizione. Oh, e garantisce anche che il file0x55
0xAA
il marcatore di avvio viene aggiunto alla fine delMBR
in modo che il BIOS veda il disco come avviabile. Quindi copia anche il contenuto dell'ISO su unFAT32
oNTFS
partizione. - Se
GPT
viene utilizzato, Rufus verifica che esista effettivamente un file bootloader UEFI, come/efi/boot/bootx64.efi
(beh, in realtà lo fa prima di te ti permette di selezionare GPT, perché non ha molto senso provare a creare un'unità avviabile GPT se non c'è il bootloader UEFI) e poi lo copia, insieme al resto dei file ISO, tipicamente su unFAT32
partizione, poiché l'avvio da unFAT32
la partizione è un requisito obbligatorio di UEFI (ma ciò non significa che UEFI non possa avviarsi daNTFS
oexFAT
se disponi dei driver UEFI pertinenti, che possono tornare utili se hai un ISO di Windows con un file più grande di 4 GB, poiché FAT32 non può contenere tali file).
Ora, quanto sopra funziona solo quando i bootloader secondari (ovvero quelli che provengono da Windows e che Rufus non modifica) sono progettati per supportare entrambi avvio ottico e normale, che in genere significa che devono gestire sia UDF
o ISO9660
e FAT32
o NTFS
file system, così come le altre differenze che si presentano durante l'avvio da disco o da ottico. Ma Microsoft ha progettato il suo bootloader proprio per questo, che è la cosa intelligente da fare , perché, se il tuo sistema di destinazione è UEFI, significa che tu (di solito, a condizione che il problema della dimensione massima del file di 4 GB di FAT32
non alza la sua brutta testa) non è necessaria un'utilità per convertire un ISO in un USB avviabile, ma puoi semplicemente formattare quell'USB in FAT32 e copiare i file ISO su di esso (copia del file, non byte copy) e hai un supporto avviabile.
E ora che abbiamo esaminato tutto quanto sopra, posso entrare in uno sfogo e spiega perché credo che i manutentori della distribuzione Linux, che di solito sono più intelligenti di così, stiano effettivamente rendendo un cattivo servizio ai loro utenti, anche se stanno cercando di aiutarli:
Quasi tutti le distribuzioni Linux recenti utilizzano un MAJOR HACK chiamato "IsoHybrid", in cui qualcuno è riuscito a trovare un modo per creare un ISO9660
immagine ottica mascherata come una normale immagine del disco, con una tabella delle partizioni, un MBR
e tutto... In altre parole, la maggior parte delle ISO di Linux che trovi in questi giorni sono abusanti il file system ISO9660 per farlo sembrare qualcosa per cui non è mai stato progettato:un doppio disco e un'immagine ottica.
Ovviamente, l'obiettivo è creare un ISO che possa anche essere utilizzato con dd
comando, anche se un ISO non dovrebbe mai essere in grado di funzionare in quel modo. E sono d'accordo che, in teoria, sembra fantastico, perché essere in grado di utilizzare una singola immagine per usi completamente diversi dovrebbe essere fantastico per gli utenti, ma in pratica, questo porta a problemi che spesso vengono trascurati:
- Molti manutentori di distribuzioni Linux non vogliono preoccuparsi di utilizzare un file system secondario che Windows può montare (ad esempio, useranno
ext
come file system "secondario" sopraISO9660
), il che significa che molto delle persone Windows, che stanno creando un'unità avviabile per utilizzare Linux per la prima volta, sono molto confuse sul motivo per cui non possono più accedere al contenuto della propria unità flash. È ancora peggio se "IsoHybrid" include anche una partizione di sistema EFI (ESP) perché questi utenti hanno l'impressione che la loro unità si sia completamente ridotta di dimensioni. Se vai su reddit o altrove, troverai molti post di utenti che sono completamente confusi su cosa sia successo ai loro supporti USB, il che non è una buona prima impressione su Linux... - Poiché molti manutentori di distro Linux si concentrano così tanto sul far funzionare ISOHybrid che ignorano completamente l'opzione di creare un supporto di avvio UEFI semplicemente copiando il contenuto su un
FAT32
partizione formattata, che, in realtà, dovrebbe essere sempre il metodo preferito per creare unità avviabili UEFI (perché di solito è molto meno rischioso formattare una partizione e quindi copiare i file piuttosto che usare ildd
comando). Per questo motivo, abbiamo riscontrato diversi problemi che rendono l'esperienza utente scadente con Manjaro, Ubuntu... creazione di supporti avviabili! - GPT e "ISOHybrid" possono essere problematici in quanto la tabella GPT secondaria verrà vista come danneggiata quando si utilizza
dd
... che in realtà porta a un BSOD su Windows 7 (ma è davvero un bug di Windows piuttosto che un problema ISOHybrid). Tuttavia, non è la migliore esperienza per gli utenti di Windows che creano unità avviabili... - E infine, poiché gli "ibridi ISO" sono presentati come se fossero i media più naturali del mondo (cosa che certamente non sono), le persone come te sono portate a credere che ogni immagine ISO possa essere applicata utilizzando
dd
, quando è l'eccezione piuttosto che la regola. Questo è molto spiacevole, perché crea MOLTA confusione tra gli utenti, con alcuni utenti Linux che dicono alle persone che vogliono creare un supporto di avvio di Windows che dovrebbero essere in grado di usare solodd
quando sicuramente non funzionerà mai! Inoltre, se scegli una ISO di Linux di 10 anni fa, sono abbastanza fiducioso che scoprirai che quasi nessuna di esse può effettivamente essere utilizzata per creare un supporto di avvio utilizzandodd
perché questa cosa "IsoHybrid` è in realtà uno sviluppo recente.
Per quanto ne so, Microsoft non ha intenzione di passare all'"hack" che è ISOHybrid per le loro ISO di Windows, il che significa che è improbabile che tu possa mai usare dd
per creare un supporto USB avviabile da esso, e quindi, se vuoi creare un supporto avviabile di Windows da un ISO puoi:
- (UEFI) È necessario formattare un'unità con un file system da cui Windows può essere avviato (
NTFS
,FAT32
e più recentementeexFAT
) ed estrai i file ISO su di esso. Ora, se usiNTFS
oexFAT
, potresti dover fare anche un po' di lavoro in più... - (BIOS/Legacy) È necessario formattare un'unità con un file system da cui Windows può essere avviato (
NTFS
oFAT32
--exFAT
non funzionerà perché Microsoft non ha mai pubblicato bootloader del BIOS per esso), quindi crea la relativa catena di bootloader, dal codice di avvio MBR ai record di avvio del volume.
In realtà non è così complicato da realizzare, ma richiede un po' più di lavoro rispetto a una copia 1:1 da un file ISO.
Spero di aver risposto alla tua domanda.
dd
non è lo strumento giusto per creare un USB avviabile da Windows. Il modo più semplice è usare woeusb
.
Installa:
sudo apt-get install devscripts equivs gdebi-core
cd WoeUSB
./setup-development-environment.bash
mk-build-deps
sudo gdebi woeusb-build-deps_3.3.1_all.deb
dpkg-buildpackage -uc -b
sudo gdebi ../woeusb_3.3.1_amd64.deb
Ora, la versione del pacchetto è 3.3.1
, in caso di aggiornamento del pacchetto, il comando ./setup-development-environment.bash
stamperà la versione corrente, dovresti sostituirla nei comandi precedenti.
Utilizzo:
Puoi usare la GUI , eseguire woeusbgui
dal terminale. Oppure puoi usare la CLI:
Smonta il dispositivo USB (importante). Quindi esegui:
sudo woeusb -v --device /path/to/windows.iso /dev/sdc