我正在按照Gentoo wiki制作我自己的initramfs。这个页面不是熟悉的tar和gzip,而是告诉我使用cpio和gzip。维基百科说2.6内核的initramfs使用cpio,但没有解释原因。
这只是一个约定,还是cpio更适合initramfs?我还能用tar和gzip吗?
发布于 2011-02-12 19:43:49
我不是百分之百确定,但是由于启动时初始的ramdisk需要由内核解压缩,所以使用cpio,因为它已经在内核代码中实现了。
发布于 2017-07-24 08:17:51
引用Documentation/filesystems/ramfs-rootfs-initramfs.txt:
为什么是焦油而不是焦油?这项决定是在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的设备驱动程序磁盘)。这里有一篇1996年的Linux文章: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)基于tar的GNU项目标准化与Windows在zip上的标准化大致相同。Linux并不是其中的一部分,它可以自由地做出自己的技术决定。4)因为这是一个内核内部格式,所以它很容易成为 --某种全新的东西。内核提供了自己的工具来创建和提取这种格式。使用现有的标准是可取的,但不是必要的。5) Al做出了决定(引用如下:"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代码。
发布于 2011-02-13 14:32:53
据我所记得的我以前的SysV时代,cpio可以处理dev文件,但tar不能;这使得cpio成为转储出现之前选择的“原始”备份实用工具。处理部分文件集和硬链接也更容易,因此增量备份更容易。我认为GNU已经赶上了cpio特性,所以现在它只是一个用户舒适感的问题。默认情况下,应该同时安装cpio和tar。
https://unix.stackexchange.com/questions/7276
复制相似问题