2012-06-05 45 views
0

我正在嘗試構建一個類似bash的腳本,它提供了一些功能,例如在linux系統中的NTFS上工作的ls,pwd,cat等等。假設我有一個NTFS映像,並用fopen打開它作爲一個文件。然後,我讀取了一些扇區,例如駐留在0x0B處的BPB,並獲取了有關NTFS映像的一些常規信息。我需要訪問根目錄指針,然後遍歷文件系統以便實現這些函數,特別是對於ls和pwd。我google了很多關於NTFS的內部細節和偏移量,但我無法找到如何實現目標。沒有可理解的文檔或樣本,我無法進一步發展。在Linux中實現ls命令用於NTFS

任何幫助,文件,提示,補償表等將不勝感激。

謝謝。

+2

而不是重新發明世界,你可能希望得到一份[Cygwin](http://www.cygwin.com/)如果你真的想要了解血淋淋的細節,應該從MSDN和SysInternals找到關於Windows文件系統內部(包括但不限於NTFS)需要了解的所有內容。 – paulsm4

+1

似乎使用'libntfs'或'ntfsprogs'會比從頭開始重寫更容易。你爲自己做了很多額外的工作。 –

+0

有沒有理由不能使用Linux的NTFS文件系統驅動程序? – twalberg

回答

4

我猜這是一個學習練習。所以,第一:

  1. bash像解釋特定的文件系統是錯誤的事情。 您應該專注於理解NTFS文件系統的細節。

  2. 寫作lscat能在一個特定的文件系統,處理文件是錯誤的事情。 您應該專注於理解NTFS文件系統的細節。

  3. 如果你寫一個文件系統驅動程序(使用說FUSE),那麼原來bashlscat將自動與該文件系統的工作。因爲驅動程序將能夠將系統調用(如openread)轉換爲文件系統特定過程。

最後:

  1. 瞭解FUSE。它是真棒。看到這Hello World FUSE module。運行它,玩它。

  2. 下載NTFS-3G的源代碼,這是目前大多數GNU/Linux發行版使用的NTFS驅動程序。它使用FUSE。瞭解它是如何工作的。