【问题标题】:Implementing ls command for NTFS in Linux在 Linux 中为 NTFS 实现 ls 命令
【发布时间】:2012-06-09 22:37:48
【问题描述】:

我正在尝试构建一个类似 bash 的脚本,它提供了一些功能,例如 ls、pwd、cat 等。在 linux 系统中的 NTFS 上工作。假设我有一个 NTFS 映像,并使用 fopen 将其作为文件打开。然后,我读取了一些扇区,例如位于 0x0B 的 BPB,并获取了一些有关 NTFS 映像的一般信息。我需要到达根目录指针,然后遍历文件系统以实现这些功能,尤其是对于 ls 和 pwd。我在谷歌上搜索了很多关于 NTFS 的内部细节和偏移量的信息,但我不知道如何实现这个目标。如果没有可理解的文档或示例,我将无法继续前进。

任何帮助、文档、提示、偏移表等将不胜感激。

谢谢。

【问题讨论】:

  • 与其重新发明世界,不如获取一份Cygwin 的副本来自 MSDN 和 SysInternals 的 Windows 文件系统内部(包括但不限于 NTFS)。
  • 使用libntfsntfsprogs 似乎比从头重写它们更容易。你为自己做了很多额外的工作。
  • 你不能使用Linux的NTFS文件系统驱动有什么原因吗?
  • 大多数现代 Linux 内核都可以原生挂载 NTFS,因此无需编写任何内容。
  • 是的,我知道我可以使用高级库或工具来实现这一点。只是我正在尝试熟悉文件系统,并且我已经在 ext3 上完成了相同的项目,我现在完全了解。还是谢谢你。

标签: c filesystems operating-system 64-bit ntfs


【解决方案1】:

我猜这是一个学习练习。所以,首先:

  1. 为特定文件系统编写 bashlike 解释器错误的事情。 您应该专注于了解 NTFS 文件系统的细节。

  2. 编写 lscat 以便能够处理特定文件系统中的文件是错误的事情。 您应该专注于了解 NTFS 文件系统的细节。

  3. 如果您编写文件系统驱动程序(例如使用FUSE),那么原始的bashlscat 将自动与该文件系统一起使用。因为驱动程序将能够将openread 等系统调用转换为文件系统特定的过程。

最后:

  1. 了解FUSE太棒了。看到这个Hello World FUSE module。运行它,玩它。

  2. 下载NTFS-3G 的源代码,这是当今大多数 GNU/Linux 发行版使用的 NTFS 驱动程序。它使用保险丝。了解它的工作原理。

【讨论】:

    猜你喜欢
    • 2016-07-25
    • 2017-04-09
    • 2012-11-13
    • 1970-01-01
    • 2015-06-10
    • 2022-11-13
    • 2010-09-17
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多