Estoy a punto de comprar una placa base Asus con firmware EFI y quería prepararme para instalar Windows y Debian una vez que llegue el hardware. Tenía la esperanza de que alguien que haya seguido este camino me pudiera dar algunos consejos.
¿Qué preparativos debo hacer antes de intentar instalar Windows 7 y Debian en un nuevo sistema basado en UEFI?
Respuesta aceptada:
EDITAR: Cuando escribí esta respuesta, muy pocas distribuciones se enviaron con un kernel configurado con EFI_STUB, por lo que uno tuvo que crear uno personalizado. Hoy en día, la mayoría de las distribuciones envían un kernel configurado adecuadamente y ya no se requiere una compilación personalizada. En este caso las secciones “Configura tus particiones” y “Configuración” son los interesantes, "Requisitos" y "Compilación del kernel" se pueden omitir.
No sé cómo maneja Windows UEFI, pero desde el lado de Debian es bastante
sencillo.
Configura tus particiones
Utilice el esquema de partición GPT, no MBR.
Para arrancar desde una partición GPT con UEFI, se requiere una partición de arranque dedicada,
llamada PARTICIÓN DEL SISTEMA EFI (ESP). No es obligatorio, pero la forma más
compatible es usar una partición FAT32. Un tamaño de 200 MiB debería estar bien
para la mayoría de los casos.
Para registrar la partición como ESP, debe marcarse con boot
bandera.
A diferencia de los esquemas MBR, la bandera de arranque solo se usa para indicar el ESP,
no las particiones desde las que se puede arrancar.
UEFI utiliza una estructura de directorios EFI<vendor><application>.efi
para almacenar
aplicaciones UEFI. Un separador de directorio se indica con una barra invertida , incluso en
Linux. podría ser un nombre de distribución, el valor real no es relevante
para la UEFI.
Las aplicaciones pueden ser utilidades del sistema como comprobadores de memoria o un shell UEFI. También puede ser un cargador de sistema operativo o el propio sistema operativo. Estas aplicaciones
deben estar registradas en UEFI para poder iniciarse en el momento del arranque.
Requisitos
UEFI puede cargar directamente la versión del kernel de Linux>=3.3. El núcleo puede actuar como su propio cargador. Esto se llama EFISTUB . Se necesitan las siguientes configuraciones de kernel.
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
Un núcleo con esta configuración aún no está en Debian estable. Puede
hornear su propio kernel o usar el del árbol experimental; en ese caso, puede omitir el siguiente párrafo.
Compilando el núcleo
(probablemente ya no sea necesario, vea editar)
Si decide compilar el núcleo, aquí hay instrucciones breves sobre cómo hacerlo. Si tiene problemas, hay mucha información disponible sobre cómo compilar un kernel.
Obtener la fuente
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Echa un vistazo a una versión en particular
git checkout v3.6
Configuración del núcleo
make menuconfig
Realice las configuraciones necesarias en su sistema o déjelo como está
si no tiene nada que personalizar. Esto escribe la configuración del kernel
en el archivo .config
.
Asegúrese de que la configuración del párrafo anterior esté establecida. También
tiene sentido seleccionar CONFIG_INPUT_EVBUG=n
. De lo contrario, sus registros
se llenarán con GiB de basura.
Núcleo de construcción
INSTALL_MOD_STRIP=1 make-kpkg --uc --us binary-arch
Los paquetes se crean en el directorio principal.
Instalando el núcleo
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Construyendo initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 es la versión del kernel. De forma predeterminada, se ejecuta el kernel,
lo cual no es una buena opción, ya que aún está ejecutando el antiguo
kernel.
Configurando las cosas
Para poder iniciar el kernel de Linux, debe copiarse en el ESP junto
con initramfs. Dado que el ESP está montado en /boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi /boot/efi/EFI/debian/initrd.img-3.6.0
NOTA: Para garantizar la compatibilidad con la mayoría de los sistemas, la extensión efi
tiene que
agregarse al kernel.
Ahora el kernel se puede registrar en la UEFI. Usamos la herramienta efibootmgr
por
eso.
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 -
El argumento de --disk
es el dispositivo donde reside el kernel, no el ESP. --part
es el número de partición donde reside el kernel. --label
es la entrada
en el menú de inicio de UEFI.
Para ver una lista de las entradas disponibles, simplemente inicie efibootmgr
sin
argumentos. Sintaxis para eliminar una entrada en particular
efibootmgr -b entry (hex) -B
por ejemplo:
efibootmgr -b 001a -B
Estas instrucciones no manejan el caso de una actualización del kernel. El kernel e initramfs no se copian automáticamente al ESP. Esto se puede hacer usando un script corto que copia el kernel e initramfs al ESP y ejecuta efibootmgr
. Este script se puede colocar en /etc/kernel/postinst.d
para ser lanzado automáticamente después de que el kernel haya sido actualizado.
Nota: No se necesita un administrador de arranque como GRUB, el propio UEFI actúa como administrador de arranque.
Eso es todo lo que necesita del lado de Linux, no sé lo que se necesita para agregar
Windows.