Linux 的 BFS 檔案系統

BFS 檔案系統被 SCO UnixWare OS 用於 /stand 分割槽,該分割槽通常包含核心映象和啟動過程所需的一些其他檔案。

為了在 Linux 下訪問 /stand 分割槽,您顯然需要知道分割槽號,並且核心必須支援 UnixWare 磁碟切片(CONFIG_UNIXWARE_DISKLABEL 配置選項)。但是,BFS 支援不依賴於 UnixWare 磁碟標籤支援,因為也可以透過 loopback 掛載 BFS 檔案系統

# losetup /dev/loop0 stand.img
# mount -t bfs /dev/loop0 /mnt/stand

其中 stand.img 是一個包含 BFS 檔案系統映象的檔案。使用完畢並解除安裝後,您還需要透過以下方式釋放 /dev/loop0 裝置

# losetup -d /dev/loop0

您可以簡單地輸入以下命令來簡化掛載

# mount -t bfs -o loop stand.img /mnt/stand

這將自動分配第一個可用的 loopback 裝置(並在必要時載入 loop.o 核心模組)。如果 loopback 驅動程式沒有自動載入,請確保您已編譯該模組並且 modprobe 正在執行。請注意,如果系統上的 /etc/mtab 檔案是指向 /proc/mounts 的符號連結,則 umount 將不會釋放 /dev/loopN 裝置。您需要使用 losetup(8) 的 “-d” 開關手動執行此操作。閱讀 losetup(8) 手冊頁以獲取更多資訊。

要在 UnixWare 下建立 BFS 映象,您首先需要找出哪個切片包含它。命令 prtvtoc(1M) 是您的好幫手

# prtvtoc /dev/rdsk/c0b0t0d0s0

(假設您的根磁碟位於 target=0, lun=0, bus=0, controller=0)。然後,您查詢帶有標籤 “STAND” 的切片,通常是切片 10。有了這些資訊,您可以使用 dd(1) 建立 BFS 映象

# umount /stand
# dd if=/dev/rdsk/c0b0t0d0sa of=stand.img bs=512

為了以防萬一,您可以透過檢查幻數來驗證您是否做了正確的事情

# od -Ad -tx4 stand.img | more

前 4 個位元組應該是 0x1badface。

如果您對此 BFS 實現有任何補丁、問題或建議,請聯絡作者

Tigran Aivazian <aivazian.tigran@gmail.com>