É possível um USB-Stick Linux híbrido para UEFI e BIOS herdado?

14

minha idéia é criar um USB-Boot-Stick com o Lubuntu que seja capaz de inicializar em um BIOS Laptop mais antigo e em um UEFI Systems mais recente.

Isso seria bem fácil, quando o Stick seria configurado como um dispositivo de inicialização herdado, mas eu quero que seja um dispositivo compatível com UEFI.

  1. Isso faz algum sentido ?! Ou entendi o conceito UEFI terrivelmente errado?
  2. Se necessário, pode haver duas instalações Linux diferentes (uma para UEFI, uma para legada, mas ambas na mesma unidade)
  3. Inicialize um dispositivo GPT na Bios herdada - isso funcionará?

Não consigo ver claramente, pode ser apenas uma idéia melhor ter um stick de inicialização Linux legado separado, mas estou curioso para explorar os limites :)

Então, é minha idéia de um linux-uefi-boot-usb-stick híbrido que funcionaria com a bios herdada?


(3) parece ser possível para linux com grub http://www.rodsbooks.com/gdisk/booting.html

Além disso, eu tenho uma partição EF00 pronta nesse bastão, além de uma partição Swap, Fat32 e duas ext4.


(1) parece também ser possível http://www.rodsbooks.com/bios2uefi/

No entanto, essas instruções são de 2012, já passou algum tempo desde então - alguém tem um exemplo prático que é mais fácil?


Para outros pesquisadores deste tópico:

Inicialização do Windows 7 a partir do disco GPT na placa-mãe que não seja EFI Existe alguma maneira de inicializar o Windows 7/8 usando o BIOS na GPT?

http://www.borncity.com/blog/2012/07/25/uefi-emulation-auf-pcs/


ATUALIZAR:

Consegui criar a parte UEFI, incluindo a configuração segura de inicialização com o rEFInd.

Seguindo o conselho fornecido, eu costumava ddcopiar gptmbr.binpara a minha unidade, que agora parece fazer pelo menos algo em um sistema BIOS: "Este não é um disco inicializável"

No entanto, segui o conselho e defini o pmbrsinalizador para o disco e o legacy bootsinalizador gpt - ainda assim, obtendo esse erro, alguma idéia?

Minha partição ESP é a segunda partição no disco e é configurada com arquivos efi.

A instalação:

  • 64GB Espaço
  • Tabela de partições GPT
  • O disco possui sinalizador pmbr definido
  • A 1ª Partição começa em 16MiB e tem cerca de 45 GB, um fat32 primário para dados
  • A 2ª partição começa em torno de 45 GB e é o sistema EFI (fat32) com uma configuração de rEFInd
  • A 3ª - 5ª Partição é o lar (ext4), swap e root (ext4) do meu Lubuntu 14.04.1 em funcionamento

Usando dd, copiei o gptmbr.bindo meu Syslinux 6.02 compilado para os primeiros 440 bytes.

Na seção 3.2, posso ver que minha partição 2 tem um sinalizador boote legacy_boot.

Durante a inicialização, recebo Nenhum disco inicializável encontrado - se eu definir a 5ª em vez da 2ª partição para legacy_bootobter o SO ausente

Está vivo!

(Como minha pergunta antiga foi excluída /ubuntu//q/516730/319747 )


Meu palpite é que eu tenho que copiar alguns *.c32e outros arquivos para uma pasta syslinux no meu EFI (onde ?!) ou na minha partição raiz ( /boot/syslinux?!) Para fazê-lo funcionar - estou certo? Quais arquivos são essenciais?

Além disso, acho que vou precisar desse syslinucx.cfgarquivo também - certo?


Meu objetivo seria pelo menos uma inicialização direta do sistema lubuntu na partição ext4 raiz.

Atualizar:

Embora eu não tenha idéia do porquê, consegui fazê-lo funcionar - mas não com uma instalação manual.

  • a pmbrbandeira estava ruim e proibiu meu sistema UEFI de inicializar o stick como UEFI
  • a legacy_bootflag foi necessária para a minha 5ª partição (root linux)
  • Eu tive que usar extlinux --install /path/to/root/parition
  • Eu tive que criar um syslinux.cfgna pasta syslinux na inicialização da minha partição raiz

Fiz tudo isso em um segundo bastão menor e tentei copiar apenas a pasta syslinux, mas não tive sorte - o que extlinux --installparece ser obrigatório.

Alguém sabe o que exatamente extlinux --installfaz? Isso pode ser feito manualmente ou de que outra forma você poderia instalar uma versão mais recente como a 6.02 sem instalá-la no sistema?

Comecei a trabalhar com as partições mencionadas no BIOS, UEFI e UEFI SecureBoot, que inferno, aprendi muito, quase matou 2TB com parted, tenha cuidado e boa sorte.

Jook
fonte
seu link está quebrado .. você tem sua história em outro lugar? eu gostaria de fazer o mesmo obrigado.
pvinis
1
@pvinis obrigado pela informação, eu mesclei a pergunta / resultado do askubuntu aqui, como ele foi excluído #
12151 Jook

Respostas:

11

É possível e é feito com muita freqüência com pen drives externos e unidades internas.

Em relação aos tipos de tabela de partição:

  • O BIOS normalmente não precisa de nenhuma tabela de partição. Ele está interessado apenas na parte do código de inicialização que é os primeiros 440 bytes do seu MBR. (Embora existam exceções. Algumas implementações do BIOS realmente quebram se não conseguirem encontrar um MBR com um dos tipos de partição comuns. Esperemos que sejam raras.)

    A tabela de partição GPT não substitui fisicamente um MBR - ela sempre inicia no setor 1, enquanto o MBR está no setor 0 -, portanto, é possível que um disco possua ambos. Na verdade, a maioria dos discos GPT não têm uma "MBR protetor" contendo apenas uma única partição que cobre todo o disco, para evitar mais velhas ferramentas MBR somente particionamento de destruir acidentalmente os dados.

    Assim, você pode instalar, por exemplo, o setor de inicialização do Syslinux no seu MBR, e ele será inicializado. (O  syslinux-install_updatescript fará isso por você, mas você pode procurar gptmbr.binno pacote syslinux para fazê-lo manualmente.)

    Assim como o sinalizador "ativo" nas partições MBR, o Syslinux procurará o sinalizador "BIOS inicializável herdado" nas partições GPT (bit 2 - UEFI spec 2.4, seção 5.3.3, tabela 20); o script mencionado acima também define esse sinalizador automaticamente se você tiver sgdisk(do gptfdisk) instalado.

    O GRUB também pode ser usado, mas também é um pouco mais irritante. Como o GRUB 2 deseja "incorporar" partes de si mesmo nos setores tradicionalmente não utilizados 1-62, ele substituirá uma GPT armazenada no mesmo local. Portanto, pode ser necessário criar uma partição dedicada de 2 a 4 MB e marcá-la como inicializável pelo BIOS, para que grub-installse torne um local de incorporação.

  • Por outro lado, a especificação UEFI faz requerem suporte para tipos de partição MBR (seção 12.3.1) e atribuir o tipo de partição MBR 0xEFpara a partição de sistema EFI (seção 5.2.2).

    Portanto, se por algum motivo você não conseguir fazer o disco funcionar com o GPT, ainda poderá criar uma partição do sistema EFI no MBR, e ela será usada desde que tenha o sistema de arquivos correto e todos os arquivos necessários (seção 12.3.1.3):

    Para dispositivos de mídia removível, deve haver apenas uma partição do sistema compatível com UEFI e essa partição deve conter um diretório definido por UEFI no diretório raiz. O diretório será nomeado EFI. Todos os carregadores e aplicativos de SO serão armazenados em um subdiretório abaixo EFIchamado BOOT. Deve haver apenas uma imagem EFI executável para cada arquitetura de processador suportada no BOOTdiretório Para que a mídia removível seja inicializável no EFI, ela deve ser construída de acordo com as regras estabelecidas na Seção 3.4.1.1.

Em relação aos sistemas operacionais, o Linux geralmente não se importa nem um pouco com a inicialização do BIOS hoje e do UEFI amanhã. Eu tive que reiniciar meu laptop do modo UEFI para o modo "Compatibilidade do BIOS" e voltar talvez cem vezes esta semana, enquanto tentava encontrar um bug no suporte UEFI 3.17 ...


Observe que o artigo "BIOS para UEFI Transformação" é sobre uma coisa completamente diferente. Ele descreve como instalar o próprio UEFI - uma implementação de UEFI chamada "DUET" - para ser iniciada a partir de um sistema somente BIOS. Não tem nada a ver com a inicialização de um sistema operacional diretamente do BIOS.

user1686
fonte
+1 - syslinux_install eu vou olhar para isso, muito obrigado pela confirmação, tranquilidade e uma nova entrada
Jook
Eu segui o seu conselho, mas estou preso à instalação, meu mbrparece estar bem, mas não encontra minha EFI Systempartição. É um problema que seja a segunda partição do disco, iniciando em torno de 45 GB no disco? Preciso configurar uma seção específica na EFI, além da configuração da EFI que já está funcionando lá?
Jook
Entendi a trabalhar :) então, obrigado! O syslinux é muito bom e me levou ao gPxe e plopkexec, que examinarei mais uma vez. Para quaisquer outros pesquisadores: askubuntu.com/q/516730/319747
Jook
2

Sim, isso é possível.

A idéia básica é particionar o seu pendrive da GPT desta maneira:

  1. Partição de inicialização do BIOS (tipo GPT 1686148-6449-6E6F-744E-656564454649) - 1 MiB, sem sistema de arquivos
  2. Partição do sistema EFI (tipo GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B) - sistema de arquivos 200 MiB, VFAT
  3. Partição de inicialização do Linux (tipo GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - 1 GiB, sistema de arquivos ext4
  4. Sistema de arquivos raiz / home Linux (tipo GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - espaço restante, sistema de arquivos XFS ou Btrfs

Esse particionamento nos permite inicializar em sistemas legados porque, com o GPT, ainda há espaço para um MBR (por razões de compatibilidade com versões anteriores) e o Grub2 tem espaço suficiente para instalar algum estágio intermediário na partição de inicialização do BIOS. Os BIOS herdados não se importam com o esquema de particionamento e o Kernel Grub2 / Linux não tem problemas para entender o GPT nos sistemas Legacy.

Nos sistemas UEFI , o firmware UEFI ignora o MBR e usa a partição do sistema EFI como ponto de entrada.

Por exemplo, com o Fedora, você basicamente precisa fazer o seguinte:

Certifique-se de que o sistema de arquivos Linux Boot esteja montado embaixo /boote que o sistema de arquivos da partição do sistema EFI esteja montado embaixo /boot/efi.

(Re-) Instale os carregadores de inicialização herdados e UEFI:

grub2-pc grub2-efi-x64 shim-x64 efibootmgr

(Re-) Gere os arquivos de configuração do grub para inicialização herdada e UEFI:

# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

Dependendo da inicialização do sistema no modo legado ou UEFI, é necessário corrigir o primeiro ou o segundo arquivo e substituí (linux|initrd)16-lo (linux|initrd)efipelo contrário.

Instale o grub no MBR:

# grub2-install --target=i386-pc /dev/sd_your_usb_stick_device

Voila.

maxschlepzig
fonte
PS: escrevi um script de provisionamento que implementa essa abordagem híbrida e, portanto, pode ser usado para criar automaticamente um dispositivo USB.
### maxschlepzig #