본문 바로가기

Android/Tips

SDCard 통째로 Cloning 하는 법 (Ubuntu 20.04.1 LTS)

Ubuntu 기준으로 SDCard 를 통째로 부팅 Image 로 Clone 하는 글 입니다. 

 

최근 현재까지도 Odroid 라는 보드를 이용한 AOSP 프로젝트를 진행중이다.

 

매번 boot.ini, *.mk, 부팅 로고 등 변경 후 재빌드를 하여 OS 설치이미지를 빌드하는 과정을 반복한다. 설치이미지는 최초 실행시 OS 초기화 단계 (약 1분30초 ~ 2분 정도 걸림) 를 진행해야 핬다. 그리고 OS 부팅이 완료되면 꼭 해줘야 하는 기본 OS 설정들이 몇가지 있었다. 예를 들면 화면 회전, 글씨 기본 사이즈 변경, IP 주소 변경, 키보드 변경 등 OS 환경설정을 꼭 해줘야만 하는 것이다. 

 

개인적인 프로젝트가 아닌 실제 프로젝트로 하게되는 경우 장비의 메인보드 (Odroid) 당 1개의 SDCard (Embeded AndroidOS) 가 들어가게 된다. 이로인해 발생하는 초기 세팅 및 유지보수의 비용측면에서 위의 과정은 통일적으로 적용이 되어야만하는 것이다. 

 

따라서 고민하게 된 것이, 최종적으로 설정이 끝난 OS 그상태 그대로를 백업이 불가능할까? 라는 의문이 들었다. 

 

찾아본 바에 의하면 

1. Window 는 '고스트' 라는 프로그램을 이용하여 현 상태의 OS 이미지 추출 가능.

2. Ubuntu 는 'Win32 Disk Image' 라는 프로그램을 이용하여 현 상태 OS 추출 가능

3. Raspberry pi OS 는 'Sd copier' 라는 프로그램으로 현 상태 OS 추출 가능.

 

2번과 3번의 경우 공통으로 'Win32 Disk Image' 로 이미지 카피가 가능하다. 하지만 이것은 WindowOS 환경에서 프로그램을 이용할 수 있기때문에 Window 로만 할 수 있다.

 

이것을 보고 번득였다.

 

마찬가지로 AOSP 또한 위의 프로그램으로 현 상태 OS 백업이 가능하다!! 

Win32DiskImage 프로그램의 'read' , 'write' 기능으로 백업이미지 생성 및 쓰기가 가능하다.

 

하지만.

 

나의 환경은 Ubuntu 20.04.1 버전의 환경이다. 

 

필요한 재료로는 

- Android OS 가 설치된 SDCard

- SDCard USB 리더기 

- 복사를 하려는 포맷 된 SDCard ( 포맷이 안된 경우 나중에 이미지를 write 할 때 포맷을 자동으로 함)  

 

(설명)

1. 기존 Android OS 가 설치된 SDCard 를 리더기에 삽입해서 컴퓨터에 연결한다.

2. 터미널을 연다.

2.  $lsblk 명령어를 입력한다. 그러면 현재 연결된 모든 저장장치들이 검색된다. ( window 의 diskpart 또는 Ubuntu 의 disks 프로그램과 기능 유사 )

3. SDCard 의 장치 이름을 확인한다. (예. /dev/sdc) 

예시로 그림에서 보면 sdc 라고 되있는 부분이 Name 이 된다. 해당 Name 앞에 /dev/<Name> 이 된다.

 

4. $sudo dd if=/dev/sdc of=<원하는파일명.img> bs=4M status=progress 를 입력한다. 

5. 그럼 진행상황이 로깅되면서 성공적으로 완료되면 <원하는파일명.img> 파일이 해당 명령어를 친 곳의 경로에 있을것이다.

6. 그 이미지가 바로 최종적인 SDCard 의 Clone Image 이다. 

7. 기존 SDCard 를 연결 해제 후, 포맷된 SDCard 를 연결하여, 6번의 clone img  파일을 writing 하면 완료. belenaEtcher 라는 프로그램으로 writing 진행한다.  또는 해당 이미지 파일만 있으면 윈도우로 가져가서 Win32 Disk Image프로그램으로도 write 가 가능하다. 선택은 자유.

 

 

위의 과정은 AOSP 뿐만아니라, Window, Ubuntu OS 관계없이 통으로 SDCard 를 복제하는 방법이기 때문에 유용한 방법인 것 같다. 

 

끝.