GNU/Linux >> Znalost Linux >  >> Linux

Debian:vytvoření zaváděcího instalačního USB disku Windows 10 pomocí terminálu (dd)

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 nebo ISO9660 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ět MBR nebo GPT 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 neexistuje MBR nebo GPT 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 nebo GPT podle toho, co uživatel vybral, a vytvořte alespoň jeden oddíl, který bude obvykle používat FAT32 nebo NTFS 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 v MBR který najde sekundární zavaděč na příslušném MBR 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, že 0x55 0xAA zaváděcí značka je přidána na konec MBR aby BIOS viděl disk jako spouštěcí. Poté také zkopíruje obsah ISO na FAT32 nebo NTFS 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 na FAT32 oddíl, od zavedení z FAT32 oddíl je povinným požadavkem UEFI (ale to neznamená, že UEFI nemůže zavést z NTFS nebo exFAT 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 nad ISO9660 ), 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žívat dd 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ěji exFAT ) a extrahujte soubory ISO na to. Nyní, pokud používáte NTFS nebo exFAT , 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 nebo FAT32 -- 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

Linux
  1. Nainstalujte Linux Mint s Windows 8 | Duální spouštění Windows 8 a Linux Mint 12

  2. Nainstalujte Javu v Ubuntu 20.10 pomocí Terminálu

  3. Vytvoření spouštěcí jednotky USB z počítače pomocí souboru .iso na MAC

  1. Jak vytvořit zaváděcí USB disk pomocí příkazu dd

  2. Jak vytvořit spouštěcí obraz Windows 10 v Debianu?

  3. Fedora:Vytvořte zaváděcí USB systém Windows 8.1

  1. Duální bootování Windows a Linux pomocí UEFI

  2. Jak duální bootování Windows 10 a Debian 10

  3. Jak nainstalovat základní OS vedle Windows 10 [Krok za krokem]