0

对于我正在进行的项目,我需要能够修改 EXT2 文件系统。我已经进行了广泛的研究,但由于这不是一项通常需要的任务,因此在线可用的有用信息似乎很少。不幸的是,由于保密,我无法详细说明我正在做什么,但我可以将情况分解为几个关键问题,我将非常感谢您的帮助。我应该注意到我在 Linux 内核/操作系统开发方面的经验很少。

我意识到这不是一个容易解决的问题,而且这肯定是一个很大的挑战,因为这只是项目的一小部分。非常感谢您对这些问题(或任何其他警告/建议)的任何帮助。

如果事实证明这是不可能的,那么整个项目将不得不重新考虑,这就是为什么我要从这一点开始。

问题一:从源代码到实现

这不是真正的第一个问题,但我需要先回答它,以确保我完全走在正确的轨道上!请记住,我是新手,所以这可能是一个愚蠢的问题。

据我所知,所有 EXT2 源代码都包含在 linux/fs/ext2/ 的内核源代码中。如果我要修改此源代码以进行我需要的更改,然后成功重建内核,如何使驱动器或分区使用这个新修改的文​​件系统?我是否可以使用新内核将驱动器重新格式化为 EXT2,并且由于修改了源代码,修改后的文件系统将应用于它?还是我过于简单化了?

问题 2:扩展元数据

我的项目的一个重要部分需要我扩展驱动器上每个文件包含的元数据。在这种情况下,元数据是指诸如所有者、创建的时间戳、修改的时间戳等详细信息。我想做的是添加并能够更新一个额外的元数据字段。我认为最好的方法是修改inode,但是在查看源代码很长时间后,我看不到任何明显的开始。

问题 3:后果?

假设我成功地在修改后的文件系统上添加和使用了这个字段。如果一个文件随后被移动到另一个驱动器,并且具有未修改的 EXT2 文件系统,那么包含在这个额外元数据字段中的数据会丢失吗?显然文件一直在不同的文件系统之间移动没有问题,但我不确定他们如何处理这个问题。我应该注意,不需要能够在任何其他系统上访问此元数据,我只要求数据不会丢失。

奖金问题

到目前为止,我一直在使用 CentOS 作为我的原型。如果有任何关于这是否好/坏/无关紧要的建议,我将不胜感激。

编辑/更新以澄清问题

正如我之前所说,机密性使我无法准确讨论最终结果是什么。这是一个非常基本的问题,希望它能解释更多我需要做的事情。

传统文件系统跟踪三个主要时间戳:创建、上次访问、上次修改。假设我想添加一种新类型的元数据,称为“修改历史”,它存储每个修改的时间戳列表。我能想到的唯一方法是添加另一个指向数据块的属性,每次写入该文件/索引节点时都会附加时间戳。

同样,实际问题要复杂得多,但这希望能更好地了解我需要做的事情。

4

0 回答 0