Làm thế nào để gắn nhiều phân vùng từ hình ảnh đĩa cùng một lúc?


9

Tôi đang cố gắn kết phân vùng root và boot của hình ảnh Raspbian :

mount -v -o offset="70254592" -t ext4 /mnt/X/raspbian-jessie.img /tmp/raspbian
mount -v -o offset="4194304" -t vfat /mnt/X/raspbian-jessie.img /tmp/boot

khởi động gắn kết, khi root được gắn kết quả trong:

mount: /mnt/X/raspbian-jessie.img: overlapping loop device exists

Làm cách nào để gắn nhiều phân vùng trên một ảnh đĩa cùng một lúc? (đối với đĩa rõ ràng là có thể, tại sao không cho các tệp?)

Câu trả lời:


6

tùy chọn losetup 2.21 -P

losetup -P -f --show my.img

Tạo một /dev/loopXpYcho mỗi phân vùng.

Ưu điểm: thực thi được cài đặt sẵn trong nhiều bản phát hành (gói linux-linux).

Nhược điểm: tùy chọn khá gần đây, không có trong Ubuntu 14.04, trước đó chỉ cần sử dụng kpartx: https://unix.stackexchange.com/a/405639/32558

losetup -P tự động hó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"
)

7

Bạn cần chỉ định chiều dài của (các) phân vùng để tránh chồng chéo. Tùy chọn sizelimit, xem man mount, man losetup.


1

Sử dụng kpartxcông cụ. Nó sẽ ánh xạ các phân vùng hình ảnh bằng cách sử dụng /dev/mappermà bạn có thể gắn kết trực tiếp.

$ sudo kpartx -a disk.img
$ sudo mount -o loop /dev/mapper/loop0p2 /mnt

Tái bút Đừng quên xóa ánh xạ sau khi bạn hoàn thành:sudo kpartx -d disk.img

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.