diff -u: 内核开发中的新特性
许多不同的开发者一直有这样一种想法,即能够将部分或全部 Linux 内核编译成库,以便软件可以在完全不同的内核或不同的操作系统下运行时使用内核服务和 API。
这一次,这种想法来自于 Octavian Purdila,Linux Kernel Library (LKL) 的创建者,LKL 本质上是将整个内核编译成静态库。他将 LKL 与 User Mode Linux (UML) 等项目区分开来,称 LKL 更轻量级,没有基础设施要求,也不需要任何特定的运行时环境。
许多人表示感兴趣,尤其是在与 libOS 和 libguestFS 等类似项目交互方面。此外,Richard Weinberger 评论说,LKL 似乎解决了 UML 最大的痛点:需要使用 ptrace() 来处理系统调用,以及使用 SIGSEGV 进行虚拟内存管理。
在一个以设备为中心的世界中,电池技术笨重且效率低下,因此有很大的动力去寻找节省电量的方法。一种可能性是在硬件当前未使用时将其部分关闭,例如当手机放在口袋里时关闭手机的触摸屏。
困难在于确切地知道要关闭哪一块硬件,以及何时关闭。如果存在明确的用户操作,例如翻盖手机的翻盖关闭,则问题就简化了。Irina Tirdea 最近尝试识别此类操作,并提出适当响应它们的机制。她发布了一些补丁来做到这一点。
与 Irina 一起参与该项目的 Octavian Purdila 描述了一个目标场景,即当触摸屏已变为空白但仍能感知用户的触摸时——例如,通过口袋的织物。他说,这些补丁的目标是通过关闭与该屏幕关联的所有硬件来节省电量,并在用户激活设备时再次开启所有硬件。
这类功能的难题在于它可以在内核代码的许多不同层中实现。理想的位置可能会导致实现变得复杂且容易出错,或者简单而高效。一些人认为 Irina 和 Octavian 的方法在内核的错误部分,讨论演变成对完全不同方法的考虑。
没有达成共识,尽管节电的诱惑无疑将使辩论继续下去。
在虚拟机下挂载文件系统可能很棘手。需要尊重安全特权和限制,否则文件系统可能会成为恶意用户攻击的途径。内核开发的这个特定领域也往往对试图支持其产品的公司具有广泛的吸引力,因此各种开发人员可能会发现自己为了不同的目的而工作,并且需要在他们的补丁被接受之前互相迁就。
例如,Seth Forshee 和 Eric Biederman 最近编写了一些补丁,允许非特权用户挂载 Ext4 和 FUSE 文件系统,忽略了原本可能阻止这些用户访问该数据的安全信息。
与此同时,Lukasz Pawelczyk 正在开发专门用于支持相同安全信息的代码。
一场关于所涉及特定上下文的辩论爆发了。Andy Lutomirski 建议,如果文件系统包含用户自己的数据,则可以覆盖安全功能,理由是用户应该能够对自己的数据做他们想做的事情。而 Casey Schaufler 回复说,内核不应该关心用户对数据的了解,它必须遵循安全协议,否则它将根本无法执行这些协议。
另一方面,正如 Eric 指出的那样,像 FAT 和 Minix 这样的文件系统无法存储与更现代的文件系统相同类型的安全信息。他说,必须有一种方法来挂载此类文件系统,而无需它们支持它们无法支持的安全功能。
这是一场持续的辩论。安全胜过所有其他考虑因素,包括迫切的需求,因此像非特权文件系统挂载这样的问题不可避免地会涉及到对用户可能尝试做某事的特定上下文的考虑。通常,会存在某种疯狂的细微差别,使得在您发誓永远不可能实现的情况下,某些事情变得可行。