<참조 사이트>
Gparted (GNOME Partition Editor) Live : http://gparted.org/livecd.php
Tuxboot (부팅 USB 만드는 프로그램) : http://tuxboot.org/
백업된 라즈베리파이 이미지 용량 줄이기 : http://deois.tistory.com/70
<개요>
SD 카드 또는 마이크로 SD 카드는 4GB, 8GB, 16GB, 32GB, 64GB 등 여러종류가 있으나, 같은 Size의 카드라고 해도 이미지 복사를 하려고 하면 Size가 부족하다고 하는 에러메세지를 내면서 복사를 할 수 없는 경우가 자주 발생합니다.
SD카드 종류별로 다르고, 제조사가 다른 경우에도 차이가 나서 Maker가 다른 카드에 복사하려고 하면 거의 이런 현상이 발생되는 것으로 보입니다.
또한, 같은 Maker의 같은 모델이라고 해도 카드에 일부 오류 또는 bad sector가 생기면 포맷을 해도 Size 부족으로 또한 복사가 안되는 경우가 발생하는 것으로 생각됩니다.
따라서 작성한 SD 카드 이미지에서 사용하지 않는 공백 부분을 잘라내어 Size를 줄여서(Shrink) 배포할 필요가 있습니다.
<SD 카드 Shrink 하기>
방법 1) 이미지 파일로 작업하기 : 위 "백업된 라즈베리파이 이미지 용량 줄이기" 글 참조
HL2UVH 오엠께서 알려주신 글인데, 이 방법은 리눅스가 설치된 PC 또는 윈도우 PC내에 Virtualbox나, VMWare 등의 가상 머신 프로그램을 설치하고 그 안에 리눅스를 설치한 후, gparted 를 사용해 SD 카드 이미지를 shrink 시키는 방법입니다. 실제로 해보니 과정이 조금 복잡하군요.
방법 2) SD카드로 작업하기 : 아래 내용 참조
이 방법은 Gparted Live라는 프로그램을 사용해 리눅스 부팅용 USB 메모리를 만들어 부팅하여 간단히 작업하는 과정을 테스트해 보고 작성한 것으로 위 방법 1) 보다는 조금 간편합니다.
<방법 2 by HL5BPL>
먼저 부팅용 USB 만들어 부팅하기 위하여 부팅용 USB를 만들어주는 프로그램인 Tuxboot 프로그램을 다운로드합니다. (http://sourceforge.net/downloads/tuxboot/) 이 프로그램은 별도의 설치과정이 필요없이 실행파일 하나로 작동하는군요.
USB 메모리는 FAT로 포맷된 것을 사용해야 한다고 합니다.
PC에 USB 메모리를 연결합니다.
Tuxboot 프로그램을 띄웁니다.
위 그림의 On-Line Distribution 에서 gparted-live-stable 를 선택하고 Update 버튼을 누른후, 하단의 USB 드라이브 문자를 설정하고 OK 버튼을 누르면 아래 그림처럼 최신판 GParted Live 파일을 인터넷을 통해 다운로드해 부팅용 USB를 만듭니다.
부팅용 USB 메모리가 만들어졌으면 PC를 리부팅하고, PC의 CMOS Setup 에서 USB로 부팅하도록 설정합니다.
Shrink 하고자 하는 SD 카드를 PC에 연결합니다.
USB 메모리로 부팅합니다.
부팅과정에서의 다음 선택사항에서는 기본값으로 계속 엔터를 누릅니다.
- Gparted Live (Default settings) <엔터>
- Don't touch keymap <엔터>
- [33] US English <엔터>
- [0] Continue to start X to use GParted automatically <엔터>
부팅후 X-windows 상에서 Gparted가 자동으로 기동됩니다.
화면 우측상단의 Device 선택란 Drop Down 메뉴에서 Shrink 하고자 하는 SD카드를 선택합니다.
예) /dev/sde
장치명이 헤깔릴 때는 장치의 사이즈와 선택했을때 창에 표시되는 Volume Label을 참조하면 쉽게 식별할 수 있습니다.
화면 중앙에서 Shrink 하고자 하는 Linux 파티션을 선택합니다. 예) /dev/sde2
마우스 오른쪽 키를 눌러 나오는 메뉴에서 선택하거나, 상단 메뉴 아이콘에서 Resize/Move 를 선택합니다.
적당한 크기로 사이즈 줄여서 New Size를 설정합니다. (Minimum Size + 400MB 정도 이상으로 설정합니다. 여유 크기가 너무 작으면 에러가 나고 Resize가 안됩니다)
Resize/Move 버튼을 클릭하여 Shrink 시킵니다. (실제로 shrink되는 것은 아니고 작업대기열에 대기하는 상태입니다)
상단 메뉴의 Edit > Apply All Operation 을 클릭합니다. (실제로 shrink 시킵니다)
Resize 진행중 화면입니다
Resize 후 창을 바로 닫지 말고 Details 창의 아래 방향 삼각형 마크를 위 그림과 같이 펼쳐서 줄어든 End Sector를 별도로 기록해 둡니다.
GParted 창을 닫습니다.
화면 왼쪽 상단의 전원 아이콘을 더블클릭 (아주 빠르게) 하여 시스템을 Rebooting 시킵니다.
이어 나오는 메세지에 엔터를 쳐야 실제로 리부팅이 됩니다.
CMOS setup으로 들어가 HDD로 부팅하도록 설정하고 리부팅합니다.
PC로 부팅후 WIn32 Disk Imager 로 SD카드의 이미지를 작성합니다.
작성한 이미지 파일을 PC의 HDD에 복사해 둡니다. 예) D:\test.img
다시 USB 메모리로 리부팅합니다.
X-Window에서 터미널 창을 열고, 앞서 작성한 이미지 파일이 들어있는 HDD를 /mnt 디렉토리에 mount 시킵니다.
$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ fdisk -l test.img
표시 내용중 test.img2 파티션의 End Sect 번호 별도로 기록해 둡니다. (위에서 기록해둔 값과 같은 값입니다)
또는, 위에서 기록해둔 End Sector 값 "3885055"를 사용하여 SD카드 이미지 중에서 불필요한 뒷 부분을 다음과 같이 잘라냅니다.
$ truncate -s $(((3885055+1)*512)) test.img
HDD 마운트를 해제합니다.
$ sudo umount /dev/sda1
시스템을 리부팅하고 PC로 부팅합니다.
Shrink 된 이미지를 압축하여 배포합니다.
<<<끝>>>
첫댓글 한번 따라 해봤는데, 개념은 똑같네요. 덕분에 한가지 더 배워갑니다.
좋은 정보 감사합니다. 이미지 파일을 복사하여 같은 size의 SD card로 옮겼을때 용량이 적다고 옮겨지지 않을때
몇번을 시도해도 안돼서 적잖이 당황했었던 기억이 있습니다. 많은 도움이 될것 같습니다.