Chci porozumět tomu, co se děje
Vývojář Rufus zde.
Co příliš mnoho lidí nechápe, protože Linux ISO používají tuto metodu, ale toto je v podstatě HLAVNÍ HACK ZVANÝ 'ISOHYBRID' , je to, že ve většině případů nemůžete jednoduše vzít obraz ISO a zkopírovat jej bajt po bajtu na jednotku USB a očekávat, že se také spustí.
Je to proto, že formát ISO a základní systémy souborů, které používá (ISO9660
nebo UDF
) jsou určeny pro optické bootování, což je úplně jiná bestie než běžné bootování z HDD nebo USB. Jednak optická média, a tedy (běžné) ISO obrazy, nemají tabulku oddílů, která je (obvykle) nezbytná pro bootování z HDD nebo USB, a také (obvykle) nemají Master Boot záznam, a.k.a. MBR, který je nezbytný pro spouštění systému BIOS.
To znamená, že pokud vytvoříte kopii 1:1 běžného ISO, jako je Windows one, na disk a pokuste se zavést toto:
- Systém BIOS nebo systém UEFI v režimu Legacy/CSM neuvidí žádný MBR, a zejména neuvidí
0x55
0xAA
sekvence v posledních 2 bajtech MBR, která označuje, že disk lze zavést systémem BIOS. Proto nebude možné spustit tento disk v režimu BIOS. - Systém UEFI (obvykle) nepřipojí
UDF
neboISO9660
oddíly z disku nebo média flash disku, protože i když má ovladače pro tyto systémy souborů, na výsledném disku, který jste vytvořili, bude chybětMBR
neboGPT
tabulka oddílů. Při spouštění běžného disku je UEFI navrženo tak, aby nejprve hledalo oddíl a poté hledalo bootloader (např./efi/boot/bootx64.efi
) na tomto oddílu. Pokud tedy neexistujeMBR
neboGPT
tabulku oddílů na médiu, což bude případ běžného ISO , pak nezáleží na tom, zda ISO obsahuje soubor bootloaderu, protože firmware UEFI nebude schopen připojit oddíl, na kterém se nachází.
Nástroje jako Rufus tedy dělají při vytváření zaváděcího diskového média z Windows ISO, což je zcela standardní obraz optického média:
- Vytvořte tabulku oddílů, buď
MBR
neboGPT
podle toho, co uživatel vybral, a vytvořte alespoň jeden oddíl, který bude obvykle používatFAT32
neboNTFS
jako souborový systém (všimněte si, že používá zcela odlišné systémy souborů, než jaké používá ISO). - Pokud
MBR
je použit, kousek kódu vMBR
který najde sekundární zavaděč na příslušnémMBR
oddíl, který je navržen tak, aby spustil spouštění jádra Windows v režimu disku z tohoto oddílu. Jo, a také zajišťuje, že0x55
0xAA
zaváděcí značka je přidána na konecMBR
aby BIOS viděl disk jako spouštěcí. Poté také zkopíruje obsah ISO naFAT32
neboNTFS
oddíl. - Pokud
GPT
Rufus ověří, že skutečně existuje soubor bootloaderu UEFI, například/efi/boot/bootx64.efi
(no, ve skutečnosti to dělá ještě předtím, než vám umožní vybrat GPT, protože nemá moc smysl pokoušet se vytvořit zaváděcí jednotku GPT, pokud není zavaděč UEFI) a pak ji zkopíruje spolu se zbytkem souborů ISO, typicky naFAT32
oddíl, od zavedení zFAT32
oddíl je povinným požadavkem UEFI (ale to neznamená, že UEFI nemůže zavést zNTFS
neboexFAT
pokud máte příslušné ovladače UEFI, což se může hodit, pokud máte Windows ISO se souborem větším než 4 GB, protože FAT32 takové soubory nepojme).
Nyní výše uvedené funguje pouze tehdy, když jsou sekundární zavaděče (tj. ty, které pocházejí z Windows a které Rufus nemění) navrženy tak, aby podporovaly obojí optické a běžné spouštění, což obvykle znamená, že potřebují zvládnout obě UDF
nebo ISO9660
a FAT32
nebo NTFS
souborové systémy, stejně jako další rozdíly, které se objevují při bootování z disku vs. Microsoft však svůj zavaděč navrhl přesně pro tento účel, což je chytrá věc , protože pokud je váš cílový systém UEFI, znamená to, že vy (obvykle, pokud problém s maximální velikostí souboru 4 GB FAT32
nestaví svou ošklivou hlavu) nepotřebují nástroj pro převod ISO na zaváděcí USB, ale stačí naformátovat toto USB na FAT32 a zkopírovat na něj soubory ISO (kopírování souboru, ne byte copy) a máte zaváděcí médium.
A teď, když jsme si prošli vším výše uvedeným, můžu se dostat do výslechu a vysvětlete, proč si myslím, že správci linuxových distribucí, kteří jsou obvykle chytřejší, ve skutečnosti svým uživatelům dělají medvědí službu, i když se jim snaží pomoci:
Téměř vše nedávné distribuce Linuxu používají HLAVNÍ HACK s názvem "IsoHybrid", kde se někomu podařilo přijít na způsob, jak vytvořit ISO9660
optický obraz se maskuje jako běžný obraz disku s tabulkou oddílů, MBR
a všechno... Jinými slovy, většina linuxových ISO, které dnes najdete, zneužívá souborový systém ISO9660, aby to vypadalo jako něco, jak nikdy nebylo navrženo:duální disk a optický obraz.
Je zřejmé, že cílem je vytvořit ISO, které umí také použít s dd
příkaz, i když ISO by nikdy nemělo fungovat tímto způsobem. A souhlasím s tím, že to teoreticky zní úžasně, protože možnost používat jeden obrázek pro úplně jiná použití by měla být pro uživatele skvělá, ale v praxi to vede k problémům, které jsou často přehlíženy:
- Mnoho správců distribuce Linuxu se nechce obtěžovat používáním sekundárního souborového systému, který může systém Windows připojit (např. budou používat
ext
jako "sekundární" souborový systém nadISO9660
), což znamená, že hodně Lidé se systémem Windows, kteří vytvářejí spouštěcí jednotku pro první použití Linuxu, jsou velmi zmateni, proč již nemají přístup k obsahu svého flash disku. Je to ještě horší, pokud „IsoHybrid“ obsahuje také EFI System Partition (ESP), protože pak tito uživatelé nabývají dojmu, že se jejich disk úplně zmenšil. Pokud půjdete na reddit nebo jinam, objeví se mnoho příspěvků od uživatelů, kteří jsou naprosto zmatení, co se stalo s jejich USB médiem, což na první dojem z Linuxu moc nedělá... - Vzhledem k tomu, že mnoho správců linuxových distribucí se tolik zaměřuje na to, aby ISOHybrid fungovalo, zcela ignorují možnost vytvoření zaváděcího média UEFI pouhým zkopírováním obsahu na
FAT32
formátovaný oddíl, což by ve skutečnosti mělo být vždy preferovanou metodou vytváření spouštěcích jednotek UEFI (protože formátování oddílu a následné kopírování souborů je obvykle mnohem méně riskantní než použitídd
příkaz). Z tohoto důvodu jsme viděli několik problémů, které způsobují podprůměrnou uživatelskou zkušenost s Manjaro, Ubuntu... Toto je ve skutečnosti můj hlavní bod sporu s "ISOHybrid":Nemělo by sloužit jako záminka k tomu, abych opustil zavedené způsoby vytvoření zaváděcího média! - GPT a "ISOHybrid" mohou být problematické, protože sekundární tabulka GPT bude při použití
dd
považována za poškozenou ... což ve skutečnosti vede k BSOD na Windows 7 (ale to je ve skutečnosti chyba Windows spíše než problém ISOHybrid). Přesto to není nejlepší zkušenost pro lidi se systémem Windows, kteří vytvářejí spouštěcí jednotky... - A konečně, protože "ISOhybridy" jsou prezentovány jako nejpřirozenější média na světě (což rozhodně nejsou), lidé jako vy jsou vedeni k přesvědčení, že každý obraz ISO lze použít pomocí
dd
, pokud jde o výjimku spíše než pravidlo. To je velmi nešťastné, protože to vytváří HODINY uživatelských zmatků, protože někteří uživatelé Linuxu říkají lidem, kteří chtějí vytvořit spouštěcí médium Windows, že by měli být schopni používatdd
kdy to určitě nikdy nebude fungovat! Také, pokud si vyberete jakýkoli Linux ISO z doby před 10 lety, jsem si docela jistý, že zjistíte, že téměř žádný z nich nelze ve skutečnosti použít k vytvoření zaváděcího média pomocídd
protože tato „věc IsoHybrid“ je ve skutečnosti nedávným vývojem.
Pokud vím, Microsoft neplánuje přejít na „hack“, kterým je ISOHybrid pro jejich ISO ISO pro Windows, což znamená, že je nepravděpodobné, že byste někdy mohli používat dd
z něj vytvořit zaváděcí médium USB, a proto, pokud chcete vytvořit spouštěcí médium Windows z ISO, buď:
- (UEFI) Potřebujete naformátovat disk se systémem souborů, ze kterého může systém Windows spouštět (
NTFS
,FAT32
a novějiexFAT
) a extrahujte soubory ISO na to. Nyní, pokud používáteNTFS
neboexFAT
, možná budete muset udělat trochu práce navíc... - (BIOS/Legacy) Potřebujete naformátovat jednotku se systémem souborů, ze kterého může systém Windows spouštět (
NTFS
neboFAT32
--exFAT
nebude fungovat, protože Microsoft pro něj nikdy nezveřejnil zavaděče systému BIOS) a poté vytvořte příslušný řetězec zavaděčů, od spouštěcího kódu MBR po zaváděcí záznamy svazku.
Ve skutečnosti to není tak složité dosáhnout, ale vyžaduje to trochu více práce než kopie 1:1 ze souboru ISO.
Doufám, že to odpoví na vaši otázku.
dd
není tím správným nástrojem k vytvoření zaváděcího USB systému Windows. Nejjednodušší způsob je použít woeusb
.
Instalace:
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
Nyní je verze balíčku 3.3.1
, v případě aktualizace balíčku příkaz ./setup-development-environment.bash
vytiskne aktuální verzi, měli byste ji nahradit ve výše uvedených příkazech.
Použití:
Můžete použít GUI, spustit woeusbgui
z terminálu. Nebo můžete použít CLI:
Odpojte zařízení USB (důležité). Poté spusťte:
sudo woeusb -v --device /path/to/windows.iso /dev/sdc