참고: 이 질문은 기본적으로 위의 질문과 중복된다는 데 동의하지만 @alienth의 답변(아래)이 더 간결하다고 생각하므로 다른 질문에 대해 논의하기 전에 먼저 살펴보는 것이 좋습니다.
나는 전체 우분투 시스템 드라이브를 정기적으로 다른 드라이브에 백업/이미지/복제합니다.
dd if=/dev/sda of=/media/disk1/backup.iso
실험 후, 드라이브 장애 등을 겪은 후 드라이브를 복원해야 할 때 매우 유용합니다.
그러나 이제 해당 .iso(예: 드라이브를 추가할 때 /dev/sda1)에서 파티션을 마운트하고 싶습니다. 백업하는 경우:
dd if=/dev/sda1 of=/media/disk1/backup.iso
그런 다음 우분투의 마운트 볼륨 유틸리티를 사용하여 .iso를 쉽게 마운트할 수 있습니다. 그러나 이 유틸리티는 전체 드라이브의 ISO에서는 작동하지 않습니다. 원본 iso에서 sda1을 마운트하는 방법이 있나요?
답변1
디스크 이미지에서 파티션이 시작되는 위치를 결정해야 합니다. 이렇게 하려면 다음 명령을 실행하십시오.
sudo parted /media/disk1/backup.iso unit s print
출력은 다음과 같습니다.
Model: (file)
Disk /tmp/file: 200000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 199999s 197952s primary
Start
논리 섹터 크기에 마운트하려는 파티션 크기 를 곱해야 합니다 . 이 경우 첫 번째 파티션을 마운트하려면 위치는 2048 * 512
, 또는 가 됩니다 1048576
.
그런 다음 위에서 결정한 값을 매개변수에 삽입하여 루프백 설정을 사용하여 파티션을 마운트할 수 있습니다 offset
.
mount -o loop,offset=1048576 /media/disk1/backup.iso /mnt/mydisk
답변2
전체 디스크 이미지에서 파티션 테이블을 보는 방법이 있습니다. 사실은 2개입니다.
첫 번째 방법:
# losetup /dev/loop0 /media/disk1/backup.iso
# fdisk /dev/loop0 # Be very careful with this!
Command: w
이상적으로는 파티션 /dev/loop0p1
등에 대한 루프 장치를 생성해야 합니다. 그런 다음 일반적으로 루프 장치로 마운트할 수 있습니다. 백업이 손상되지 않도록 읽기 전용으로 설정하는 것이 좋습니다. 파티션 읽기를 직접 사용하는 것보다 더 안전한 방법이 있을 수 있습니다. 그러나 이러한 안정성 문제가 발생했는데 이것이 제가 찾은 최고의 방법입니다./dev/loop0p2
backup.iso
fdisk
partprobe
kpartx
fdisk
두 번째 방법은 더 어렵습니다. 여기에는 파티션 시작 위치( fdisk -l /dev/loop0
)를 수동으로 읽은 다음 루프 장치가 파티션 시작 위치에서 시작되도록 losetup
적절한 옵션을 사용하여 다시 실행하는 작업이 포함됩니다. --offset
전달하는 정확한 숫자는 출력에 따라 다르지만 fdisk
시작 블록에 블록 크기를 곱한 것과 동일한 바이트 단위의 오프셋입니다. 이 시점에서 /dev/loop0
직접 마운트할 수 있습니다(다시 말하지만 읽기 전용이 신중합니다).