Chystám se koupit základní desku Asus s firmwarem EFI a chtěl jsem se připravit na instalaci Windows a Debianu, jakmile dorazí hardware. Doufal jsem, že někdo, kdo se vydal touto cestou, by mi mohl dát pár rad.
Jaké přípravy bych měl udělat, než se pokusím nainstalovat Windows 7 a Debian na nový systém založený na UEFI?
Přijatá odpověď:
UPRAVIT: Když jsem napsal tuto odpověď, velmi málo distribucí bylo dodáno s jádrem nakonfigurovaným EFI_STUB, takže bylo nutné vytvořit vlastní. V současné době většina distribucí dodává vhodně nakonfigurované jádro a vlastní sestavení již není vyžadováno. V tomto případě sekce „Nastavení diskových oddílů“ a „Nastavení věcí“ jsou ty zajímavé, „Požadavky“ a „Kompilace jádra“ lze přeskočit.
Nevím, jak Windows zachází s UEFI, ale ze strany Debianu je to docela
přímočaré.
Nastavte své oddíly
Použijte schéma oddílů GPT, nikoli MBR.
Ke spuštění z oddílu GPT s UEFI je vyžadován vyhrazený spouštěcí oddíl,
nazývaný SYSTÉMOVÝ ODDĚL EFI (ESP). Není to povinné, ale nejvíce
kompatibilním způsobem je použití oddílu FAT32. Velikost 200 MiB by měla být v pořádku
pro většinu případů.
Chcete-li zaregistrovat oddíl jako ESP, musí být označen příznakem boot
příznak.
Na rozdíl od schémat MBR se příznak spouštění používá pouze k označení ESP,
nikoli oddílů, ze kterých lze zavést systém.
UEFI používá adresářovou strukturu EFI<vendor><application>.efi
k ukládání
aplikací UEFI. Oddělovač adresářů je označen zpětným lomítkem , a to i na
Linuxu. může být název distribuce, skutečná hodnota není relevantní
pro UEFI.
Aplikace mohou být systémové nástroje, jako je kontrola paměti nebo prostředí UEFI. Může to být také
zavaděč OS nebo samotný operační systém. Tyto aplikace
musí být zaregistrovány v UEFI, aby je bylo možné spustit při spouštění.
Požadavky
Verze linuxového jádra>=3.3 lze načíst přímo pomocí UEFI. Jádro může fungovat jako svůj vlastní zavaděč. Toto se nazývá EFISTUB . Jsou zapotřebí následující konfigurace jádra.
CONFIG_EFI=y CONFIG_EFI_PARTITION=y CONFIG_EFI_STUB=y CONFIG_RELOCATABLE=y CONFIG_FB_EFI=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_EFI_VARS=m
Jádro s touto konfigurací zatím není ve stabilní verzi Debianu. Můžete si buď
upéct vlastní jádro, nebo použít to z experimentálního stromu. V tom případě můžete přeskočit další odstavec.
Kompilace jádra
(pravděpodobně už není potřeba, viz úprava)
Pokud se rozhodnete zkompilovat jádro, zde jsou krátké pokyny, jak na to. Pokud narazíte na problémy, je k dispozici spousta informací o tom, jak zkompilovat jádro.
Získání zdroje
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Podívejte se na jednu konkrétní verzi
git checkout v3.6
Konfigurace jádra
make menuconfig
Proveďte nastavení, která jsou ve vašem systému potřebná, nebo jej nechte tak, jak je
, pokud nemáte co upravovat. Tím se zapíše konfigurace jádra
do souboru .config
.
Ujistěte se, že jsou nastavena nastavení z předchozího odstavce. Také
dává smysl vybrat CONFIG_INPUT_EVBUG=n
. V opačném případě budou vaše protokoly
plné GiB nevyžádané pošty.
Vytváření jádra
INSTALL_MOD_STRIP=1 make-kpkg --uc --us binary-arch
Balíčky jsou vytvořeny v nadřazeném adresáři.
Instalace jádra
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Vytváření initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 je verze jádra. Výchozí je běžící jádro,
což není dobrá volba, protože stále používáte staré
jádro.
Nastavení věcí
Aby bylo možné zavést linuxové jádro, musí být zkopírováno do ESP společně
s initramfs. Vzhledem k tomu, že ESP je připojeno na /boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi /boot/efi/EFI/debian/initrd.img-3.6.0
POZNÁMKA: Pro zajištění kompatibility s většinou systémů je přípona efi
musí být
přidán do jádra.
Nyní lze jádro zaregistrovat v UEFI. Používáme nástroj efibootmgr
pro
to.
echo "root=UUID=3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype=ext4 add_efi_memmap initrd=\EFI\debian\initrd.img-3.6.0" | iconv -f ascii -t ucs2 | efibootmgr --create --gpt --disk /dev/sda --part 4 --label "Debian Linux kernel 3.6.0" --loader "\EFI\debian\vmlinuz-3.6.0" --write-signature --append-binary-args -
Argument --disk
je zařízení, kde sídlí jádro, nikoli ESP. --part
je číslo oddílu, kde se nachází jádro. --label
je položka
v spouštěcí nabídce UEFI.
Chcete-li zobrazit seznam dostupných položek, stačí spustit efibootmgr
bez
argumentů. Syntaxe pro odstranění konkrétní položky
efibootmgr -b entry (hex) -B
například:
efibootmgr -b 001a -B
Tyto pokyny se nezabývají případem aktualizace jádra. Jádro a initramfs nejsou automaticky zkopírovány do ESP. To lze provést pomocí krátkého skriptu, který zkopíruje jádro a initramfs do ESP a spustí efibootmgr
. Tento skript lze umístit do /etc/kernel/postinst.d
se spustí automaticky po aktualizaci jádra.
Poznámka: Správce spouštění jako GRUB není potřeba, jako správce spouštění funguje samotné UEFI.
To je vše, co potřebujete ze strany Linuxu, nevím, co je potřeba k přidání
Windows.