什么是Rpikernelhack?(2019年)

2020-09-29 05:46:24

如果你最近在你的树莓PI上运行了一个APT升级,你可能会注意到屏幕上滚动着一串行,上面写着“rpikernelhack”,这让你吓坏了!什么是rpikernelhack?为什么它在你的覆盆子PI上运行?

当Raspberry PI的开发人员在设计该设备及其操作系统时,决定在该设备上使用FAT32文件系统。开机时,系统查找名为boot的FAT32文件系统。这内置于树莓PI的固件中,不能更改。

当Debian软件包开发人员开始为RPI创建软件包时,这给他们带来了一些重大问题。Debian Package Manger(Dpkg)能够将新文件正确地放置到这个FAT32分区上(尽管它在某些情况下会抛出一些警告错误,这些错误大多是良性的)。但是,当dpkg尝试更新文件时,它将失败得很惨。这是因为FAT32不像其他Linux文件系统那样支持文件系统上的硬链接。Dpkg会在其升级过程中尝试创建文件备份,其中包括创建指向这些文件的硬链接。一把大扳手!

嗯,rpikernelhack就是它听起来的样子。这是一个绕过FAT32问题的黑客,最初是由开发人员Peter Green创建的。

Peter的变通办法是使用Debian包管理器中提供的“分流”功能。或者就像他喜欢说的那样,他“滥用了这个功能”。Diversion最初的目的是允许文件被“转移”,以便可以用本地修改的版本或来自另一个包的版本替换它们。这是软件包安装程序的一个重要功能。

然而,彼得能够以一种更狡猾的方式使用它。他想出了他可以使用转移来允许dpkg在分区上安装文件文件,然后在安装(或转移)过程结束时将他的文件移动到它们的最终位置!太棒了!

要使用转移,您必须指定LOCAL,或指定一个特定的包名。如果指定特定程序包,则转移过程将影响所有程序包拥有的文件,但不会影响您指定的程序包。因此就有了一个名为rpikernelhack的包名!

因此,从根本上讲,rpikernelhack只不过是一个假的包名,它允许开发人员和Debian包管理器绕过FAT32文件系统的限制,安装包而不会崩溃。

什么是rpikernelhack?现在你知道了吧!如果你有任何问题,请在下面的评论中提问,我们会尽最大努力回答你!