phu*_*ehe 13 compression initramfs cpio
我正在按照Gentoo wiki制作我自己的 initramfs 。而不是熟悉的tar
and gzip
,页面告诉我使用cpio
and gzip
。维基百科说cpio
2.6 内核的 initramfs 使用了它,但没有解释原因。
这只是一个约定还是cpio
对 initramfs 更好?我还可以使用tar
andgzip
吗?
lve*_*lla 13
引用Documentation/filesystems/ramfs-rootfs-initramfs.txt
:
为什么是cpio而不是tar?
这个决定是在 2001 年 12 月做出的。讨论从这里开始:
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 的设备驱动程序磁盘)。这是 1996 年关于它的 Linux Journal 文章:
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 中提取。这三者加起来总共不到 26k 的人类可读文本。
3) GNU 项目对 tar 的标准化与 Windows 对 zip 的标准化大致相同。Linux 不属于这两者,可以自由地做出自己的技术决策。
4) 由于这是内核内部格式,因此很容易成为
全新的东西。内核提供了自己的工具来创建和提取这种格式。使用现有标准是可取的,但不是必需的。5) Al Viro 做出了决定(引述:“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 代码。
小智 9
我不是 100% 确定,但由于初始 ramdisk 需要在启动期间由内核解包,因此使用 cpio,因为它已在内核代码中实现。
归档时间: |
|
查看次数: |
4908 次 |
最近记录: |