Gắn kết, thường, phải được thực hiện trên các thiết bị khối. Trình điều khiển vòng lặp đặt một thiết bị đầu cuối khối vào tệp dữ liệu của bạn.
Nếu bạn thực hiện gắn kết vòng lặp mà không có losetup
thì hệ điều hành sẽ thực hiện một nền tảng.
ví dụ
$ dd if=/dev/zero of=/tmp/foo bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0798775 s, 1.3 GB/s
$ mke2fs /tmp/foo
mke2fs 1.42.9 (28-Dec-2013)
....
$ losetup
$ mount -o loop /tmp/foo /mnt1
$ losetup
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 1 0 /tmp/foo
$ umount /mnt1
$ losetup
$
Bạn có thể cần gọi losetup
trực tiếp nếu hình ảnh tệp của bạn có các phân vùng được nhúng trong đó.
ví dụ: nếu tôi có hình ảnh này:
$ fdisk -l /tmp/foo2
Disk /tmp/foo2: 104 MB, 104857600 bytes, 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1f25ff39
Device Boot Start End Blocks Id System
/tmp/foo2p1 2048 204799 101376 83 Linux
Tôi không thể gắn kết trực tiếp
$ mount -o loop /tmp/foo2 /mnt1
mount: /dev/loop0 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
Nhưng nếu tôi sử dụng losetup
và kpartx
sau đó tôi có thể truy cập vào các phân vùng:
$ losetup -f /tmp/foo2
$ losetup
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 0 0 /tmp/foo2
$ kpartx -a /dev/loop0
$ mount /dev/mapper/loop0p1 /mnt1
$
mount
đủ thông minh để gây rắc rối cho bạn. (như Stephen Harris thể hiện trong câu trả lời của mình)