EDITAR: Quando escrevi esta resposta, poucas distribuições foram enviadas com um kernel configurado para EFI_STUB, de modo que era necessário construir um personalizado. Atualmente, a maioria das distribuições envia um kernel adequadamente configurado e uma compilação personalizada não é mais necessária. Nesse caso, as seções “Configurar suas partições” e “Configurando as coisas” são interessantes, “Requirements” e “Compiling the kernel” podem ser ignoradas. / p>
Eu não sei como o Windows lida com a UEFI, mas do lado do Debian é bonito simples.
Configure suas partições
Use o esquema de partição GPT, não o MBR.
Para inicializar a partir de uma partição GPT com UEFI, uma partição de inicialização dedicada é obrigatória, chamado de EFI SYSTEM PARTITION (ESP). Não é obrigatório, mas o mais maneira compatível é usar uma partição FAT32. Um tamanho de 200 MiB deve estar bem para a maioria dos casos.
Para registrar a partição como um ESP, ela deve ser marcada com o sinalizador boot
.
Ao contrário dos esquemas MBR, o flag de inicialização é usado apenas para indicar o ESP,
não as partições para poder arrancar a partir.
UEFI usa uma estrutura de diretório \EFI\<vendor>\<application>.efi
para armazenar
Aplicativos UEFI. Um separador de diretório é denotado por uma barra invertida , mesmo em
Linux. pode ser um nome de distribuição, o valor real não é relevante
para o UEFI.
Os aplicativos podem ser utilitários do sistema, como verificadores de memória ou um shell UEFI. isto também pode ser um carregador do sistema operacional ou o próprio sistema operacional. Essas aplicações precisa ser registrado no UEFI para poder ser lançado no momento da inicialização.
Requisitos
A versão do kernel do Linux > = 3.3 pode ser carregada diretamente pelo UEFI. O kernel pode atuar como seu próprio carregador. Isso é chamado EFISTUB . As seguintes configurações de kernel são necessárias.
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
Um kernel com esta configuração não está no Debian estável ainda. Você também pode assar seu próprio kernel ou usar o da árvore experimental, nesse caso, você pode pular o próximo parágrafo.
Compilando o kernel
(provavelmente não é mais necessário, veja editar)
Se você decidir compilar o kernel, aqui estão instruções breves de como fazer isso. Se você tiver problemas, há muitas informações disponíveis sobre como compilar um kernel.
Obtendo a fonte
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Confira uma versão específica
git checkout v3.6
Configurando o kernel
make menuconfig
Faça as configurações necessárias no seu sistema ou deixe-as como
é se você não tem nada para personalizar. Isto escreve o kernel
configuração para o arquivo .config
.
Verifique se as configurações do parágrafo anterior estão definidas. Isso também
faz sentido selecionar CONFIG_INPUT_EVBUG=n
. Caso contrário, seus logs
será preenchido com GiB de lixo.
Criando o kernel
INSTALL_MOD_STRIP=1 make-kpkg --uc --us binary-arch
Os pacotes são criados no diretório pai.
Instalando o kernel
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Criando initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 é a versão do kernel. O padrão é o kernel em execução, o que não é uma boa escolha, já que você ainda está executando o antigo kernel.
Configurando as coisas
Para poder inicializar o kernel do Linux, ele deve ser copiado para o ESP juntos
com o initramfs. Dado que o ESP está montado em /boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi /boot/efi/EFI/debian/initrd.img-3.6.0
NOTA: Para garantir compatibilidade com a maioria dos sistemas, a extensão efi
tem que
ser adicionado ao kernel.
Agora, o kernel pode ser registrado no UEFI. Usamos a ferramenta efibootmgr
para
isso.
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 -
O argumento de --disk
é o dispositivo em que o kernel reside, não o ESP.
--part
é o número da partição em que o kernel reside. --label
é o
entrada no menu de inicialização do UEFI.
Para ver uma lista das entradas disponíveis, basta lançar efibootmgr
sem
argumentos. Sintaxe para excluir uma entrada específica
efibootmgr -b entry (hex) -B
por exemplo:
efibootmgr -b 001a -B
Estas instruções não lidam com o caso de uma atualização do kernel. O kernel e o initramfs não são copiados automaticamente para o ESP. Isso pode ser feito usando um script curto que copia o kernel e o initramfs para o ESP e executa efibootmgr
. Este script pode ser colocado em /etc/kernel/postinst.d
para ser iniciado automaticamente após a atualização do kernel.
Observação: Um gerenciador de inicialização como o GRUB não é necessário, o próprio UEFI age como um gerenciador de inicialização.
Isso é tudo que você precisa do lado do Linux, eu não sei o que é preciso para adicionar Janelas.