Linux losetup 命令用于設置循環設備。
循環設備可把文件虛擬成區塊設備,籍以模擬整個文件系統,讓用戶得以將其視為硬盤驅動器,光驅或軟驅等設備,并掛入當作目錄來使用。
losetup [-d][-e <加密方式>][-o <平移數目>][循環設備代號][文件]
參數:
(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
一個完整測試實例
1. 首先創建一個 1G 大小的空文件:
# dd if=/dev/zero of=loopfile.img bs=1G count=1 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB) copied, 69.3471 s, 15.5 MB/s
2. 對該文件格式化為 ext4 格式:
# mkfs.ext4 loopfile.img 。。。。
3. 用 file 命令查看下格式化后的文件類型:
# file loopfile.img loopfile.img: Linux rev 1.0 ext4 filesystem data, UUID=a9dfb4a0-6653-4407-ae05-7044d92c1159 (extents) (large files) (huge files)
4. 準備將上面的文件掛載起來:
# mkdir /mnt/loopback # mount -o loop loopfile.img /mnt/loopback
mount 命令的 -o loop 選項可以將任意一個 loopback 文件系統掛載。
上面的 mount 命令實際等價于下面兩條命令:
# losetup /dev/loop0 loopfile.img # mount /dev/loop0 /mnt/loopback
因此實際上,mount -o loop 在內部已經默認的將文件和 /dev/loop0 掛載起來了。
然而對于第一種方法(mount -o loop)并不能適用于所有的場景。比如,我們想創建一個硬盤文件,然后對該文件進行分區,接著掛載其中一個子分區,這時就不能用 -o loop 這種方法了。因此必須如下做:
# losetup /dev/loop1 loopfile.img # fdisk /dev/loop1
6. 卸載掛載點:
# umount /mnt/loopback