我正在尝试构建一个像bash一样的脚本,提供一些功能,如ls,pwd,cat等,在Linux系统中运行NTFS。假设我有一个NTFS图像,我打开它作为fopen文件。然后,我读取了一些扇区,例如驻留在0x0B的BPB,并获取了一些关于NTFS映像的一般信息。我需要到达根目录指针然后遍历文件系统,以便实现这些功能,特别是对于ls和pwd。我谷歌了很多关于内部细节和NTFS的补偿,但我无法找到如何实现目标。没有可理解的文档或样本,我无法进一步发展。
任何帮助,文档,提示,偏移表等都将受到高度赞赏。
谢谢。
答案 0 :(得分:5)
我猜这是一次学习练习。所以,首先:
为特定文件系统编写bash
类似解释器是错误要做的事情。 您应该专注于了解NTFS文件系统的细节。
撰写ls
,cat
以便能够处理特定文件系统中的文件是错误的要做的事情。 您应该专注于了解NTFS文件系统的细节。
如果您编写文件系统驱动程序(例如使用FUSE),则原始bash
,ls
,cat
将自动使用该文件系统。因为驱动程序能够将open
和read
等系统调用转换为特定于文件系统的过程。
最后:
了解FUSE。这是 awesome 。见Hello World
FUSE module。跑吧,玩吧。
下载NTFS-3G的源代码,这是目前大多数GNU / Linux发行版使用的NTFS驱动程序。它使用FUSE。了解它的工作原理。