天天看點

檔案作為塊裝置通路

1. loop裝置介紹

    在類 UNIX 系統裡,loop 裝置是一種僞裝置(pseudo-device),或者也可以說是仿真裝置。它能使我們像塊裝置一樣通路一個檔案。

在使用之前,一個 loop 裝置必須要和一個檔案進行連接配接。這種結合方式給使用者提供了一個替代塊特殊檔案的接口。是以,如果這個檔案包含有一個完整的檔案系統,那麼這個檔案就可以像一個磁盤裝置一樣被 mount 起來。

    上面說的檔案格式,我們經常見到的是 CD 或 DVD 的 ISO CD光牒鏡像檔案或者是軟碟(硬碟)的 *.img 鏡像檔案。通過這種 loop mount (回環mount)的方式,這些鏡像檔案就可以被 mount 到目前檔案系統的一個目錄下。

    至此,順便可以再了解一下 loop 之含義:對于第一層檔案系統,它直接安裝在我們計算機的實體裝置之上;而對于這種被 mount 起來的鏡像檔案(它也包含有檔案系統),它是建立在第一層檔案系統之上,這樣看來,它就像是在第一層檔案系統之上再繞了一圈的檔案系統,是以稱為 loop。

2. losetup指令

    losetup [ -e encryption ] [ -o offset ] loop_device file

    losetup [ -d ] loop_device

說明:

此指令用來設定循環裝置。循環裝置可把檔案虛拟成塊裝置,籍此來模拟整個檔案系統,讓使用者得以将其視為硬碟驅動器,光驅或軟驅等裝置,并挂入當作目錄來使用。

上面,指令格式中的選項與參數名:

-e 表示加密的方式

-o 設定資料偏移量

-d 解除安裝裝置

loop_device 循環裝置名,在 linux 下如 /dev/loop0 , /dev/loop1 等。

file 要與循環裝置相關聯的檔案名,這個往往是一個磁盤鏡象檔案,如 *.img

3. 使用舉例

(1)建立空的磁盤鏡像檔案,這裡建立一個1.44M的軟碟

          $ dd if=/dev/zero of=floppy.img bs=512 count=2880

(2)使用 losetup将磁盤鏡像檔案虛拟成快裝置

          $ losetup /dev/loop1 floppy.img

(3)挂載塊裝置

          $ mount /dev/loop0 /tmp

    經過上面的三步之後,我們就可以通過/tmp目錄,像通路真實快裝置一樣來通路磁盤鏡像檔案floppy.img。

(4) 解除安裝loop裝置

          $ umount /tmp

          $ losetup -d /dev/loop1

如何挂載一個鏡像檔案(how to mount an image file)