題 在Mac OSX中禁用臟卷安裝上的自動fsck_exfat


我有幾個在exFAT中格式化的大硬盤,以保持Win7 / Bootcamp和Snow Leopard之間的清晰兼容性。

這是問題所在: fsck_exfat 需要像6-8GB的RAM才能在大磁盤上完成。 (windows'chkdsk工作正常,順便說一句)。如果OSX檢測到卷是臟的,它似乎會自動嘗試 fsck 音量...但我發現它實際上並沒有解決任何問題。在這 自動 掃描,OSX必須將幾乎所有其他內容分頁。當我在家裡的桌子上時,我使用了幾個外置驅動器,如果exFAT卷很髒,那麼可能需要10分鐘才能使用筆記本電腦 每個驅動器,這是  Finder加載。

在建議使用備用文件系統之前:

  • FAT32 - 4gb文件限制對我來說是一個問題,我至少有一個3tb驅動器。考慮將格式化為較小的驅動器
  • NTFS - 我嘗試過的每個OSX NTFS驅動程序都很糟糕。 ntfs3g很瘋狂 CPU時間效率低下,由於某些原因經常凍結 整個系統在重I / O期間一次幾秒鐘。 Tuxera NTFS是 更好,但仍然蹩腳的大量使用。像Finder為大型圖像文件夾生成縮略圖,或者在300 + gb的託管庫中基本使用Songbird的事情變得非常不愉快(而且搖搖晃晃)。
  • HFS + - 我在Windows中使用的HFS驅動程序(Paragon與Seagate驅動器捆綁在一起)至少損壞了一個重要文件夾,我拒絕再次觸摸它

更糟糕的是,我試圖在沒有交換的情況下運行這台筆記本電腦,因為我對OSX的交換行為感到生氣(基本上,無論可用的RAM如何,它都會將非活動內容寫入磁盤)。禁用交換文件後的性能提升非常好。但!每當 fsck 開始, 自動由於RAM耗盡,筆記本電腦很快就會凍結。

這當然讓我陷入了一個循環:啟動筆記本電腦,OSX自動看到臟的exFAT fsck他們,筆記本電腦凍結,由於關機不好,泡沫,沖洗,重複...驅動器標記臟,不愉快。引導進入Win7並運行chkdsk(並且乾淨地關閉)會突破這個循環。現在重新啟用交換:-(

最好的部分是我 仍然 必須手動修復臟卷,因為無論出於何種原因,它們以只讀方式掛載!我只能在我之後撤消 fsck 他們自己!

這是最令人沮喪的。那麼...如何禁用自動 fsck_exfat 在臟的exFAT掛載上運行?或者你有其他解決方案嗎?我不介意OSX安裝驅動器RO,如果這意味著我保持對我的電腦的控制(並且可以 fsck 以後,在我閒暇時開車)。


6
2017-08-10 00:17


起源


有趣的是你不相信Paragon的司機。我有完全相反的經歷; OS X損壞了許多exFAT格式化的驅動器。我根本不相信Apple的exFAT驅動程序。但我從未讓Paragon搞砸過一個磁盤。 - Wes Sayeed


答案:


放棄:我無法正確測試它,但以下可能會給你一些成功。

背景的想法:在搜索XNU內核代碼以獲取Apple可能實現此功能的有用參考,並分析漏斗中的exfat_mount二進製文件之後,我預測會替換 FSRepairExecutable 要么 FSVerificationExecutable 簡單地總是回歸成功可以解決你的挑戰。

以下是ExFAT相關plist的相關部分:

  "FSPersonalities" => {
    "ExFAT" => {
      "FSRepairArguments" => "-y"
      "FSVerificationArguments" => "-n"
      "FSFormatMinimumSize" => 1048576
      "FSFormatExecutable" => "newfs_exfat"
      "FSFormatContentMask" => "Windows_NTFS"
      "FSName" => "ExFAT"
      "FSRepairExecutable" => "fsck_exfat"
      "FSMountExecutable" => "mount_exfat"
      "FSMountArguments" => ""
      "FSVerificationExecutable" => "fsck_exfat"
      "FSXMLOutputArgument" => "-x"
      "FSFormatArguments" => ""
      "FSFormatMaximumSize" => 144115188075855872
    }
  }

由於此文件位於 /System 文件夾,較新的OSX內核使用SIP保護它。因此,上面描述的微小繁瑣的解決方法。

或者,為了便於將來編輯此plist文件而不會過多地損害您的安全性,您還可以在恢復模式下為文件系統部分禁用SIP時啟用SIP:

   csrutil enable --without fs

鑑於您似乎已經在某種程度上解決了您的問題,您是否曾想過轉向像Parallels或VMWare這樣的虛擬化解決方案?


1
2017-08-14 22:55



我剛看到這個。謝謝你的全面答复;不幸的是我不再有這台機器所以我無法測試它:/ - Tom Corelis