Eu quero entender o Buildroot - as 3 opções de configuração de compactação (kernel, initramfs e rootfs)

2

Estou usando o buildroot para gerar minhas imagens e com certeza existe a opção de compressão com a ajuda de diferentes métodos (LZO, LZMA, gzip, ...).

Até agora encontrei estas 3 opções de compressão no buildroot (v. 2013.11):

  • Modo de compressão do kernel (em make linux-menuconfig)

  • Modo de compactação initramfs incorporado (em make linux-menuconfig)

  • Método de compactação para o sistema de arquivos raiz .cpio ((in make menuconfig)

minhas perguntas são:

  1. qual é a diferença entre esses modos e
  2. por que sou forçado a escolher entre 3 métodos para a compactação do kernel, em vez de deixá-lo descompactado?

saudações

    
por user3085931 05.02.2014 / 15:40

1 resposta

3
  1. As três opções diferentes são para três aspectos diferentes do sistema Linux gerado, o próprio kernel, o initramfs e o sistema de arquivos resultante.

    • Modo de compressão do kernel: comprime a imagem do kernel compilada. Por exemplo, na minha máquina Ubuntu 12.04, o kernel está em /boot/vmlinuz-3.8.0-35-generic
    • Modo de compactação initramfs incorporado: a compactação da imagem inicial do sistema de arquivos ram. Na minha máquina, isso seria /boot/initrd.img-3.8.0-35-generic .
    • Método de compactação para o sistema de arquivos raiz .cpio: esse é o sistema de arquivos root / . Em um sistema desktop, isso geralmente é uma partição de disco (ext2 / 3/4 ...), leitura / gravação montada em / . Em um sistema embarcado, seria uma leitura compactada em .cpio montada em arquivo somente em / (após a inicialização ser concluída).

    O kernel do Linux é descompactado pelo gerenciador de inicialização na memória e depois recebe o controle, então o kernel montará o sistema de arquivos inicial do RAM como o root fs, o initramfs executará certas tarefas, incluindo o carregamento do sistema de arquivos real (o sistema de arquivos raiz .cpio) e o término do processo de inicialização.

    Os três modos diferentes usam diferentes algoritmos de compressão, os diferentes algoritmos têm requisitos diferentes ao descomprimir os dados: uso da memória, tempo para descomprimir (uso da CPU) e tamanho das rotinas de descompressão da biblioteca.

    Portanto, você precisa escolher os algoritmos de compactação mais adequados às suas necessidades e à plataforma de destino. Existem muitos gráficos que comparam os requisitos e o desempenho de diferentes bibliotecas (benchmarks).

  2. O buildroot é geralmente direcionado para dispositivos embarcados (como eu sei), o fator de tamanho é muito crítico nesses dispositivos, assim você normalmente precisa do initramfs, do kernel e do sistema de arquivos raiz a serem compactados.

    Na verdade, mesmo em dispositivos não incorporados (desktop, servidores ...), o kernel e o initramfs são geralmente compactados. Os profissionais de fazer isso superam os contras.

por 05.02.2014 / 15:49