É um USB híbrido do Linux para UEFI e BIOS legado possível?

12

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

Isso seria muito fácil, quando o Stick fosse configurado como um dispositivo de inicialização herdado, mas eu quero que ele seja um dispositivo com capacidade para UEFI.

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

Eu não consigo ver claramente, pode ser apenas uma idéia melhor ter um boot legado separado do Linux, mas estou curioso para explorar os limites:)

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

(3) parece ser possível para o linux com grub link

Além disso, eu tenho uma partição EF00 pronta, além de uma partição Swap, Fat32 e duas partições Ext4.

(1) parece ser possível também link

No entanto, estas instruções de 2012, passaram algum tempo desde então - alguém tem um exemplo de trabalho que seja mais fácil?

Para outros pesquisadores deste tópico:

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

link

ATUALIZAÇÃO:

Eu consegui criar a peça UEFI incluindo a instalação segura do Boot com o rEFInd.

Seguindo o conselho dado, usei dd para copiar gptmbr.bin para minha unidade, que agora parece fazer pelo menos algo em um sistema BIOS: "Este não é um disco inicializável"

No entanto, eu segui o conselho e defini o sinal pmbr para o disco e o sinalizador gpt legacy boot - ainda recebendo este erro, alguma idéia?

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

A configuração:

  • Espaço de 64 GB
  • Partitiontable do GPT
  • O disco tem o conjunto de sinalizadores pmbr
  • A primeira partição começa em 16 MiB e tem cerca de 45 GB, uma primária de fat32 para dados
  • A 2a Partição começa em torno de 45 GB e é o Sistema EFI (fat32) com uma configuração rEFInd de trabalho
  • 3rd - 5th Partition é o home (ext4), swap e root (ext4) do meu trabalho Lubuntu 14.04.1

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

No parted 3.2, vejo que minha partição 2 possui um sinalizador boot e legacy_boot .

Durante a inicialização, obtenho Nenhum disco inicializável - se eu definir minha quinta em vez da segunda partição como legacy_boot , obtenho Sistema operacional ausente

Está vivo!

(Como minha antiga pergunta foi excluída link )


My guess is, that I have to copy some of the *.c32 and other files to a syslinux folder eighter on my EFI (where?!) or on my root partition (/boot/syslinux?!) to get it to work - am I right? What files are essential?

Further, I guess I will need that syslinucx.cfg file too - right?


My goal would be at least a direct boot of the lubuntu system on the root ext4 partition.

Update:

Although I have no idea why, I got it working - but not with a manual install.

  • the pmbr flag was bad and prohibited my UEFI system from booting the stick as UEFI
  • the legacy_boot flag was necessary for my 5th partition (linux root)
  • I had to use extlinux --install /path/to/root/parition
  • I had to create a syslinux.cfg in the syslinux folder under boot of my root partition

I did all of this on a second smaller stick, then tried to copy just the syslinux folder, but had no luck - the extlinux --install seems to be mandatory.

Anybody knows what exactly extlinux --install does? Can it be done manually or how else could you install a newer version like 6.02 without installing it on to your system?

Tenho meu bastão trabalhando com as partições mencionadas na BIOS, UEFI e UEFI SecureBoot, uma viagem incrível, aprendi muito, quase matei 2 TB com o parted, tenha cuidado e boa sorte.

    
por Jook 22.08.2014 / 13:20

2 respostas

9

É possível, e é muito frequentemente feito com dispositivos USB externos e unidades internas.

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

  • O BIOS normalmente não precisa de nenhuma tabela de partições. Ele está interessado apenas na parte 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 elas não conseguem encontrar um MBR com um dos tipos de partição usuais. Espero que sejam raras.)

    A tabela de partição GPT não substitui fisicamente um MBR - ele sempre começa no setor 1, enquanto o MBR está no setor 0 - então é possível que um disco tenha ambos. Na verdade, a maioria dos discos GPT fazem ter um "MBR protetor" contendo apenas uma única partição que cobre todo o disco, para evitar que ferramentas antigas de particionamento somente MBR destruam acidentalmente os dados.

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

    Assim como o sinalizador "ativo" em partições MBR, o Syslinux procurará o sinalizador "bootable BIOS bootable" em partições GPT (bit 2 - especificação UEFI 2.4 seção 5.3.3 tabela 20); o script mencionado 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 quer "incorporar" partes de si mesmo nos setores 1-62 tradicionalmente não utilizados, ele sobrescreve um GPT armazenado no mesmo local. Portanto, talvez seja necessário criar uma partição dedicada de 2 a 4 MB e marcá-la como inicializável por BIOS, para que grub-install se encontre em um local de incorporação.

  • Por outro lado, a especificação UEFI faz requer suporte para tipos de partição MBR (seção 12.3.1) e atribui o tipo de partição MBR 0xEF à partição do sistema EFI (seção 5.2.2 ).

    Portanto, se por algum motivo você não conseguir que seu disco funcione com o GPT, ainda poderá criar uma partição do sistema EFI no MBR e será usado contanto que tenha o sistema de arquivos correto e todos os arquivos necessários (seção 12.3. 1.3):

    For removable media devices there must be only one UEFI-compliant system partition, and that partition must contain an UEFI-defined directory in the root directory. The directory will be named EFI. All OS loaders and applications will be stored in a subdirectory below EFI called BOOT. There must only be one executable EFI image for each supported processor architecture in the BOOT directory. For removable media to be bootable under EFI, it must be built in accordance with the rules laid out in Section 3.4.1.1.

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

Observe que o artigo "BIOS to UEFI Transformation" é sobre algo totalmente diferente. Ele descreve como instalar o UEFI em si - uma implementação de UEFI chamada "DUET" - a ser iniciada a partir de um sistema somente de BIOS. Não tem nada a ver com a inicialização de um sistema operacional diretamente do BIOS.

    
por 22.08.2014 / 13:48
1

Sim, isso é possível.

A idéia básica é a partição GPT do seu stick USB assim:

  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 ) - 200 MiB, sistema de arquivos VFAT
  3. partição de inicialização do Linux (tipo GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4 ) - 1 GiB, sistema de arquivos ext4
  4. Linux root / sistema de arquivos inicial (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 a GPT, ainda há espaço para um MBR (para compatibilidade com versões anteriores razões) e Grub2 tem espaço suficiente para instalar algum estágio intermediário na partição de inicialização do BIOS. BIOS antigos não se importam com o esquema de particionamento e o kernel do Grub2 / Linux não tem problemas em entender o GPT em sistemas legados.

Em 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:

Verifique se o sistema de arquivos do Linux Boot está montado em /boot e se o sistema de arquivos da partição do sistema EFI está montado em /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 tanto para boot herdado quanto para o UEFI:

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

Dependendo do sistema inicializado no modo legado ou UEFI, é necessário corrigir o primeiro ou o segundo arquivo e substituir (linux|initrd)16 por (linux|initrd)efi ou vice-versa.

Instale o grub no MBR:

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

Voila.

    
por 11.03.2018 / 10:09