dd로 만든 SD 카드 이미지를 마운트하는 방법은 무엇입니까?


21

다음을 사용하여 Raspberry Pi SD 카드의 이미지를 만들었습니다 dd.

sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img

SD 카드에는 카드를 꽂을 때 자동으로 마운트되는 두 개의 파티션 (하나의 vfat, 하나의 ext4)이 포함되어 있습니다.

내 질문 : .img 파일에서 이러한 파티션을 마운트하려면 어떻게해야합니까?


자세한 내용은:

$ fdisk -l raspberry-backup-2014-04-10.img 

Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 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 identifier: 0x000981cb

                          Device Boot      Start         End      Blocks   Id  System
raspberry-backup-2014-04-10.img1            8192      122879       57344    c  W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2          122880     7761919     3819520   83  Linux

SD 카드에 이미지를 쓰지 않고 이미지를 마운트 하시겠습니까?
OrangeTux

예, .img 파일에 저장된 파일 시스템에 완전히 액세스하여 복사 / 수정 / 삭제 등을 할 수 있기를 원합니다. 카드가없는 파일
MrD

어쩌면 이 질문은 당신을 도와줍니다.
OrangeTux

불행히도 이것은 효과가 없으며 두 가지 시도를 모두 시도했습니다. 첫 번째는 / dev / loop0p1 장치를 만들지 않았습니다. 두 번째는 (그에 따라 시작점을 계산했습니다) wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error문제 가 발생합니다
MrD

또한 sudo fdisk -l /dev/loop0클레임 : 디스크 / dev / loop0에 유효한 파티션 테이블이 없습니다.
MrD

답변:


33

각 파티션마다 별도의 이미지를 만들거나와 같은 유틸리티를 설치하지 않으려면 in 명령 kpartx을 지정하여 각 파티션을 개별적으로 마운트 할 수 있습니다 .offsetmount

먼저 이미지 파일의 파티션을 검사하고 fdisk다음 을 사용하여 오프셋을 결정하십시오 .

$ fdisk -u -l rpi_image280914 

Disk rpi_image280914: 16.0 GB, 16012804096 bytes
255 heads, 63 sectors/track, 1946 cylinders, total 31275008 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 identifier: 0x000cdac7

           Device Boot      Start         End      Blocks   Id  System
rpi_image280914p1   *        2048      514047      256000    c  W95 FAT32 (LBA)
rpi_image280914p2          540672    31242239    15350784   83  Linux

Start원하는 파티션 의 섹터를 가져 와서 그 값에 Units크기를 곱하십시오 . 따라서 두 번째 파티션을 원하면을 얻을 수 540672 * 512 = 276824064있습니다.

이제 폴더를 만들고 파티션을 마운트하십시오 :

mkdir rpi_partition2
sudo mount -o loop,offset=276824064 rpi_image280914 rpi_partition2/

파티션 데이터로 원하는 작업을 마치면 :

sudo umount rpi_partition2/
rm -r rpi_partition2/

17

추가 테스트 후 솔루션을 직접 찾았습니다. kpartx

sudo kpartx -a raspberry-backup-2014-04-10.img

이 명령은 /dev/mapper/loop0p1및을 만들었습니다 /dev/mapper/loop0p2. 그런 다음이 파티션을 똑바로 장착 할 수 있습니다.

sudo mount -o rw -t ext4 /dev/mapper/loop0p2 mount_target/

1

파티션 (파일 시스템)의 내용을 탐색하거나 수정하는 것이 목표라면,이 명령 행은 sd 카드 덤프 my_sdcard_dump.img 의 파일 시스템을 mount_dir 디렉토리에 마운트합니다 .

part_id=2; INFILE=my_sdcard_dump.img; MOUNTPT=mount_dir PARTITION=${part_id}; sudo mount "$INFILE" "$MOUNTPT" -o loop,offset=$[ `/sbin/sfdisk -d "$INFILE" | grep "start=" | head -n $PARTITION | tail -n1 | sed 's/.*start=[ ]*//' | sed 's/,.*//'` * 512 ]

0

여러 개의 파티션이있는 전체 디스크의 이미지를 다루는 것은 매우 까다 롭습니다 . Linux는 루프백 장치에 연결되어 있어도 일반 파일에서 파티션 테이블을 읽도록 설계되지 않았으므로 파티션의 오프셋을 신중하게 식별하여 mount명령 에 전달해야합니다 .

바람직한 방법은 각 파티션의 개별 이미지를 작성하는 것입니다.

sudo dd if=/dev/sdf1 of=/home/myusername/raspberry-backup-sdf1-2014-04-10.img
sudo dd if=/dev/sdf2 of=/home/myusername/raspberry-backup-sdf2-2014-04-10.img

이제 이러한 파일을 디스크의 개별 파티션 인 것처럼 쉽게 처리하여 루프 장치 에 매핑하여 실제 디스크 파티션처럼 마운트 할 수 있습니다 . 루프 장치 또는 루프백 장치는 Linux에서 파일을 디스크 나 파티션과 같은 블록 장치로 취급하기위한 변환 계층을 제공하는 가상 장치입니다.

루프 장치는 일반적으로 /dev/loop0통과 /dev/loop8합니다. 다음 losetup명령으로 사용하지 않는 루프 장치를 식별하십시오 .

$ sudo losetup /dev/loop0
loop: can't get info on device /dev/loop0: No such device or address

이 응답은 할당되지 않은 루프 장치를 나타냅니다. 이제 이미지 파일 중 하나에 루프 장치를 할당 할 수 있습니다.

$ sudo losetup /dev/loop0 /home/myusername/raspberry-backup-sdf1-2014-04-10.img

이 명령의 출력이 없으면 성공을 나타냅니다. 이제는 /dev/loop0대부분 /dev/sdf1의 경우 SD 카드와 기능적으로 동일하며 일반적으로 다음과 같이 마운트 할 수 있습니다.

sudo mount -t vfat /dev/loop0 /media/sdimage-1

다른 루프 장치를 사용하여 프로세스를 반복하여 다른 파티션을 마운트하십시오. 완료되면 파일 시스템을 마운트 해제하고 루프 장치를 할당 해제하십시오.

sudo umount /dev/loop0
sudo losetup -d /dev/loop0

다른 사소한 이유로 이미지를 다른 사람에게 배포하여 SD 카드를 초기화하는 데 사용할 수 있기 때문에 두 개의 이미지 파일을 만드는 것을 피하고 싶습니다. 따라서 / boot 등과 같은 다른 파티션은 하나의 파일에 있어야합니다.
MrD
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.