¿Por qué cpio en lugar de alquitrán?
Esta decisión se tomó en diciembre de 2001. La discusión comenzó aquí:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html
Y generó un segundo hilo (específicamente en tar vs cpio), comenzando aquí:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html
La versión resumida rápida y sucia (que no sustituye la lectura de los hilos anteriores) es:
1) cpio es un estándar. Tiene décadas de antigüedad (desde los días de AT&T) y ya se usa ampliamente en Linux (dentro de RPM, los discos de controladores de dispositivos de Red Hat). Aquí hay un artículo de Linux Journal al respecto de 1996:
http://www.linuxjournal.com/article/1213
No es tan popular como el alquitrán porque las herramientas tradicionales de línea de comandos de cpio requieren argumentos de línea de comandos realmente verdaderos. Pero eso no dice nada sobre el formato de archivo, y hay herramientas alternativas, como:
http://freecode.com/projects/afio
2) El formato de archivo cpio elegido por el núcleo es más simple y limpio (y, por lo tanto, más fácil de crear y analizar) que cualquiera de los (literalmente docenas de) varios formatos de archivo tar. El formato de archivo initramfs completo se explica en buffer-format.txt, creado en usr / gen_init_cpio.c y extraído en init / initramfs.c. Los tres juntos suman menos de 26k de textos legibles por humanos.
3) La estandarización del proyecto GNU en tar es aproximadamente tan relevante como la estandarización de Windows en zip. Linux tampoco forma parte y es libre de tomar sus propias decisiones técnicas.
4) Dado que este es un formato interno del núcleo, fácilmente podría haber sido
algo completamente nuevo. El núcleo proporciona sus propias herramientas para crear y extraer este formato de todos modos. Usar un estándar existente era preferible, pero no esencial.
5) Al Viro tomó la decisión (cita: "el alquitrán es feo como el infierno y no será compatible con el núcleo"):
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html
explicó su razonamiento:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1550.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1638.html
y, lo más importante, diseñó e implementó el código initramfs.