Pourquoi cpio plutôt que tar?
Cette décision a été prise en décembre 2001. La discussion a commencé ici:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html
Et a engendré un deuxième thread (spécifiquement sur tar vs cpio), commençant ici:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html
La version de résumé rapide et sale (qui ne remplace pas la lecture des discussions ci-dessus) est:
1) cpio est une norme. Il a des décennies (depuis les jours AT&T) et est déjà largement utilisé sur Linux (à l'intérieur de RPM, les disques de pilotes de périphériques de Red Hat). Voici un article du Linux Journal à ce sujet de 1996:
http://www.linuxjournal.com/article/1213
Ce n'est pas aussi populaire que tar car les outils de ligne de commande cpio traditionnels nécessitent des arguments de ligne de commande _truly_hideous_. Mais cela ne dit rien sur le format d'archive, et il existe des outils alternatifs, tels que:
http://freecode.com/projects/afio
2) Le format d'archive cpio choisi par le noyau est plus simple et plus propre (et donc plus facile à créer et à analyser) que n'importe lequel (littéralement des dizaines de) différents formats d'archive tar. Le format complet de l'archive initramfs est expliqué dans buffer-format.txt, créé dans usr / gen_init_cpio.c, et extrait dans init / initramfs.c. Tous les trois réunis représentent moins de 26 000 au total de texte lisible par l'homme.
3) Le projet GNU standardisant sur tar est à peu près aussi pertinent que Windows standardisant sur zip. Linux ne fait pas partie non plus et est libre de prendre ses propres décisions techniques.
4) Puisqu'il s'agit d'un format interne du noyau, il aurait pu facilement être
quelque chose de nouveau. Le noyau fournit de toute façon ses propres outils pour créer et extraire ce format. L'utilisation d'une norme existante était préférable, mais pas indispensable.
5) Al Viro a pris la décision (citation: "le tar est moche comme l'enfer et ne va pas être supporté du côté du noyau"):
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html
a expliqué son raisonnement:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1550.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1638.html
et, surtout, conçu et implémenté le code initramfs.