Pen drive inicializável do linux nativo com a primeira partição como fat32

2

Eu tenho tentado fazer isso por um bom tempo e eu sinto como se tivesse esgotado minhas opções. Eu quero fazer uma unidade flash particionada de forma semelhante a esta:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2930687   1.4 GiB     0700  Microsoft basic data
   2         2930688        31709183   13.7 GiB    8300  Linux filesystem

A primeira partição é fat32 (legível via windows) e a segunda partição possui uma instalação nativa do linux (não importa qual distro / fs). O kicker é que eu estou tentando inicializar este pen drive em um servidor HP que aparentemente não inicializa qualquer pen drive. Eu acho que tem que ser baseado em DOS. Eu tentei usar o grub para inicializar a partição Linux e funciona muito bem em máquinas diferentes, mas na máquina HP ele reclama assim:

Attempting to Boot from USB DriveKey (C:)
GRUB loading.
Welcome to GRUB!

error: out of disk
Entering rescue mode...
grub rescue>

Infelizmente, não há opções de thumbdrive / harddrive / boot no BIOS nesta máquina. Porque parece que o grub é um "no-go" eu pensei em tentar usar o syslinux mas o syslinux não parece suportar a inicialização para diferentes partições. Eu descobri que usar syslinux e memdisk para inicializar um ISO na partição fat32 funciona bem na HP (como uma iso LIVE) MAS eu preciso ser capaz de customizar algumas coisas na instalação do Linux - como montar a partição fat32 e executar uma script na inicialização completa.

    
por Greg G. 22.08.2012 / 21:42

1 resposta

0

Este é um tópico antigo, mas sinto sua dor. Eu tive cargas e cargas de problemas tentando fazer isso com o GRUB, e tive situações parecidas com várias máquinas se comportando de maneira diferente, dependendo de como o armazenamento é enumerado e passado para o grub.

O problema que você provavelmente está tendo (se é o mesmo que aconteceu comigo!) é que o estágio 2 está instalado na segunda partição, linux, junto com o kernel em / boot e quando o estágio 1 é carregado, pode encontre o estágio 2.

Consegui vencer o GRUB na submissão, eventualmente, por causa de um bug em um chroot, e ele era odioso, principalmente por causa da enumeração do dispositivo de disco passada pela BIOS (muita edição manual do grub.cfg). Uma solução muito mais simples é usar o extlinux. Aqui está o processo:

  1. Unidade flash de partição com MBR, primeira partição ~ 1GB e segunda, o resto ...
  2. Garantir que o sinalizador de inicialização esteja definido na primeira partição
  3. Formatar partições com FAT32 e outra coisa (eu uso o BTRFS)
  4. Instale o extlinux no setor de inicialização, dd if=/usr/share/extlinux/mbr.bin of=/dev/sdb bs=440 count=1 conv=sync (o iirc debian usa /usr/lib/syslinus/mbr/mbr.bin )
  5. Monte a partição FAT32 (por exemplo, para / media / disk) e faça extlinux --install /media/disk
  6. Copiar em bibliotecas extlinux, cp /usr/share/extlinux/{libcom32.c32,libutil.c32,menu.c32} /media/disk
  7. Copie em kernel / initramfs adequado para / media / disk
  8. Extraia seus rootfs linux preferidos para a outra partição (ou subvole se estiver usando o BTRFS) e edite /etc/fstab para montar sua partição FAT32 em / boot
  9. Crie /media/disk/extlinux.conf , o meu parece com este extlinux.conf

Em seguida, tente arrancar - você deve estar longe! Algumas notas das minhas lutas:

  • O BTRFS requer o uso de PARTUID no bootloader, você não consegue usar o UUID base da partição; não faço ideia do porquê
  • Como estamos usando o MBR, esse não é um processo que se pode usar com o UEFI; um UEFI CSM é necessário
  • Eu nunca precisei usar altmbr.bin , mas YMMV
  • Eu usei o ext4 para a primeira partição, mas ele deve funcionar bem com o FAT32

Ter o carregador de inicialização inteiro, além do kernel e do initramfs na primeira partição, torna isso muito fácil, e eu ainda não o vi falhar por qualquer motivo. Eu construí sistemas x86 incorporados em torno disso e parece ser completamente à prova de balas.

    
por 31.08.2018 / 23:19