UEFI
Поддержка UEFI в ALT Linux
Цель
Обеспечить возможность совместного использования с ОС, установленными в UEFI-режиме, прямо сейчас (переключение BIOS/UEFI более хлопотно); предоставить возможность использования «железа» вообще без BIOS (legacy mode).
Состояние
В работе, есть промежуточные итоги.
Результат
По состоянию на ноябрь 2012 доступен экспериментальный Live-образ, поддерживающий загрузку в EFI mode и Legacy mode, будучи записанным на CD/DVD-болванку или USB-флэшку. Проверен на ASUS/Gigabyte UEFI и MacBook/MBP EFI.
Также есть пробный графический инсталятор, ныне требующий некоторого внимания и ручной работы для установки.
HOWTO
Приборы и материалы:
- свежий Sisyphus (в т.ч. xorriso 1.2.4+, syslinux-4.04-alt5+ либо 4.06+)
- «простая» live-исошка (например, live-efi с нужными утилитами и live-install, но пока без EFI-загрузчика)
Действия от имени root (может быть удобно записать в скрипт):
cd ${TMP:-/tmp} apt-get install bsdtar dosfstools elilo syslinux xorriso rm -rf ISO mkdir ISO cd ISO wget -O - http://ftp.linux.kiev.ua/pub/Linux/ALT/people/mike/iso/mkimage-profiles/tmp/live-efi-20121112-x86_64.iso | bsdtar -xf - mkdir -p EFI/BOOT cp -a syslinux/alt0/{vmlinuz,full.cz} EFI/BOOT cp -a /usr/lib64/efi/elilo.efi EFI/BOOT/bootx64.efi cat > EFI/BOOT/elilo.conf << EOF prompt timeout="20" default="linux" image="vmlinuz" label="linux" read-only initrd=full.cz append="fastboot live lowmem showopts automatic=method:cdrom ramdisk_size=131072 stagename=live" EOF cd .. rm -rf EFIBOOT mkdir EFIBOOT dd if=/dev/zero of=efiboot.img bs=16384 count=1024 mkfs.vfat efiboot.img mount -o loop efiboot.img EFIBOOT cp -a ISO/EFI EFIBOOT wget -O EFIBOOT/shellx64.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi umount EFIBOOT mv efiboot.img ISO/EFI/ xorriso -as mkisofs -r -V ALT -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \ -partition_offset 16 -J -l -b syslinux/isolinux.bin -c syslinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e EFI/efiboot.img \ -no-emul-boot -isohybrid-gpt-basdat -o live-efi.iso ISO pwd echo rm -rf EFIBOOT ISO
Копия результата выполнения именно этого скрипта доступна здесь (120M).
Проверка
При загрузке в EFI-режиме загрузчиком будет текстовое ELILO, в BIOS-режиме -- синяя менюшка SYSLINUX; после собственно загрузки и логина именем root в EFI-режиме должны отработать команды modprobe efivars; efibootmgr, в BIOS-режиме вторая из них скажет
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables. Try 'modprobe efivars' as root.
ВНИМАНИЕ: не пытайтесь запускать efibootmgr на оборудовании Apple, известны случаи повреждения его firmware таким образом.
Использование
В упомянутом образе есть скрипт live-install, использовать который можно примерно так:
- загружаем полученный live-efi.iso с болванки, флэшки или ещё чего
- проверяем то, что загрузились в EFI mode:
- modprobe efivars
- efibootmgr
- готовим на диске (далее sda) GPT-разбивку, не забываем FAT32-раздел ESP (~100—500 Мб), далее sda1; корень пусть будет sda2:
- fdisk /dev/sda
- [ сносим MBR-разделы ]
- gdisk /dev/sda
- [ создаём GPT ]
- n
- 1
- +100M
- ef00
- n
- 2
- +1G
- 8300 (enter)
- p
- w
- y
- live-install --no-lilo /dev/sda2 /dev/sda2
- mount /dev/sda2 /mnt
- for i in dev proc sys; do mount --bind /$i /mnt/$i; done
- chroot /mnt /bin/bash
- echo "/dev/sda1 /boot/efi vfat defaults 0 0" >> /etc/fstab
- mount /boot/efi
- grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=altlinux --recheck
- update-grub
- umount /boot/efi
- exit
- umount /mnt/{dev,sys,proc,}
- reboot
Возможно применение parted вместо gdisk.
Linkdump
- http://www.rodsbooks.com/efi-bootloaders/index.html
- https://wiki.archlinux.org/index.php/UEFI
- http://www.linuxfoundation.org/news-media/blogs/browse/2012/10/linux-foundation-uefi-secure-boot-system-open-source
- http://en.opensuse.org/KVM/UEFI_Secure_boot_using_qemu-kvm
- http://www.suse.com/blogs/uefi-secure-boot-overview/
- http://www.suse.com/blogs/uefi-secure-boot-plan/
- http://www.suse.com/blogs/uefi-secure-boot-details/
- http://cdimage.debian.org/cdimage/unofficial/efi-development/upload4/
- https://help.ubuntu.com/community/UEFI
- https://wiki.archlinux.org/index.php/UEFI_Bootloaders
- https://felipec.wordpress.com/2012/01/18/efi-adventures/
- http://mjg59.dreamwidth.org/4957.html