přejít na obsah přejít na navigaci

Linux E X P R E S, PreLoader a Shim

PreLoader a Shim

tux.png

Když Microsoft prosadil začlenění funkce Secure Boot do UEFI, objevilo se mnoho otázek ohledně možnosti provozovat se Secure Boot i Linux. Neuplynulo mnoho času a do Linuxového světa zavítaly EFI aplikace PreLoader a Shim, které umožňují Linuxu využít bezpečnostní funkce Secure Boot. Pokusím se objasnit vám fungování zmíněných aplikací a uvézt příklady použití.


Úvodem

V tomto článku uvedu pouze příklady použití PreLoaderu a Shimu. Pro pochopení některých pojmů a kroků (EFI System Partition, podepsání EFI aplikace atd.), které zde nebudou popsány, vám doporučuji článek (Ne)upravujte UEFI a Secure Boot, kde je dostatek informací týkající se problematiky Linuxu a Secure Boot.

Rozdíly v aplikacích

Tyto aplikace jsou před-zavaděčem v tom slova smyslu, že zavaděč je například Syslinux, Grub, ELILO, rEFInd atd. Obě aplikace vám umožní spustit Linux pod Secure Boot, ale každá toho dosahuje jinou cestou.)

  • PreLoader využívá hash kontrolní součty a kontroluje přítomnost uživatele.
  • Shim pracuje nejen s hash kontrolními součty, ale i s certifikáty.

Pro správnou funkci potřebují obě aplikace MOK databázi, která podle internetových zvěstí není přítomna v každém produktu s UEFI. Další podmínkou (pokud použijete v článku odkazované verze) je přítomnost certifikátů Microsoftu, které uvolnil pro další stranu.

Poznámka autora: Microsoft používá dva druhy certifikátů. Jeden je určen pro Windows 8 a druhý pro ostatní systémy (dostupný za poplatek). Většina výrobců tak implementuje pouze tyto dva certifikáty do NVRAM, čímž je umožněn start pod Secure Boot nejen Windows 8, ale i OpenSUSE, Fedoře a Ubuntu. Tyto distribuce totiž používají před-zavaděč Shim, který je podepsán zmíněným druhým certifikátem Microsoftu.

PreLoader

Autorem aplikace je Linux Foundation. Před-zavaděč PreLoader potřebuje ke své činnosti aplikaci HashTool.efi, která vytváří hash kontrolní součty pro MOK databázi.

  • PreLoader po svém startu nejprve zobrazí varování o funkci Secure Boot, což je kontrola přítomnosti uživatele. Nedojde-li totiž k potvrzení tohoto varování, ukončí PreLoader svůj start.
  • Po úspěšné kontrole přítomnosti uživatele, hledá PreLoader soubor loader.efi (musí být ve stejném adresáři), a je-li nalezen, ověří jeho kontrolní součet s MOK databází.
  • Shoduje-li se kontrolní součet souboru loader.efi se záznamem v MOK databázi, dojde ke spuštění zmíněného souboru a již žádné další kontroly podpisů neprobíhají.

V opačném případě vás uvítá menu HashTool (musí být ve stejném adresáři) s možností vytvořit hash kontrolní součet pro soubor loader.efi s následným přidáním do MOK databáze.

Tolik k teorii a než vám nabídnu příklady, které napoví více (tápete-li stále), poukážu v několika bodech na vhodnost použití před-zavaděče PreLoader.

  • Pod názvem loader.efi může být zavaděč (syslinux, Grub, LILO atd.), jiná EFI aplikace (EFI Shell, memtest atd.), nebo samotné jádro Linuxu (verze 3.3.0 a novější).
  • Není vhodný pro multiboot Linuxu a Windows 8. Pro tuto činnost jsou lepší aplikace.
  • Výhodou je používání MOK databáze, do které lze zapisovat bez nutnosti nastavovat Setup mode pro Secure Boot (nepotřebujete certifikát pro KEK, DB, PK). MOK databázi lze považovat i za nevýhodu (nemusí být ve všech UEFI).

PreLoader – příklad

Pro zde uvedený příklad jsem použil instalační DVD Debianu 7.2. Příklad je pouze na ukázku, protože instalace a následný provoz Linuxu jsou dvě rozdílné činnosti.

  1. Na prázdném flash disku vytvořte adresář /EFI/Boot.
  2. Do tohoto adresáře zkopírujte PreLoader.efi pod názvem bootx64.efi a HashTool.efi beze změny názvu.
  3. Do DVD mechaniky vložte instalační médium a vyhledejte na něm adresář /EFI/Boot. Debian zde má pouze jediný soubor (bootx64.efi je přejmenovaný Grub2), který je nutné překopírovat pod názvem loader.efi na flash disk do adresáře /EFI/Boot.

Je-li na vašem instalačním DVD médiu v adresáři /EFI/Boot více souborů, pak místo bootx64.efi vyberte pro zkopírování (a přejmenování na loader.efi) soubor grubx64.efi.

  1. Restart a nabootování z flash disku vám po několika ťuknutí do klávesnice zobrazí HashTool menu, kde vyberete volbu Enroll Hash > loader.efi a odsouhlasíte přidání kontrolního součtu do MOK databáze.
  2. Další nabootování z flash disku vám spustí instalaci z DVD v mechanice (Debian a další sice nepodporují Secure Boot, ale instalace funguje bez ohledu na tuto funkci).

V průběhu testování funkce Secure Boot jsem místo flash disku použil ESP a PreLoader uložil do samostatného adresáře. Ani nebylo zapotřebí vytvářet bootovací záznam v UEFI (pomocí efibootmgr nebo bcfg), protože používám rEFInd s automaticky generovaným menu. Kdykoliv jsem vložil instalační DVD Debianu do mechaniky, mohl jsem jej instalovat i se zapnutou funkcí Secure Boot.

Shim

Autorem aplikace je Matthew Garrett. Pro správnou funkci jsou zapotřebí dva soubory, které naleznete v tomto archivu. Shim.efi je před-zavaděčem a MokManager.efi slouží pro uložení certifikátu (formát cer) nebo hash kontrolního součtu do MOKlistu v NVRAM.

  • Shim po svém startu hledá soubor s názvem grubx64.efi (musí být ve stejném adresáři) a ověřuje jeho podpis (hash nebo certifikát) v MOK databázi.
  • Shoduje-li se podpis souboru grubx64.efi se záznamem v MOK databázi, dojde ke spuštění zmíněného souboru. Shim je však schopen požadovat ověření podpisu u aplikací, které spouští soubor grubx64.efi (toto je správný koncept funkce Secure Boot).

Není-li nalezen záznam v MOK databázi, uvítá vás obrazovka s možností přidat certifikát nebo vytvořit hash kontrolní součet s vložením do MOK databáze.

Před uvedením příkladu, opět zmíním vhodnost použití před-zavaděče Shim.

  • Pod názvem grubx64.efi se může skrývat zavaděč nebo EFI aplikace, nikoli však jádro Linuxu.
  • Přidání certifikátu je v některých případech výhodnější než samotný hash kontrolní součet.
  • Shim není vhodný pro multiboot Linuxu s Windows8 (podrobněji vysvětlím v závěru).
  • Databáze MOK je výhodou i nevýhodou, tak jako v případě použití PreLoaderu.

Pro příklad použití Shimu jsem použil flash disk se zavaděčem rEFInd.

  1. Na prázdném flash disku vytvořte adresář /EFI/Boot.
  2. Do tohoto adresáře zkopírujte Shim.efi pod názvem bootx64.efi a MOKManager.efi beze změny názvu.
  3. Dále do stejného adresáře zkopírujte soubor refind_x64.efi pod názvem grubx64.efi a soubor refind.conf-sample pod názvem refind.conf. Přidání celého adresáře drivers_x64 dovoluje rEFIndu nahlédnout do dalších souborových systémů.

    Je lepší mít zde i certifikát tvůrce rEFIndu.

  4. Po nabootování z flash disku se zobrazí jednoduché menu (za předpokladu, že soubor grubx64.efi nemá podpis v MOK), kde vyberete volbu Enroll key from disk. Objeví se dlouhé řetězce, kdy každý z nich odpovídá nějakému zařízení. Lze z nich však rozpoznat, o jaká zařízení se jedná (USB, HDD atd.). Vyberte položku obsahující USB a vyhledejte certifikát pro vložení do MOK. Nalezený certifikát si můžete prohlédnout (stisknete-li 1), nebo jej rovnou přidat (stisknete-li 0 a následně potvrdíte) do MOK databáze.
  5. Další nabootování z flash disku vám spustí zavaděč rEFInd s podporou Secure Boot.

Závěr

V sérii článků jsem se pokusil seznámit vás s problematikou Secure Boot na Linuxu. Než tuto minisérii zakončím, připomenu v několika bodech celou (nejen z pohledu dnešního článku) problematiku.

  • Správný koncept funkce Secure Boot ověřuje všechny spouštěné aplikace až po jádro operačního systému.
  • V dnešním pojednání o EFI aplikacích jsem zmínil nevhodnost PreLoaderu a Shimu pro multiboot Linuxu a Windows 8. Obě jmenované aplikace jsou schopny zajistit start zavaděči rEFIndu, který na rozdíl od Grub2 nemá problém spouštět pod Secure Boot Windows 8 a Linux. Z mého úhlu pohledu je vhodnější přidat certifikát rEFIndu (nebo jiného, vámi preferovaného zavaděče) do DB databáze. Tam totiž patří důvěryhodné certifikáty.

Poznámka autora: Grub2 používaný u distribucí podporujících Secure Boot je pomocí patchů omezen v možnosti načítání dalších modulů a obsahuje pouze základní moduly pro danou distribuci přímo ve svém jádře (grubx64.efi). Tímto je zajištěno, že dodávaný Grub2 spustí pouze podepsané operační systémy, a není tak narušen koncept funkce Secure Boot.

  • Do MOK databáze lze zapisovat bez potřeby nastavit Secure Boot do Setup mode. Což osobně považuji za nebezpečí pro koncept Secure Boot. Byť jsem studiu a testování Secure Boot věnoval jen večery po dobu několika týdnů, zkompiloval jsem si jádro Linuxu s možností přímého ukládání a mazání podpisů v Secure Boot záznamech. Jak dlouho asi potrvá využití takové možnosti a vznikne postup pro autory malwaru, kteří mimochodem mají kapitál, čas a podstatně větší znalosti než já – běžný uživatel.

Poznámka autora: Secure Boot je mladá technologie (2012) a už nyní je v jistých oblastech znát její vliv na Linux. Jádro Linuxu je totiž u některých distribucí omezováno pomocí patchů, tak jako Grub2.

  • Sice Secure Boot ani Windows neprovozuji, přesto se mi při testování multibootu Linuxu a Windows 8 velmi osvědčil zavaděč rEFInd, u kterého jsem zůstal.
  • PreLoader a Shim jsou vhodné pro tvorbu různých výměnných médií. Shim je díky možnosti práce s certifikáty přeci jen výhodnější pro tvorbu komplexnějších médií (Shim > rEFInd > vlastní grub2 = spouštění i z ISO obrazů), kdy vám pro fungování postačí jen jeden vlastní certifikát.

A to je vše. Touto sérií článků jsem sice nevyčerpal možnosti provozu/obcházení/přiohnutí funkce Secure Boot, ale snad se mi podařilo obeznámit vás se základy UEFI a touto funkcí.

Nahoru

Odkazy

Příspěvky

Re: PreLoader a Shim
Jirka 21. 03. 2014, 11:21:51
Odpovědět  Odkaz 
Určitě jde o přínosný článek, jeho formulace je ale vhodná spíš pro jedince, co se zabývají systémem do hloubky.

Možná by nebylo na škodu popsat, jak konkrétně se udělá dual boot na některém současném PC s UEFI a podobnými chuťovkami za předpokladu, že na něm už jsou Windows a chci jen rozdělit stávající disk, přidat Linux a nainstalovat nějaký zavaděč.

Mám nějakých 12 nebo kolik vlastně let mladý PC a na něm je podobná operace téměř triviální... Jednou ale dožije a pak budu muset řešit výše popsané znovu.

Vývoj holt nezastavíš a tak mezitím vznikla řada pakáren, snažících se už tak mrkwonly svět udělat ještě mrkvovitějším, zkoušejících cosi dělat stylem "my víme nejlépe, co je pro uživatele nejlepší" apod.

Takže uvítám user friendly popis, jak z toho ven (dvěstě, třista....).

Děkuji předem.
Lukáš Jelínek Re: Re: PreLoader a Shim
Lukáš Jelínek 21. 03. 2014, 11:34:33
Odpovědět  Odkaz 
Obávám se, že žádný skutečně "user-friendly" popis zatím vytvořit nejde, protože neexistují snadno použitelné nástroje. Proto nezbývá, než vytvořit hardcore popis pro hardcore nástroje. Taky by se mi líbilo, kdyby toto řešil optimálně přímo instalátor linuxové distribuce. Ovšem zatím musíme být rádi aspoň za to, co je k dispozici.
Re: Re: Re: PreLoader a Shim
Jirka 21. 03. 2014, 12:30:48
Odpovědět  Odkaz 
Takže doporučení (pokud se z toho nechci zastřelit) zní nepořizovat PC s UEFI apod.?

Pokud ano, tak tedy zřejmě jedině "repas", čímž se výběr docela zužuje.

Doufám, že se situace brzo změní.

Smrt globalizačním manipulátorům á la MS.
Lukáš Jelínek Re: Re: Re: Re: PreLoader a Shim
Lukáš Jelínek 21. 03. 2014, 13:32:09
Odpovědět  Odkaz 
Doporučení je pořizovat PC, u kterých UEFI není nebo se dá deaktivovat (přepnout do "legacy" režimu). Na x86 to zatím jde, i když je samozřejmě otázka, jak dlouho. Masáž Microsoftu je silná, viz http://www.linuxexpres.cz/novinky/microsoft-zadny-linux-na-arm
Re: Re: Re: Re: PreLoader a Shim
davkol 22. 03. 2014, 12:44:05
Odpovědět  Odkaz 
Bohatě stačí základní deska, u které se dá vypnout Secure Boot.
Re: Re: Re: Re: Re: PreLoader a Shim
zbynek 22. 03. 2014, 20:51:21
Odpovědět  Odkaz 
Plácnutí do vody, Davkole. Takových desek je čím dál méně a časem asi nebudou skoro žádné takové.
Re: Re: Re: Re: Re: Re: PreLoader a Shim
davkol 22. 03. 2014, 22:48:07
Odpovědět  Odkaz 
To se za posledních pár měsíců musela dramaticky změnit situace na trhu, jinak mi to smrdí šikmou plochou.
Re: Re: Re: Re: Re: Re: Re: PreLoader a Shim
Systémový admin 23. 03. 2014, 01:41:04
Odpovědět  Odkaz 
A to ještě nevíš Davkole, že některé desky secure boot mají, ale nejde snadným způsobem vypnout. Dnes častá USB klávesnice totiž u některých desek začne fungovat až po startu systému (tlak MS na zrychlení BIOSu).

Nicméně u zjevného začátečníka, jakým je Davkol (soudě podle jeho příspěvků), tuto znalost ani nepředpokládám. Ale od toho jsme tady, abychom uvedli věci na pravou míru.
Re: Re: Re: Re: Re: Re: Re: Re: PreLoader a Shim
pavlix 25. 03. 2014, 11:28:39
Odpovědět  Odkaz 
IMHO LOL
Re: Re: Re: Re: Re: Re: Re: Re: Re: PreLoader a Shim
kolemjdoucí 25. 03. 2014, 15:41:33
Odpovědět  Odkaz 
Mumlání na úrovni batolete.

Teda tahle diskuse je opravdu srandovní. Asi sem začnu chodit častěji.
Re: Re: Re: Re: Re: Re: Re: Re: PreLoader a Shim
Rovano 28. 03. 2014, 04:58:52
Odpovědět  Odkaz 
Jistě víš, ty systémáku, že mluvíš o běžném trhu základních desek. Jistě tedy víš, že není problém v BIOSu nastavit několik úrovní toho "zrychlení".
Re: Re: Re: Re: Re: PreLoader a Shim
Jirka 21. 03. 2014, 17:46:53
Odpovědět  Odkaz 
No, já budu muset hlavně lépe číst, Vy už jste sem vlastně napsal, jak na dual boot na nových PC:

http://www.linuxexpres.cz/novinky/jak-zprovoznit-dual-boot-windows-8-linux

Sumárně pro mě: jednoznačně budu hledat takový motherboard, jehož BIOS umí legacy mód bootování.
Re: Re: Re: Re: Re: Re: PreLoader a Shim
vlastimil 21. 03. 2014, 19:45:43
Odpovědět  Odkaz 
Jirka napsal: ...budu hledat takový motherboard, jehož BIOS umí legacy mód...

To není tak jednoduché. Co se týče, základních desek pro stolní PC, tak sem to taky mnohdy nenašel.

Co se týče např. notebooků, tak tam to výrobci, popř. prodejci neuvádějí vůbec. Kupuješ vyloženě zajíce v pytli.
Vladislav Konopík Re: Re: Re: Re: Re: Re: PreLoader a Shim
Vladislav Konopík 22. 03. 2014, 11:34:11
Odpovědět  Odkaz 
Osobně jsem se přechodu z BIOSu na UEFI taktéž obával.
Zvěsti na internetu ohledně Linuxu na UEFI hardwaru
nezněly příliš přívětivě, proto jsem se pořízením
nového hardwaru pustil do studia této problematiky.

Po dvouměsíčním večerní testování nejen na mém hardwaru, vzniklo přes
80 stran poznámek, které jsem se pokusil převést do řádků
pro "obyčejné smrtelníky".

Článek http://www.linuxexpres.cz/praxe/ne-upravujte-uefi-a-secure-boot
by měl pomoci osvětlit základní názvosloví ohledně UEFI a také
uvádí možné problémy a jejich řešení. Je zde i popis tvorby
univerzálního nástroje. Po přečtení tohoto článku, by jste měl být
schopen zprovoznit Linux na hardwaru s Windows 8.

Článek http://www.linuxexpres.cz/software/efi-shell
je, jak píšete: "spíš pro jedince, co se zabývají systémem do hloubky."

Článek http://www.linuxexpres.cz/software/preloader-a-shim
ukazuje rozdílnost a použití před-zavaděčů pro vaše Linuxová média.
Navíc se Shimem se setkáte u každé Linuxové distribuce, která podporuje
start pod funkcí SecureBoot.

Více se však dovíte až pořízením nového hardwaru s Windows 8. Teprve poté
Vám mohou nastat komplikace, nebo vše proběhne v naprostém pořádku (záleží
na zvolené distribuci Linuxu - viz první zmíněný článek) a budete
moci mít dualboot Windows a Linux.
PreLoader a Shim
Vojta 22. 03. 2014, 22:30:24
Odpovědět  Odkaz 
Já používám UEFI se secure bootem na několika strojích (notebook HP, stolní počítač s deskou od ASUSu, tower server IBM) a všude mám jen openSUSE. Vše chodí bez problémů.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz