Почему cpio, а не tar?
Это решение было принято еще в декабре 2001 года. Обсуждение началось здесь:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1538.html
И породил второй поток (в частности, tar против cpio), начиная здесь:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1587.html
Краткая и быстрая версия (которая не заменяет чтение вышеупомянутых тем):
1) cpio - это стандарт. Его десятилетия (со времен AT & T) и уже широко используются в Linux (внутри RPM, дисков с драйверами устройств Red Hat). Вот статья об этом в журнале Linux за 1996 год:
http://www.linuxjournal.com/article/1213
Он не так популярен, как tar, потому что традиционные инструменты командной строки cpio требуют _truly_hideous_ аргументов командной строки. Но это ничего не говорит о формате архива, и есть альтернативные инструменты, такие как:
http://freecode.com/projects/afio
2) Формат архива cpio, выбранный ядром, проще и чище (и, следовательно, его легче создавать и анализировать), чем любой из (буквально десятков) различных форматов архива tar. Полный формат архива initramfs описан в buffer-format.txt, создан в usr / gen_init_cpio.c и извлечен в init / initramfs.c. Все три вместе составляют менее 26 тыс. Человек текста.
3) Проект GNU по стандартизации на tar примерно так же актуален, как стандартизация Windows на zip. Linux также не является частью этой системы и может принимать собственные технические решения.
4) Поскольку это внутренний формат ядра, он мог бы быть
чем-то совершенно новым. Ядро предоставляет свои собственные инструменты для создания и извлечения этого формата в любом случае. Использование существующего стандарта было предпочтительным, но не обязательным.
5) Аль Виро принял решение (цитата: «tar ужасен как ад и не будет поддерживаться на стороне ядра»):
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1540.html
объяснил свои рассуждения:
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1550.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.2/1638.html
и, самое главное, разработал и внедрил код initramfs.