본문 바로가기

Software&Hardware/Raspberry

백업된 라즈베리파이 이미지 용량 줄이기

반응형
라즈베리 파이(이하 rpi) 를 사용하다 보면 microSD 메모리를 백업하여야 하는 경우가 생깁니다. 

보통, 메모리 백업을 위해서 win32Imager를 사용하여 백업 하지만,  단점은 rpi 사용 저장공간과 상관없이 microsd용량으로 백업이 진행 됩니다.  


32기가로 작업 하였던 rpi 이미지을 굽기 위해선 32기가 이상의 메모리가 필요합니다. (32기가의 경우 제조사 별로 차이가 발생되어 안될 가능성이 있습니다.)
 

이 포스트는 rpi 백업된 rpi 이미지 용량을 줄이는 방법을 설명 합니다.


Host PC 의 운영체제는  Windows 7을 사용하였고, Guest PC 를 운영하기 위해서 Virtual box(버전 5.0.26)를 사용하였습니다.


Guest PC의 운영체제는 Ubuntu 14.04 LTS 를 사용하였습니다.   


 

먼저 보편적으로, 사용 되지 않는 패키지를 정리합니다. (물론 해당 패키지를 사용한다면 제거 할 필요는 없습니다.)
sudo apt-get remove --purge libreoffice-*
sudo apt-get remove --purge wolfram-engine

추후 다시 필요하다면 설치도 가능 합니다. 
sudo apt-get install libreoffice wolfram-engine

필요한 패키지를 설치 합니다. 
sudo apt-get update && sudo apt-get install gparted
패키지 저장소를 클리어 합니다
sudo apt-get clean

반복하여 진행하는 경우에는 아래부터 시작 하셔도 됩니다.




백업 받은 rpi 이미지를 준비 합니다. (windows 에선 보통 링크: win32imager 를 사용하여 이미지를 백업 받습니다. )


백업 이미지의 변화량을 확인 하기 위해서 파일 사이즈를 확인 합니다. (ls -al)

약 32기가의 메모리를 확인 하였고,   이미지의 파일명은 image_rpi.img 입니다.



이미지의 내부를 확인 하기 위해서 fdisk 를 사용합니다. 
sudo fdisk -l image_rpi.img


출력 정보를 살펴 봅니다. 일단 이미지는 32기가의 이미지 입니다. 


확인 하여야 하는 부분은 image_rpi.img2 부분의  Start Sector 입니다. 명령어 부분에 입력을 위해 적어 놓습니다. : 131072


리눅스 파티션을 루프백 디바이스 마운트 합니다.
sudo losetup /dev/loop0 image_rpi.img -o $((131072*512))

 


명령어 실행 후, 루프백 디바이스가 마운트가 되고, 파티션 조정을 위해서, GParted 를 실행 합니다.
sudo gparted /dev/loop0


GParted 메뉴에서 Partition-Resize/Move 을 클릭합니다. 

  


Resize/Move 창이 표시되고, 마우스로 변경전(최대크기) 사이즈와, 최소 사이즈를 확인 할 수 있습니다.




최소 공간이지만, 원활한 실행을 위해서 여유공간을 +200M 정도로 리사이즈 합니다.



메뉴 Edit-Apply All Operation 을 클릭 하여 수행 과정을 반영합니다.

 



수행 과정을 닫지 마시고, 메뉴를 확장하여 (세모를 클릭), 수행 과정에 대한 내용이 필요합니다.


필요 내용은, 'resize2fs -p /dev/loop0 5042176K' 입니다. 최종 파티션 사이즈로서 적어 놓습니다. : 5042176K


진행 과정 완료후, GParted 프로그램을 닫습니다.

프백 디바이스를 언마운트 한 후 (리눅스), 이번엔 rpi 이미지 전체를 마운트 합니다. 
sudo losetup -d /dev/loop0
sudo losetup /dev/loop0 img_rpi.img

줄어든 용량에 맞는 2번째 파티션 설정을 위해서 fdisk를 실행 합니다. 
sudo fdisk /dev/loop0

fdisk 실행시의 입력은 다음과 같이 진행 하였습니다.

Command (m for help): d  // 기존 파티션을 지웁니다.
Partition number (1-4): 2   

Command (m for help): n // 파티션을 다시 생성 합니다.
Select (default p): p
Partition number (1-4, default 2): 2
First sector (2048-62521343, default 2048): 131072
Last sector, +sectors or +size{K,M,G} (131072-62521343, default 62521343): +5042176K

Command (m for help): w // 작업 완료를 위해 저장 합니다. ( 자동 종료 됩니다. )



2번째 파티션의 섹터 값을 확인 하기 위해서 fdisk를 실행 합니다. 
sudo fdisk -l /dev/loop0

확인이 필요한 내용은, /dev/loop0p2 부분의 End Sector 값 입니다. 명령어 부분 입력을 위해 적어 놓습니다. : 10215423



루프백 마운트를 해제합니다. 
sudo losetup -d /dev/loop0

truncate 명령어를 사용하여 End Sector 값을 사용하여 이미지를 자릅니다. 
truncate -s $(((10215423+1)*512)) img_rpi.img



파일 사이즈가 줄어든 것을 확인 할 수 있습니다.



명령어 입력시 숫자, 단위(K), 연산자(+) 에 유의 하셔야 합니다.

YOUTUBE 작업 동영상 : https://www.youtube.com/watch?v=rH8u3NbIjlk&feature=youtu.be






링크

win32imager https://sourceforge.net/projects/win32diskimager/

fdisk : https://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=10799

GParted : https://ko.wikipedia.org/wiki/GParted

반응형