본문 바로가기

Ubuntu에서 멀티파티션을 가진 디스크 이미지 읽고 쓰기

by rudals.kim 2021. 8. 24. 댓글 개
반응형

오래전에 구매해 놓은 이북 리더기를 분해 해 보니 마이크로 SD 카드를 사용하여 부팅을 하고 있었습니다.

백업 차원에서 마이크로 SD를 한 부 복제 해 뒀는데 이 한 개의 마이크로 SD 이미지 안에 여러 개의 파티션을 가지고 있는 구조로 되어 있었습니다.

 

파티션의 데이터를 수정하기 위해 ubuntu 20.04를 사용하여 이미지내에 존재하는 멀티 파티션을 읽기/쓰기 테스트를 해 보았습니다.

 

먼저 백업한 이미지를 작업 디렉터리에 test.img로 복사하였습니다.

losetup이라는 명령어가 있는데 디스크 이미지를 loop device로 링크시켜주는 명령어입니다.

자세한 옵션 및 내용은 아래 man page를 참고하시기 바랍니다.

 

Ubuntu Manpage: losetup - set up and control loop devices

Powered by the Ubuntu Manpage Repository, file bugs in Launchpad © 2019 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.

manpages.ubuntu.com

ubuntu의 terminal에서 'sudo losetup -a' 명령어로 현재 loop device list를 확인해 보면 0~4번까지 5개의 loop device가 있습니다.

'sudo losetup -v -f ./test.img' 명령으로 loop device 생성 후 다시 확인해 보면 /dev/loop5 디바이스가 생성된 것을 확인해 볼 수 있습니다. (아래 그림 녹색 화살표 참고)

추후 loop device를 해제하려면 'sudo losetup -d /dev/loop5'로 loop device를 해제해 주면 됩니다.

losetup 명령어를 사용해 loop device를 생성해 보았습니다.

다음은 partx라는 명령어를 사용하여 loop device의 파티션 정보를 읽어 보도록 하겠습니다.

partx는 fdisk와는 달리 파티션 정보를 변경하지 않고 단지 파티션의 존재와 파티션 번호를 커널에 알려 주는 역할만 합니다. 자세한 내용은 아래 man page를 참고하시기 바랍니다.

 

Ubuntu Manpage: partx - tell the kernel about the presence and numbering of on-disk partitions

Powered by the Ubuntu Manpage Repository, file bugs in Launchpad © 2019 Canonical Ltd. Ubuntu and Canonical are registered trademarks of Canonical Ltd.

manpages.ubuntu.com

'sudo partx --show /dev/loop5' 명령어로 파티션 정보를 읽어보면 하나의 디바이스 내에 총 6개의 파티션이 있는 것을 알 수 있습니다. 

'sudo partx -v --add /dev/loop5' 명령어를 사용하여 파티션을 추가해 줍니다.

6개의 파티션이 /dev/loop5p1~6까지 생성되었고 blkid로 /dev/loop5*를 보면 각 디바이스의 속성 값 정보를 확인해 볼 수 있습니다.

테스트 디렉터리에 mnt 디렉터리를 생성 후 mount 명령어로 loop device의 loop5p2 파티션을 마운트 해 보았습니다.

정상적으로 마운트가 되었고 mnt 디렉터리를 list 명령어로 확인 해 보니 정상적으로 파일이 보입니다.

이북 리더가 안드로이드 OS로 동작되어 안드로이드용 파일 시스템 구조로 구성되어 있음을 확인할 수 있었습니다.

이로써 디스크 이미지의 멀티 파티션을 개별 액세스 할 수 있게 되어 파일 수정 및 추가/삭제가 가능하게 되었습니다.

반응형

댓글