O que devo fazer antes de inicializar o Windows 7 e o Debian na EFI?

10

Estou prestes a comprar uma placa-mãe Asus com firmware EFI e queria me preparar para instalar o Windows e o Debian assim que o hardware chegar. Eu esperava que alguém que seguisse esse caminho pudesse me dar algumas dicas.

Que preparativos devo fazer antes de tentar instalar o Windows 7 e o Debian em um novo sistema baseado em UEFI?

Mr. Shickadance
fonte

Respostas:

8

EDIT: Quando escrevi esta resposta, poucas distribuições foram enviadas com um kernel configurado para EFI_STUB; portanto, foi necessário criar um personalizado. Atualmente, a maioria das distribuições envia um kernel configurado adequadamente 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 as mais interessantes, “Requisitos” e “Compilando o kernel” podem ser puladas.

Não sei como o Windows lida com UEFI, mas do lado do Debian é bem direto.

Configure suas partições

Use o esquema de partição GPT, não MBR.

Para inicializar a partir de uma partição GPT com UEFI, é necessária uma partição de inicialização dedicada, chamada EFI SYSTEM PARTITION (ESP). Não é obrigatório, mas a maneira mais compatível é usar uma partição FAT32. Um tamanho de 200 MiB deve ser bom para a maioria dos casos.

Para registrar a partição como um ESP, ela deve ser sinalizada com a bootsinalização. Ao contrário dos esquemas MBR, o sinalizador de inicialização é usado apenas para indicar o ESP, não as partições para as quais é possível inicializar.

O UEFI usa uma estrutura de diretórios \EFI\<vendor>\<application>.efipara armazenar aplicativos UEFI. Um separador de diretório é indicado por uma barra invertida , mesmo no Linux. pode ser um nome de distribuição, o valor real não é relevante para a UEFI.

Os aplicativos podem ser utilitários de sistema, como verificadores de memória ou um shell UEFI. Também pode ser um carregador de SO ou o próprio sistema operacional. Esses aplicativos precisam ser registrados na UEFI para poderem ser iniciados no momento da inicialização.

Exigências

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 do 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 ainda não está estável no Debian. Você 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 breves instruções sobre 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

fazer menuconfig

Faça as configurações necessárias em seu sistema ou deixe como está, se você não tiver nada para personalizar. Isso grava a configuração do kernel no arquivo .config.

Verifique se as configurações do parágrafo anterior estão definidas. Também faz sentido selecionar CONFIG_INPUT_EVBUG=n. Caso contrário, seus logs serão preenchidos com GiB de lixo eletrônico.

Construindo o kernel

INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binário-arco

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

Construindo 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, pois você ainda está executando o kernel antigo.

Configurando as coisas

Para poder inicializar o kernel do Linux, ele deve ser copiado para o ESP junto 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 a compatibilidade com a maioria dos sistemas, a extensão efideve ser adicionada ao kernel.

Agora o kernel pode ser registrado no UEFI. Nós usamos a ferramenta efibootmgrpara isso.

eco "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 \
    --crio \
    --gpt \
    --disk / dev / sda \
    --part 4 \
    --label "Kernel Debian Linux 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é a entrada no menu de inicialização UEFI.

Para ver uma lista das entradas disponíveis, basta iniciar efibootmgrsem argumentos. Sintaxe para excluir uma entrada específica

efibootmgr -b entrada (hex) -B

por exemplo:

efibootmgr -b 001a -B

Essas instruções não tratam do 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 é executado efibootmgr. Este script pode ser colocado /etc/kernel/postinst.dpara ser iniciado automaticamente após a atualização do kernel.

Nota: Não é necessário um gerenciador de inicialização como o GRUB, o próprio UEFI atua como um gerenciador de inicialização.

É tudo o que você precisa do lado do Linux, não sei o que é necessário para adicionar o Windows.

Marco
fonte
2

Certifique-se de que UEFI não bloqueie o Linux fora da sua máquina; provavelmente existe uma configuração nesse sentido no BIOS. Verifique e verifique com certeza. Gostaria de verificar novamente este ponto com o manual e com o fabricante, se necessário.

Houve uma discussão prolongada sobre isso; O ZDNet teve vários artigos. Aqui está um artigo de 21 de setembro de 2011 e outro de 23 de setembro .

Em segundo lugar, com base em dados históricos, convém instalar o Windows primeiro. Tradicionalmente, o Windows apenas assume que é o único sistema operacional na máquina - assim, elimina todos os dados de inicialização relacionados ao Linux. Isso pode ser diferente para UEFI, eu não sei.

Mei
fonte
2

Você não precisa necessariamente inicializar duas vezes o Windows e o Linux no UEFI. Siga o guia para converter seu UEFI em MBR-BIOS sem perda de dados.

Este guia foi feito por mim. Além disso, o blog referido nunca será removido. Embora eu o tenha usado 10 vezes sem perda de dados, recomendo que você faça backup dos seus dados antes de usar o meu procedimento.

Nehal J Wani
fonte
2

Posso recomendar vivamente a série de artigos UEFI de Rod Smith . Em particular, ele menciona que o GPT-MBR "híbrido" é um "truque perigoso" devido a riscos de dessincronização.

Michael Shigorin
fonte