Portál AbcLinuxu, 4. července 2025 16:18

Zápas s (U)EFI na Samsung 900X

4.11.2012 12:02 | Přečteno: 2405× | Výběrový blog | poslední úprava: 8.11.2012 00:27

Potřeboval jsem velmi lehký, ale ne úplně aušusový laptop pro případné cesty (cestování nenávidím, ale občas mi nic jiného nezbývá). Samsung 900X se zdál jako nejlepší volba, byť mi udělal v peněžence řádský průvan :-( Zároveň je to má první mašina s UEFI, takže zde popíšu svůj zápas s ním, pro případ, že se to někomu bude hodit. Myslím, že řada laptopů této generace se chová podobně nebo stejně. Pokud to, co tu píšu, už všichni víte, tak se omlouvám.

Laptop se prodává s předinstalovanými Windows 8, která se snaží uživatele nikam jinam nepustit: po spuštění ihned najedou, stisk vypínacího tlačítka je pouze zahibernuje, systém bootuje vždy z vnitřního disku, a pokud se něco podělá, při restartu se bez ptaní spustí automatická obnova, zkrátka Malý Měkký udělal všechno pro to, aby měl uživatel pocit, že jejich systém je neoddělitelnou součástí laptopu. Ale zbavit se jich přece jen dá.

Mé poznatky:

Disk má z výroby tabulku oddílů typu GPT (starší verze fdisk a spol. to nedokážou načíst, pak je třeba použít parted nebo gdisk). Oddíly jsou:
  1. Oddíl "Windows rescue", cca 500 MiB, formát FAT32, obsahuje EFI binárku, která se použije při automatické obnově widlí, a pomocné soubory. Při normálním startu se nepoužívá.
  2. EFI system partition, ze kterého systém bootuje, cca 300 MiB, formát FAT32. Start systému začíná spuštěním binárky EFI/BOOT/BOOTx64.EFI; všechno ostatní jsou pomocné soubory (několik adresářů a souborů je šalebně pojmenovaných, třeba EFI/Windows/Boot - firmware si jich nevšímá, nevím, jestli tam jsou pro zmatení nepřítele nebo co.)
  3. Systémový oddíl Windows.
  4. Datový oddíl (C:) Windows.
  5. Oddíl "Windows reserved". Pravděpodobně archív souborů pro obnovu.
  6. Další oddíl "Windows reserved".

USB disk pro bootování z EFI

Pro účely instalace se hodí mít USB disk bootovatelný z EFI. Ten lze vyrobit takto:

  1. USB disk rozdělíme pomocí normální DOSovské tabulky oddílů (hádám, že GPT by fungovala taky, ale nezkoušel jsem).
  2. Vytvoříme oddíl, kam přijde binárka EFI s případnými dodatečnými soubory; oddíl musí mít nastaven typ na 0xEF. Nemusí mít nastaven flag "bootable".
  3. Naformátujeme oddíl na FAT32 (pomocí mkfs.vfat -F32).
  4. Binárku, která se má spustit (například EFI Shell), je třeba uložit jako EFI/BOOT/BOOTx64.efi (velikost písmen není podstatná, je to FAT).

EFI Shell

Pro ladění se mi velmi hodil EFI Shell. Podobá se DOSu, takže je to dost hnus, ale umožňuje se pohybovat po filesystému, spouštět EFI aplikace a nastavovat různé věci. Lze ho stáhnout jako součást vývojového kitu pro EFI (soubor Edk 1.06.zip). Předkompilovaná binárka shellu je v Edk/Other/Maintained/Application/UefiShell/bin/x64/Shell_Full.efi a nepotřebuje ke svému běhu žádné další soubory - stačí jen nakopírovat na USB disk jako EFI/BOOT/BOOTx64.efi a mělo by to fungovat.

Samozavedení jádra z EFI

Od verze 3.6.4 (tuším) lze jádro přeložit tak, že funguje současně i jako EFI binárka, kterou lze přímo spustit třeba v EFI Shellu. V konfiguraci jádra je třeba zapnout volbu CONFIG_EFI_STUB. V nejjednodušším případě stačí výsledný soubor vmlinuz zkopírovat do EFI oddílu (opět pod jménem EFI/BOOT/BOOTx64.efi) a jádro při zapnutí ihned nabootuje stejně jako předtím Windows.

Protože takto spuštěné jádro nemá odkud načíst příkazovou řádku (zejména argument root=...), musí se řádka přímo zabudovat do jádra - přinejmenším argument root=/dev/sd... (volba CONFIG_CMDLINE_BOOL=y a CONFIG_CMDLINE=řetězec). Poznámka: Jádro verze 3.7 už umí načíst příkazovou řádku ze souboru, takže tam tento taneček odpadá.

Bootloader

Jako "opravdový" bootloader je možné použít elilo nebo GRUB2 (prý existuje i patchovaný GRUB 1, který umí EFI).

Elilo se chová mnohem lépe než LILO; instaluje se jednoduše zkopírováním binárky na bootovací disk (opět třeba přejmenovat na BOOTx64.efi), k němu je třeba přiložit textovou konfiguraci elilo.conf a soubory jádra (vmlinuz a případně initrd). To je vše. Elilo umí přepínat při startu mezi více jádry, ale neumí chainload, takže Windows nejde takto spustit.

Příklad elilo.conf (obšlehnutý odtud):

prompt
timeout=50
default=2639
#chooser=textmenu

image=vmlinuz-2.6.38-8-generic
        label=linux
        initrd=initrd.img-2.6.38-8-generic
        read-only
        root=/dev/sda4
        append=""

image=bzImage-2.6.39
        label=2639
        initrd=initrd.img-2.6.39
        read-only
        root=/dev/sda4
        append="reboot=a,w"

Odkazy

Dodatek: Díky Tomášovi Chvátalovi (scarabeus) za rady, jak se dostat za bootloader; bez něj bych to dělal ještě měsíc a hrozně bych se u toho nas...

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

4.11.2012 12:28 Bhua
Rozbalit Rozbalit vše EULA
Odpovědět | Sbalit | Link | Blokovat | Admin
Byla tam Windows EULA pri prvnim spusteni?
Bluebear avatar 4.11.2012 13:13 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: EULA
Ano, byla.
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
4.11.2012 18:36 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: EULA
Schválně zda půjde vrátit :-D.
předinstalovanými Windows 8, která se snaží uživatele nikam jinam nepustit
MS dělá všechno proto, aby byl prošetřován EU za bundlování? Zajímavé.
Bluebear avatar 5.11.2012 01:40 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: EULA
Schválně zda půjde vrátit

Omlouvám se, ale to mi za ty nervy nestojí :-( Hádám, že v tomto případě (laptop poměrně značně drahý :-( ) jsou relativně zanedbatelnou položkou.
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
5.11.2012 10:36 Bhua
Rozbalit Rozbalit vše Re: EULA
Ja mam rad EULU, protoze umoznuje laptop si vyzkouset a pak pripadne vratit.
xkucf03 avatar 4.11.2012 12:32 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Odpovědět | Sbalit | Link | Blokovat | Admin
Přidáno do výběru.

A díky za informace, taky mne tohle v blízké době čeká (snad se mi tam ale jednou podaří rozchodit coreboot).
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
4.11.2012 18:40 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Na stejném čipsetu?
xkucf03 avatar 5.11.2012 00:46 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
S jiným (AMD 990FX/SB950), ale taky s UEFI. Nevím, jak to dopadne, ale IMHO je potřeba se aspoň pokusit – podporu nových desek a procesorů by to fakt chtělo.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.11.2012 01:32 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Tak UEFI v corebootu nehraje roli, jakmile vypájíš flash čip :-D (nehledě na to, že dneska by to mělo jít In Circuit, nebo patice).
Grunt avatar 4.11.2012 12:53 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Odpovědět | Sbalit | Link | Blokovat | Admin
Ne. Odmítám.
Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
4.11.2012 15:07 Ondra
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Odpovědět | Sbalit | Link | Blokovat | Admin
tusite jak na tom budou novy distra (jako Fedora 18, atp)?

bude ta instalace na UEFI stejne jednoducha/blbuvzdorna jako doted na tradicnim PC, nebo odted uz budu muset pro nainstalovani GNU/Linuxu delat tohle picovani okolo?

konkretne by me zajmalo, jestli budou umet automaticky bez nastavovani bootovat z USB flashky, kdyz ji strcim do PC s UEFI (aby se nenabootovalo Win8 nebo co tam bude na disku/SSD).
Bluebear avatar 4.11.2012 15:25 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
tusite jak na tom budou novy distra (jako Fedora 18, atp)?

Věřím, že to brzy bude zase dobré. Implementace UEFI jsou ve skutečnosti asi tři, výrobci si je sice můžou upravit, ale to je práce a ta, jak známo, smrdí, takže stačí vyrobit bootovací médium, které podchytí odlišnosti těchto tří a bude zase dobře. :-)
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
4.11.2012 18:34 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Implementace UEFI jsou ve skutečnosti asi tři
Hmm aneb pro lepší kompatibilitu všechno :-D.
Bluebear avatar 5.11.2012 01:45 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Ne, v tomto případě na tom nic zlého není - UEFI má standardizované chování i ABI a tři výrobci dělají své implementace (zatím tedy vím jen o dvou, plus jedna otevřená od Intelu ("Tiano"), ale myslím, že ještě nějaký výrobce se asi objeví).

Název souboru, ze kterého se bootuje, Samsung dodržel přesně - v tom standardu se píše (prý, zatím jsem ho nečetl), že \EFI\BOOT\BOOTx64.EFI je default, ale je na implementátorovi, zda použije nějaký jiný nebo více možností.
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
5.11.2012 02:45 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
No ale pokud mám jeden mrtvej komp a půjčím si od kámoše bootovací disk, tak mě dost nasere, pokud to to bude zrovna ta druhá implementace :-D.
4.11.2012 18:38 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak je velkej UEFI flash čip? Je to pořád ve stejným švábu jako non UEFI BIOSy?

Mohl bys udělat flash dump? :-D
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
xkucf03 avatar 5.11.2012 00:50 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Někde je to 8 MB (64 Mbit) a šváb je to stejný. Dump možná ani nepotřebuješ – např. Asus to má normálně na svém webu mezi aktualizacemi BIOSů.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.11.2012 01:35 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Njn asi jsem už moc paranoidní, například by byla sviňárna zalejt ten čip do epoxy (nebo podobně) a LPC piny táhnout vnitřní vrstvou desky.
xkucf03 avatar 5.11.2012 07:46 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
To jsem si taky říkal, ale zatím doufám, že se výrobci budou chovat rozumně: když si zákazník špatně aktualizuje BIOS/UEFI nebo udělá chybu výrobce, tak se deska pošle do servisu, tam vymění švába za jiného (nebo přeflashují jinde) a je opraveno. Kdyby to nešlo, tak se musí měnit celá deska (ve značkovém servise se s tím nikdo pájet nebude, to by vypadalo neprofesionálně) a buď to zaplatí výrobce nebo zákazník – a pak hrozí, že si novou desku desku koupí u konkurence.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
gtz avatar 5.11.2012 20:48 gtz | skóre: 27 | blog: gtz | Brno
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
No mně něco podobného udělala grafárna (umřel BIOS) a tehdy jsem to poslal do servisu a dostal jsem nazpět novou lepší kartu. Co jsem si tehdy četl diskse někde na serverech tak se to některým kartám stávalo dost často (tehdy to tuším byl nějaký Gainward s Nvidií). No dnes myslím to nikdo moc nezkoumá ve VO se na to někdo podívá zjistí, že je to mrtvé a pošle to dodavateli. No a dodavatel to jednou měsíčně pošle dodavateli venku :-) Takže takové začarované kolečko.
- nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
4.11.2012 19:12 Kvakor
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Odpovědět | Sbalit | Link | Blokovat | Admin
Hmmm, takže je to podobné jako na embedded ARM deskách - tam první oddíl musí být FAT (i když většinou jen FAT16) a na určitém místě (většinou rovnou v rootu) musí být nainstalovaný určitým způsobem pojmenovaný soubor, kerý je buďto rovnou jádro, nebo bootloader.

Dobrá věc je to, že to jde kompletně vypnout, včetně (U)EFI, přístup Samsungu je v tomto případě poměrně pragmatický - Microsoft nemůže nic namítat, přesto je možné instalovat alternativní OS bez toho, aby se museli dělat složité brikule typu vyndání disku nebo nahrávání podepsaného botooloaderu a jeho klíče.

PS: Docela se těším na popis toho, jak komplikované bude dostat Linux (nebo Android) do microsoftího tabletu Surface ... osobně tipuju, že do Vánoc to určitě někdo stihne.
4.11.2012 19:42 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
osobně tipuju, že do Vánoc to určitě někdo stihne.
Nerovná se to vlastně cracknutí UEFI ochrany pro ARM?
Bluebear avatar 5.11.2012 02:04 Bluebear | skóre: 30 | blog: Bluebearův samožerblog | Praha
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Nerovná se to vlastně cracknutí UEFI ochrany pro ARM?

Řekl bych, že podle toho, jakým postupem to cracknou. Pokud se někomu podaří podvrhnout nepodepsaný nebo "jinak podepsaný" bootloader (což implikuje, že daná implementace UEFI ten podpis špatně kontroluje, resp. se dá zmást natolik, že nebere v úvahu podpis), tak by to skutečně bylo cracknutí dané verze dané implementace UEFI.
To mi připomíná, jak jsem si pořídil květináč, že v něm budu mít květinu. Opravdu tam byla, ale potom být přestala...
5.11.2012 02:47 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Zato pokud to půjde třeba přes JTAG, tak je zase secure boot zbytečnej :-D.
msk avatar 5.11.2012 14:32 msk | skóre: 27 | blog: msk
Rozbalit Rozbalit vše Re: Zápas s (U)EFI na Samsung 900X
Odpovědět | Sbalit | Link | Blokovat | Admin
fuj

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.