Por que cpio em vez de alcatrão?
Esta decisão foi tomada em dezembro de 2001. A discussão começou aqui:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html
E gerou um segundo segmento (especificamente no tar vs cpio), começando aqui:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html
A versão resumida rápida e suja (que não substitui a leitura dos threads acima) é:
1) cpio é um padrão. Ele tem décadas (dos dias da AT&T) e já é amplamente usado no Linux (dentro do RPM, discos de driver de dispositivo da Red Hat). Aqui está um artigo do Linux Journal sobre isso em 1996:
http://www.linuxjournal.com/article/1213
Não é tão popular quanto o tar, porque as ferramentas tradicionais de linha de comando cpio exigem argumentos de linha de comando _truly_hideous_. Mas isso não diz nada sobre o formato do arquivo, e existem ferramentas alternativas, como:
http://freecode.com/projects/afio
2) O formato de arquivo cpio escolhido pelo kernel é mais simples e mais limpo (e, portanto, mais fácil de criar e analisar) do que qualquer um dos (literalmente dezenas de) vários formatos de arquivo tar. O formato completo do arquivo initramfs é explicado em buffer-format.txt, criado em usr / gen_init_cpio.c e extraído em init / initramfs.c. Os três juntos somam menos de 26k de texto legível por humanos.
3) O projeto GNU de padronização no tar é aproximadamente tão relevante quanto a padronização do Windows no zip. O Linux também não faz parte e é livre para tomar suas próprias decisões técnicas.
4) Como este é um formato interno do kernel, poderia facilmente ter sido
algo totalmente novo. O kernel fornece suas próprias ferramentas para criar e extrair esse formato de qualquer maneira. Usar um padrão existente era preferível, mas não essencial.
5) Al Viro tomou a decisão (citação: "o tar é feio como o inferno e não será suportado no lado do kernel"):
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html
explicou seu raciocínio:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1550.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1638.html
e, o mais importante, projetou e implementou o código initramfs.