Làm cách nào để gắn hình ảnh đĩa đa phân vùng trong Linux?


23

Tôi đã tải xuống một hình ảnh thẻ SD thô có hai phân vùng.

Nó gây ra một số lỗi hệ thống tệp khi tôi cố gửi trực tiếp vào thẻ SD. Tôi không chắc chắn nếu thẻ bị lỗi hoặc hình ảnh.

Có cách nào để kiểm tra hình ảnh này mà không ghi nó vào thẻ vật lý không? Giống như cố gắng gắn kết các phân vùng riêng biệt hoặc kiểm tra các bảng?

Câu trả lời:


20

Bạn có thể sử dụng kpartx hoặc partx để tạo các thiết bị lặp cho các phân vùng trên hình ảnh, sau đó gắn kết chúng. Vì vậy:

$ sudo kpartx -v -a file.iso
add map loop0p1 (253:17): 0 8382464 linear 7:1 2048
$ mount /dev/mapper/loop0p1 ./mnt_point
...  do something with the partition  ...
$ umount ./mnt_point
$ kpartx -d -v file.iso
del devmap : loop0p1
loop deleted : /dev/loop0

hoặc là:

$ sudo partx -a -v file.iso
partition: none, disk: file.iso, lower: 0, upper: 0
Trying to use '/dev/loop0' for the loop device
/dev/loop0: partition table type 'dos' detected
range recount: max partno=1, lower=0, upper=0
/dev/loop0: partition #1 added
$ mount /dev/loop0p1 ./mnt_point
...  do something with the partition  ...
$ umount /dev/loop0p1 ./mnt_point
$ sudo partx -d -v /dev/loop0
partition: none, disk: /dev/loop0, lower: 0, upper: 0
/dev/loop0: partition #1 removed

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


Cảm ơn @ thẳng thắn. Chỉnh sửa đã bị từ chối bởi các nhà phê bình trước khi tôi có cơ hội để có được nó.
Catskul

14

losetup -Pf trong produc-linux> = 2.21 (Ubuntu 16.04)

sudo losetup -Pf disk.img
sudo mkdir /mnt/loop0p1
sudo mount /dev/loop0p1 /mnt/loop0p1

Xem trang người dùng losetup (8)https://askubfox.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/673257#673257

losetup -P tự động hóa

Dưới đây là các chức năng để tự động hóa nếu hơn nữa. Sử dụng:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Nguồn:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

1

Bạn có thể thử:

mount -t loại -o loop ./image / mnt

trong đó "type" = fs type và "image" là tên của tệp bạn đã tải xuống


3
Suy nghĩ về nó, điều đó có thể không hoạt động với một hình ảnh có chứa nhiều phân vùng.
Tog

2
bạn sẽ phải chỉ định phần bù của phân vùng đơn để gắn kết với thứ gì đó như "mount -o loop, ro, offset = XXXXXXXX imagefile / mnt"
Mr Shunz

1
Sẽ không losetup làm việc để chỉ định một bù?
Tog

bạn đã đúng ... với losetup, bạn có thể đặt offset cho phân vùng để tạo một thiết bị loopback có thể được gắn đơn giản với mount / dev / loopX / mnt
Mr Shunz

1

Câu trả lời này trên ServerFault cho thấy:

sử dụng losetup để có được một / dev / loop? thiết bị, sau đó sử dụng kpartx trên nó để tạo ánh xạ dev cho các phân vùng trong tệp hình ảnh.

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.