PXELinux e kernels comprimidos / imagens

3

É possível inicializar kernels comprimidos com um initrd comprimido com o PXELinux?

Primeiro, um pequeno histórico:

Criamos uma distribuição Linux personalizada para nós de computação OpenCL sem disco. Nós queremos que esses nós busquem seus sistemas operacionais da rede. Nosso Distro é composto de um kernel (duh) e um grande initrd que é carregado na RAM e tudo é executado a partir daí.

Optamos por executar tudo fora do initrd por dois motivos:

  • O NFS não era uma opção para servir o conteúdo extra do sistema de arquivos
  • Acesso rápido a arquivos da RAM.
  • Não é necessário armazenamento persistente, dados e configuração são obtidos dinamicamente por meio de um serviço SOAP.

Agora, nosso initrd tem cerca de 450 milhões de tamanho. Em nossas velocidades de rede, leva de dois a três minutos para carregar um único cliente. A compressão acelerará o download e, se sim, qual deverá ser usado? O LZMA é suportado pelo PXELinux, ou precisamos nos ater ao bzip2 ou ao gzip?

Devido ao tempo de carregamento de 2 a 3 minutos, a inicialização de 15 nós no mesmo link de rede leva bastante tempo. Nós decidimos não usar discos rígidos ou unidades de CD / DVD, por razões financeiras (HDD mais barato @ € 30 vezes 15 é muito dinheiro economizado ;-))

Nossa pergunta é: quais opções de compressão estão disponíveis para essa configuração? E como fazemos isso?

Obrigado pelo seu tempo!

Yvan Janssens

    
por friedkiwi 28.05.2011 / 18:37

3 respostas

1

Como você fez o initrd? A maioria dos sistemas que conheço os compactam na última etapa:

> file /boot/initrd-2.6.37.1-1.2-desktop
/boot/initrd-2.6.37.1-1.2-desktop: gzip compressed data, [...]

O Kernel precisa suportar a compressão:

> cat /boot/config-2.6.37.1-1.2-desktop |grep CONFIG_RD_
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
CONFIG_RD_LZO=y

Mas um disco RAM de 450MB significa menos 450MB de memória - e sem um HDD você não tem swap.

Você deve procurar seriamente em um sistema de arquivos em rede, há mais de NFS: O gPXE pode carregar de iSCSI, AoE e até HTTP.

    
por 28.05.2011 / 23:52
0

Você já pensou em implementar casper e squashfs? Dessa forma, você pode manter o initrd em um tamanho mínimo, talvez em torno de 25 MB e enviar os squashfs separadamente. O Squashfs suporta compressão lzma, e se você olhar a forma como o parted magic lida com ele, algumas vezes eles colocam o squashfs no initrd ... mas no passado eu joguei com o pxelinux, e você pode enviá-lo como um arquivo separado , e os scripts casper ainda irão encontrá-lo.

    
por 28.05.2011 / 20:00
0

1) um kernel Linux típico é compactado, o mesmo para seu initrd, verifique sua cadeia de construção.

2) seus números dizem que você não precisa de squashfs

3) O pxelinux não se importa com seu método de compactação kernel / initrd, se houver.

    
por 18.10.2012 / 23:48