Làm thế nào tôi có thể gắn một hình ảnh đĩa?


26

Tôi có một hình ảnh đĩa myimage.diskchứa bảng phân vùng và phân vùng chính (tức là hệ thống tập tin FAT32). Hãy nghĩ rằng như một hình ảnh bút USB.

Tôi muốn gắn kết phân vùng chính vào một thư mục địa phương. Tôi biết làm thế nào để gắn một hình ảnh phân vùng bằng cách sử dụng các tiện ích vòng lặp nhưng ở đây tôi có hình ảnh đĩa. Tôi đoán là tôi phải gắn hình ảnh "bỏ qua" bảng phân vùng nhưng làm thế nào tôi có thể làm điều đó?


7
Xem thêm superuser.com/questions/117136/ cấp Bạn có thể muốn sử dụng đơn giản losetup --partscan --find --show disk.imgtheo saumount /dev/loop0p1 /mnt/disk
Flow

Câu trả lời:


44

Công cụ kpartx làm cho điều này dễ dàng hơn. Nó tạo các thiết bị lặp trong / dev / mapper cho mỗi phân vùng trong hình ảnh của bạn. Sau đó, bạn có thể gắn thiết bị lặp tương ứng với phân vùng mong muốn của bạn mà không phải tính toán bù đắp thủ công.

Ví dụ: để gắn phân vùng đầu tiên của ảnh đĩa:

kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage

Khi bạn hoàn thành với hình ảnh, hãy xóa các thiết bị lặp:

umount /mnt/myimage
kpartx -d -v myimage.disk

Ngoài ra, nếu bạn có kernel gần đây và vượt qua loop.max_part = 63 khi khởi động (nếu vòng lặp được tích hợp sẵn) hoặc để modprobe (nếu vòng lặp là một mô-đun), thì bạn có thể thực hiện theo cách này:

losetup /dev/loop0 myimage.disk
partprobe /dev/loop0             # Re-read partition table if /dev/loop0 was used with a different image before
mount /dev/loop0p1 /mnt/myimage

Khi bạn hoàn thành vòng lặp:

losetup -d /dev/loop0

1
Bạn không cần -o loopở trên, /dev/mapper/loop0p1đã là một thiết bị khối (một thiết bị ánh xạ trên đầu thiết bị lặp, bạn không muốn có một lớp thiết bị lặp khác ở trên đó).
sch

2
Nếu bạn không nhận được các thiết bị phân vùng ( /dev/loop0p1vv) sau khi chạy losetup, hãy chạy partprobe /dev/loop0.
Vladimir Panteleev

kpartxdường như được cài đặt theo mặc định trong Linux Mint 18.
unfa

4

Tìm thấy điều này:

http://www.andremiller.net/content/mounting-hard-disk-image-including-partitions-USE-linux

có vẻ chính xác những gì tôi đang tìm kiếm.

Đây là phần quan trọng:

mount -o loop,ro,offset=32256 hda.img /mnt/rabbit

trong đó giá trị của offset được tính bằng byte. Cách được đề xuất để lấy phần bù là trỏ partedvào hình ảnh, sau đó đơn vị B cho byte và lấy giá trị bắt đầu từ đầu ra in. Thay vào đó, giả sử bạn có dung lượng đĩa, hãy làm điều hiển nhiên: một khi bạn có phần bù và kích thước, chỉ cần sử dụng ddđể trích xuất mỗi phân vùng thành một tệp riêng biệt.


1
Để viết một câu trả lời thực sự tuyệt vời, bạn có thể giải thích những phần quan trọng nhất ở đây không? Có một liên kết là tuyệt vời, nhưng có thông tin ở đây sẽ là tốt nhất.
slhck

1
Đây là phần chính : mount -o loop,ro,offset=32256 hda.img /mnt/rabbit, trong đó giá trị của tính offsetbằng byte. Cách được đề xuất để lấy phần bù là điểm chia tay tại hình ảnh, sau đó unit Blấy byte và lấy startgiá trị từ printđầu ra. Thay vào đó, giả sử bạn có dung lượng đĩa, hãy làm điều hiển nhiên: một khi bạn có phần bù và kích thước, chỉ cần sử dụng ddđể trích xuất mỗi phân vùng thành một tệp riêng biệt.
một CVn

Vâng, xin lỗi vì quá ngắn. Như Michael đã chỉ ra phần có liên quan, tất nhiên, mountdòng chứa offsettùy chọn.
Emiliano

2
local_image_file=/var/tmp/image.img
first_byte=$(parted -m ${local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//')
loop_file=/var/tmp/loop
mkdir -p ${loop_file}
mount -o loop,ro,offset=${first_byte} ${local_image_file} ${loop_file}

1
Trong khi điều này có thể trả lời câu hỏi, nó sẽ là một câu trả lời tốt hơn nếu bạn có thể cung cấp một số lời giải thích tại sao nó làm như vậy.
DavidPostill

2

Ngày nay bạn có thể giảm thiểu công việc của bạn bằng cách sử dụng udisks. Giải pháp từ ArchWiki: udisks - Mount loop device

Để dễ dàng gắn ảnh ISO, sử dụng lệnh sau:

udisksctl loop-setup -r -f image.iso

Điều này sẽ tạo ra một thiết bị lặp và hiển thị hình ảnh ISO sẵn sàng để gắn kết. Sau khi ngắt kết nối, thiết bị lặp sẽ bị chấm dứt bởi udev.

-r Có cho tùy chọn chỉ đọc.


Điều này là tuyệt vời, cảm ơn cho thông tin. Thật điên rồ khi đây là lần đầu tiên tôi tìm thấy một tài liệu tham khảo udisksctl.
Oxwivi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.