Perché cpio anziché tar?
Questa decisione è stata presa nel dicembre 2001. La discussione è iniziata qui:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html
E ha generato un secondo thread (in particolare su tar vs cpio), a partire da qui:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html
La versione di riepilogo rapida e sporca (che non sostituisce la lettura dei thread precedenti) è:
1) cpio è uno standard. Ha decenni (dai tempi di AT&T) e già ampiamente utilizzato su Linux (all'interno di RPM, i dischi driver del dispositivo Red Hat). Ecco un articolo del Linux Journal a riguardo dal 1996:
http://www.linuxjournal.com/article/1213
Non è così popolare come tar perché i tradizionali strumenti della riga di comando di cpio richiedono argomenti della riga di comando _truly_hideous_. Ma questo non dice nulla in alcun modo sul formato dell'archivio e ci sono strumenti alternativi, come:
http://freecode.com/projects/afio
2) Il formato dell'archivio cpio scelto dal kernel è più semplice e pulito (e quindi più facile da creare e analizzare) rispetto a uno dei (letteralmente dozzine di) vari formati di archivio tar. Il formato completo dell'archivio initramfs è spiegato in buffer-format.txt, creato in usr / gen_init_cpio.c ed estratto in init / initramfs.c. Tutti e tre insieme arrivano a meno di 26k di testo leggibile dall'uomo.
3) Il progetto GNU che standardizza su tar è approssimativamente rilevante quanto la standardizzazione di Windows su zip. Linux non fa parte di nessuno dei due ed è libero di prendere le proprie decisioni tecniche.
4) Dato che si tratta di un formato interno del kernel, avrebbe potuto facilmente essere
qualcosa di nuovo. Il kernel fornisce i propri strumenti per creare ed estrarre questo formato comunque. L'uso di uno standard esistente era preferibile, ma non essenziale.
5) Al Viro ha preso la decisione (citazione: "tar è brutto da morire e non sarà supportato dal lato kernel"):
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html
ha spiegato il suo ragionamento:
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, soprattutto, progettato e implementato il codice initramfs.