linux loop device介紹


在Linux中,有一種特殊的塊設備叫loop device,這種loop device設備是通過影射操作系統上的正常的文件而形成的虛擬塊設備。因為這種設備的存在,就為我們提供了一種創建一個存在於其他文件中的虛擬文件系統的機制。

示例
第一步:使用dd命令創建文件
dd if=/dev/zero of=FS_on_file bs=1k count=10000
第二步:使用losetup命令創建一個loop device
losetup /dev/loop0 FS_on_file
第三步:創建一個文件系統
mkfs -t ext3 /dev/loop0
第四步:掛載這個文件系統
(the mount point '/mnt/FS_file0' has been created before by 'mkdir'):
mount /dev/loop0 /mnt/FS_file0
第五步:若要刪除剛才創建的這些對象,依次執行如下步驟:
$ umount /dev/loop0
$ losetup -d /dev/loop0
$ rm FS_on_file
說明

1. 詳細的losetup命令如下

[root@linuxprobe ~]# losetup
usage:
losetup loop_device # give info
losetup -d loop_device # delete
losetup [ -e encryption ] [ -o offset ] loop_device file # setup

其中加密選項有如下幾種方式:

NONE use no encryption (default).
XOR use a simple XOR encryption.
DES use DES encryption.

DES encryption is only available if the optional DES package has been added to the kernel.
DES encryption uses an additional start value that is used to protect passwords against dictionary attacks.

2. 默認情況下系統支持的loop device是8個

[root@linuxprobe ~]# ls -ltr /dev/loop*
brw-r----- 1 root disk 7, 0 Jul 19 2009 /dev/loop0
brw-r----- 1 root disk 7, 1 Jul 19 2009 /dev/loop1
brw-r----- 1 root disk 7, 2 Jul 19 2009 /dev/loop2
brw-r----- 1 root disk 7, 3 Jul 19 2009 /dev/loop3
brw-r----- 1 root disk 7, 4 Jul 19 2009 /dev/loop4
brw-r----- 1 root disk 7, 5 Jul 19 2009 /dev/loop5
brw-r----- 1 root disk 7, 6 Jul 19 2009 /dev/loop6
brw-r----- 1 root disk 7, 7 Jul 19 2009 /dev/loop7

如果需要超過8個loop device,那么使用losetup命令的時候可能會遇到類似的錯誤 'no such device',這是因為超過了可用loop device設備的最大限制,依據你的Linux系統,可以通過修改 /etc/modprobe.conf 配置文件,增加如下參數的方式進行擴展

options loop max_loop=20 --比如我增加到20個

如果要了馬上生效的話,可以執行以下命令立即加載該模塊。

modprobe -v loop
[root@linuxprobe ~]# cat /etc/modprobe.conf|grep loop
options loop max_loop=20

[root@linuxprobe ~]# modprobe -v loop
insmod /lib/modules/2.6.9-42.0.0.0.1.ELsmp/kernel/drivers/block/loop.ko max_loop=20
[root@linuxprobe ~]# ls -ltr /dev/loop*
brw-rw---- 1 root disk 7, 8 Jul 19 07:44 /dev/loop8
brw-rw---- 1 root disk 7, 9 Jul 19 07:44 /dev/loop9
brw-rw---- 1 root disk 7, 10 Jul 19 07:44 /dev/loop10
brw-rw---- 1 root disk 7, 11 Jul 19 07:44 /dev/loop11
brw-rw---- 1 root disk 7, 12 Jul 19 07:44 /dev/loop12
brw-rw---- 1 root disk 7, 13 Jul 19 07:44 /dev/loop13
brw-rw---- 1 root disk 7, 14 Jul 19 07:44 /dev/loop14
brw-rw---- 1 root disk 7, 15 Jul 19 07:44 /dev/loop15
brw-rw---- 1 root disk 7, 16 Jul 19 07:44 /dev/loop16
brw-rw---- 1 root disk 7, 17 Jul 19 07:44 /dev/loop17
brw-rw---- 1 root disk 7, 18 Jul 19 07:44 /dev/loop18
brw-rw---- 1 root disk 7, 19 Jul 19 07:44 /dev/loop19
brw-rw---- 1 root disk 7, 0 Jul 19 2009 /dev/loop0
brw-rw---- 1 root disk 7, 1 Jul 19 2009 /dev/loop1
brw-rw---- 1 root disk 7, 2 Jul 19 2009 /dev/loop2
brw-rw---- 1 root disk 7, 3 Jul 19 2009 /dev/loop3
brw-rw---- 1 root disk 7, 4 Jul 19 2009 /dev/loop4
brw-rw---- 1 root disk 7, 5 Jul 19 2009 /dev/loop5
brw-rw---- 1 root disk 7, 6 Jul 19 2009 /dev/loop6
brw-rw---- 1 root disk 7, 7 Jul 19 2009 /dev/loop7

有了這個東西,在Linux下就可以借助file來測試學習ASM了。

本文轉載自:http://www.linuxprobe.com/linux-loop-device-introduction.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM