리눅스에서 부트 이미지 플래싱하기
설치 방법이 더 복잡해 보이는 것은 기분 탓입니다.
왜 이런 방법을 찾게 되었냐면
제가 가지고 있는 ODROID XU4 때문은 eMMC를 디스크로 사용하거든요…
오드로이드는 다른 SBCSingle Board Computer와는 다르게 eMMCembedded Multi Media Card 슬롯을 제공하는데요, 이 규격은 보통 스마트폰에 주로 사용되는 것으로 SBC에 자주 쓰이는 SDSecure Digital 카드보다 읽고 쓰는 속도가 빠릅니다. 그래서 XU4를 구매할 때, eMMC를 덥석 샀고, 그 결과…
문제는 이게 주로 “스마트폰에 납땜해서 들어가는 모듈”이고, 그래서 일반적인 리더기가 없다는 점입니다. 오드로이드용 eMMC 전용 리더기가 있긴 한데 품질이 매우 조악해서 벌써 고장 났어요. 다시 구하자니 이게 또 흔하게 파는 물건이 아니라 쉽게 구할 수도 없고요.
그래서 결국 SD카드에 리눅스가 설치된 eMMC 슬롯이 달린 XU4 그 자체를 리더기로 해서 설치하는 방법을 찾게 되었습니다. 저는 이 방법을 주로 eMMC에 OS 플래싱할 때만 사용했는데, 이리저리 알아보니 해놀로지 부트로더 설치할 경우 등, 많은 상황에 응용이 가능한 것 같습니다.
이 글은 XU4에 설치하는 것을 가정해서 작성했는데요, 달라지는 부분을 파악할 수 있다면 다른 장치에도 적용할 수 있을 거예요.
준비물
- 리눅스가 설치된 PC
- 부트 이미지를 설치할 메모리와 이를 PC에 인식할 수 있는 장비
- 부트 이미지 파일 (OS 설치파일 압축을 풀었는데 .img이다? 바로 그겁니다)
플래싱할 장치 찾기
fdisk
명령을 통해 플래싱할 장치의 경로를 찾습니다. 너무 많은 장비가 꽂혀있을 경우 찾기가 매우 난감할 수 있는데요, 용량 등의 정보를 잘 확인하여 실수하지 않도록 합니다.
명령
$ sudo fdisk -l
결과
...
Disk /dev/mmcblk0: 14.7 GiB, 15758000128 bytes, 30777344 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
Disklabel type: dos
Disk identifier: 0x3cedfd53
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 264191 262144 128M c W95 FAT32 (LBA)
/dev/mmcblk0p2 264192 30775296 30511105 14.6G 83 Linux
...
제가 이미지를 플래싱할 장치는 16GB의 eMMC 장치입니다. /dev/mmcblk0p1
와 /dev/mmcblk0p2
에 파티션이 이미 할당되어 있는데요, 이전에 리눅스를 설치했던 흔적입니다. 어차피 밀어버릴 것이므로 신경 쓸 필요는 없습니다. 아, 자료가 지워지므로 백업을 했는지는 확인해야겠네요.
아무튼, 여기서 우리는 /dev/mmcblk0
라는 장치 경로를 확인했습니다. 기억해둡시다.
플래싱 명령 수행
dd
명령어를 통해 이미지를 플래싱합니다.
명령
$ sudo dd bs=4M if=ubuntu-18.04-odroid-xu4.img of=/dev/mmcblk0 && sync
dd
는 파일 변환/복사 명령어입니다. 사용된 옵션 의미는 이렇습니다.
- bs=4M (Block Size: 한 번에 읽고 쓸 용량 단위, 여기선 4M로 했는데 적당한 다른 용량을 사용해도 상관없는 것 같네요)
- if=ubuntu-18.04-odroid-xu4.img (Stdin from File: 복사할 원본 파일)
- of=/dev/mmcblk0 (Stdout to File: 복사할 목적 파일)
- sync (메모리와 디스크를 동기화. dd 이후에도 플래싱이 덜 끝난 상황을 방지한다고 해요)
명령 (.xz 압축 파일에서 바로 플래싱)
$ sudo xzcat ubuntu-18.04-odroid-xu4.img.xz | dd bs=4M of=/dev/mmcblk0 && sync
OS 설치 이미지는 .xz
형식으로 압축된 경우가 많은데, 이 경우에는 압축을 풀며 바로 플래싱을 진행할 수도 있습니다.
결과
665+1 records in
665+1 records out
2791309312 bytes (2.8 GB, 2.6 GiB) copied, 229.743 s, 12.1 MB/s
위와 같이 복사가 진행되었다는 결과가 출력됩니다.
그리고 남은 이야기
이러한 대 삽질을 겪고 난 교훈으로, 현재 사용하는 ODROID H2
는 eMMC를 구매하지 않았습니다. 하지만 XU4가 테스트 머신이 되어버려서 dd를 더 자주 쓰게 됨…
물론, H2는 NVMe
Non-Volatile Memory express라는 훨씬 빠른 저장장치가 지원되고 있기 때문이기도 합니다. 또한 x86 머신에서는 eMMC가 잘 사용되는 장치가 아니어서 드라이버 지원이 미비하기도 하고요.
댓글남기기