wiki:waue/2011/0309

Version 1 (modified by waue, 10 years ago) (diff)

--

Linux Exfat 格式支援
解決 mac 10.5.4 格式化後, windows & linux 都無法掛載的問題

exFAT(Extended File Allocation Table,又名FAT64)是一種特別適合於閃存驅動器的檔案系統

FAT 開發商 微軟 全名 檔案配置表 (12位元版本) (16位元版本) (32位元版本) 發布 1980年前
微軟Disk BASIC) 1987年11月
(Compaq DOS 3.31) 1996年8月
(Windows 95 OSR2) 分區標識 0x01(MBR) 0x04, 0x06, 0x0E(MBR) 0x0B, 0x0C(MBR
EBD0A0A2-B9E5-4433
-87C0-68B6B72699C7(GPT
結構 FAT12 FAT16 FAT32 目錄內容 表格 檔案配置 連結串列 壞塊 對含損壞磁區的叢集加以標誌 限制 FAT12 FAT16 FAT32 最大檔案大小 32 MB 2 GB 4 GB - 1 byte
(232-1) 最大檔案數量 4,077
(212-19) 65,517
(216-19) 268,435,437
(228-19) 最長檔名限制 8.3 或者 長文件名255個字符 最大卷大小 32 MB 2 GB,
使用 64KB 叢集時可達 4 GB,但非所有系統均支援 2 TB
使用 32KB 叢集時可達 8 TB
Features FAT12 FAT16 FAT32 記錄日期 創建、修改、訪問 日期範圍 1980年1月1日2107年12月31日 日期解析度 2 s 岔流 非原生 屬性 唯讀,隱藏,系統,卷標,子目錄,歸檔[1] 訪問許可權 無 透明壓縮 Per-volume, StackerDoubleSpaceDriveSpace 無 透明加密 Per-volume only with DR-DOS

其實會使用的原因在於,用家中的mac mini server 可以對外接硬碟格式化的選擇,除了 mac 自家的檔案格式,就剩下 fat32 , exfat兩種可以選。

而fat32 有單一檔案4G以下的限制,因此只剩下exfat 可以選。

下面是讓linux 支援 exfat 的方式

apt-get install scons  libfuse-dev subversion
svn co http://exfat.googlecode.com/svn/trunk/ exfat-read-only
cd exfat-read-only
scons
scons install

不過陷阱在於,用mac mini server 選擇exfat 作格式化,似乎只有自己看得懂,安裝了patch的 windows 與 fuse-exfat 的linux 都無法讀取,一整個感覺良好。

$ sudo mount -t exfat-fuse -o allow_other /dev/sdc1 /mnt/
FUSE exfat 0.9.4
ERROR: invalid VBR checksum 0xd93a39db (expected 0xd93a39fb).

以下經過用ubuntu 小小測試成功破解以上限制。 到exfat的專案下,將 libexfat/mount.c 的 188~194 行註解,如下

        /* use zero_sector as a temporary buffer for VBR checksum verification *
        if (verify_vbr_checksum(ef->zero_sector, SECTOR_SIZE(*ef->sb), ef->fd) != 0)
        {
                free(ef->zero_sector);
                close(ef->fd);
                free(ef->sb);
                return -EIO;
        }*/

並重新執行 scons ; sudo scons install 即可