对于我正在进行的项目,我需要能够修改EXT2文件系统。我做了大量的研究,但由于这不是一项常见的任务,因此在线提供的信息似乎很少。不幸的是,由于机密性,我不能详细说明我正在做的事情,但我可以将情况分解为几个关键问题,我将非常感谢你的帮助。我应该注意到我对Linux内核/操作系统开发的经验很少。
我意识到这不是一个容易解决的问题,因为这只是项目的一小部分,所以肯定会是一个很大的挑战。任何有关这些问题的帮助(或任何其他警告/建议)都非常感谢。
如果事实证明这是不可能的,那么整个项目将不得不重新考虑,因此我为什么要从这一点开始。
问题1:从源代码到实施
这不是第一个问题,但我需要首先回答它,以确保我在正确的轨道上!请记住,我是一个新手,所以这可能是一个愚蠢的问题。
据我所知,所有EXT2源代码都包含在linux / fs / ext2 /的内核源代码中。如果我要修改此源代码以进行我需要的更改,那么成功重建内核,使驱动器或分区使用这个新修改的文件系统需要什么?我是否能够使用新内核将驱动器重新格式化为EXT2,并且由于修改后的源代码,修改后的文件系统将应用于它?或者我是否过于简单化了?
问题2:扩展元数据
我项目的一个重要部分要求我扩展驱动器上每个文件包含的元数据。在这种情况下,元数据指的是诸如所有者,创建的时间戳,修改的时间戳等详细信息。我希望能够做的是添加并能够更新其他元数据字段。我认为最好的方法是修改inode,但在查看源代码很长一段时间后,我看不到任何明显的开始。
问题3:后果?
假设我成功在修改后的文件系统上添加和使用此字段。如果一个文件随后被移动到另一个驱动器,使用未修改的EXT2文件系统,那么这个额外元数据字段中包含的数据是否会丢失?显然文件一直在不同的文件系统之间移动而没有问题,但我不确定他们是如何处理这个问题的。我应该注意,不需要能够在任何其他系统上访问此元数据,我只要求数据不会丢失。
加分问题
到目前为止,我一直在使用CentOS作为我的原型。如果有任何关于这是好/坏/无关紧要的建议,我将不胜感激。
编辑/更新澄清问题
正如我之前所说,机密性使我无法确切地讨论最终游戏的内容。这是一个非常基本的问题,希望能解释更多我需要做的事情。
传统文件系统跟踪三个主要时间戳:创建,上次访问,上次修改。假设我想添加一种新类型的元数据,称为“修改历史记录”,它存储每个修改的时间戳列表。我能想到的唯一方法就是添加另一个指向数据块的属性,每次写入该文件/ inode时都会附加时间戳。
同样,实际问题要复杂得多,但希望能更好地了解我需要做的事情。