Chapter 3: Ubuntu OS 부팅 microSD카드 만들기
우분투 부팅가능한 SD카드를 만들기 위해 SD카드를 준비합니다:
다음 링크(ubuntu_mmc.img)에서 SD카드 부팅이미지를 다운로드 받고 이미지를 microSD카드에 아래와 같이 플래쉬합니다.
Windows의 경우:
Win32DiskImager(다운로드) 를 사용하여 부트 이미지 SD카드에 씁니다.
Linux의 경우:
microSD카드를 슬롯에 집어 넣으면 자동으로 SD카드가 마운팅 되는데, 먼저 microSD카드의 모든 파티션을 unmount시킵니다. 예를들어 SD카드가 두개의 파티션을 가지고 있다고 하면 아래와 같이 명령어를 수행하여 unmout시킵니다.
- $ umount /dev/mmcblk0p1
- $ umount /dev/mmcblk0p2
그 다음으로 dd명령어를 이용하여 이미지를 microSD카드에 플래쉬합니다. 이 명령은 주의하셔서 사용하여야 합니다. 만약 "of/dev/____" 의 파라메터 부분에 하드 디스크 장치를 잘못 포인팅하면, 하드디스크의 모든 데이터는 지워집니다.
$ dd if=/udisk/ubuntu_mmc.img of=/dev/mmcblk0 bs=1M
$ sync
MacOS경우:
MacOS 터미널도 df와 dd 명령을 지원합니다.
micro-sd카드를 넣고 마운팅이 되면, sd카드의 모든 파티션을 unmount합니다. 예를 들어 SD 카드가 두개의 파티션을 가지고 있다고 하면, 아래와 같이 명령어를 입력합니다.
$ sudo umount /dev/disk1s1
$ sudo umount /dev/disk1s2
만약 umount가 실패하면 아래와 같이 입력하여 umount를 강제로 진행합니다.
$ sudo diskutil umount force /dev/disk1s1
$ sudo diskutil umount force /dev/disk1s2
dd명령어를 이용하여 microSD카드에 이미지를 씁니다. 이 경우에도 "of=/dev/___" 파라메터가 하드 디스크를 포인팅 하지 안도록 주의 하십시오. 그렇지 않으면 하드 디스크의 모든 데이터가 지워집니다.
$ sudo dd if=/udisk/ubuntu_mmc.img of=/dev/disk1 bs=1M
이렇게하여 부팅가능한 microSD카드를 만들었으면 pcDuino의 슬롯에 삽입한 후에 pcDuino에 전원을 인가하십시오. pcDuino가 SD카드로 부팅이 될 것입니다.
SD부트 이미지 리싸이즈 및 SD용량을 최대치로 확장시키기:
expand스크립트를 아래와 같이 준비합니다.
준비된 스크립트를 실행하고 리부팅 시킵니다.
$ sudo bash ./expand_sdcard_rootfs.sh
$ sudo reboot
리부팅 후에 아래와 같이 명령어를 입력합니다.
$ sudo resize2fs /dev/mmcblk0p2
부팅이 안될 경우에는,,
pcDuino가 SD카드로 부팅이 되는지 아니면 NAND에서 부팅이 되는지 확인합니다. 때때로 SD카드를 인식하는데 실패하여서 NAND로 대신 부팅이 되는 경우가 있습니다. df 명령을 이용하여 체크할 수 있습니다.
만약 NAND를 통해서 부팅이 되었다면, root는 /dev/nandd이며 SD를 통해 부팅이 되었다면 root는 /dev/mmcblk0p1입니다.
이런 이슈가 발생할 경우, 시리얼 디버그 케이블을 제거하고 디바이스를 리셋시켜 다시 시도하여 보십시오.
파워유저를 위한 부팅SD카드 만들기
1. 아래의 두개의 패키지를 다운로드 받습니다.
압축을 풉니다.
$ tar xf pcduino_hwpack_20130331.tar.xz
$ 7za -x ubuntu.7z
pcduino_hwpack.tar.xz파일의 압축을 풀면, 아래의 파일을 얻게 됩니다.
- uImage
- script.bin
- sunxi-spl.bin
- u-boot.bin
ubuntu.tar.xz의 압축을 풀면 아래의 파일을 얻게 됩니다.
uImage와 script.bin은 커널파일로 pcDuino에서도 볼수 있습니다. 아래 명령 참조.
$ sudo mount /dev/nanda /mnt/nanda
$ ls /mnt/nanda
2. microSD카드를 슬롯에 넣고 아래와 같이 umount합니다.
$ sudo umount /dev/mmcblk0p1
$ sudo umount /dev/mmcblk0p2
3. fdisk명령을 이용하여 두개의 파티션을 만듭니다.
첫번째 파티션은 부트 파티션이며, 파일시스템은 FAT입니다. uImage및 script.bin파일이 저장됩니다.
두번째 파티션은 ubuntu 파일시스템입니다. 파일시스템 타입은 ext3입니다.
아래와 같이 명령을 실행합니다.
$ sudo fdisk /dev/mmcblk0
Command (m for help): d
Selected partition 1
Command (m for help): n
Partition type:
- p primary (0 primary, 0 extended, 4 free)
- e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-15122431, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15122431, default 15122431): +64M
Command (m for help): n
Partition type:
- p primary (1 primary, 0 extended, 3 free)
- e extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (206848-15122431, default 206848):
Using default value 206848
Last sector, +sectors or +size{K,M,G} (206848-15122431, default 15122431): +1800M
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
[ 5652.370000] mmcblk0: p1 p2
Syncing disks.
부트 영역과 ubuntu 영역의 크기는 변경이 가능합니다만, 부트영역은 최소 64M이상 우분투 영역은 최소 1G이상을 권장합니다.
위의 스크립트는 64M부트영역과 1.8G 우분투 영역을 생성하는 스크립트입니다만, 차후 모든 SD영역을 ubuntu파티션이 사용할 수 있게 리싸이즈가 가능합니다.
4. 파티션을 포맷합니다.
$ sudo apt-get install dosfstools
$ sudo mkdosfs /dev/mmcblk0p1
$ sudo mke2fs -T ext3 /dev/mmcblk0p2
$ sudo umount /dev/mmcblk0p1
$ sudo umount /dev/mmcblk0p2
5. 커널을 첫번째 파티션에 복사합니다.
$ sudo mount /dev/mmcblk0p1 /boot
$ sudo cp uImage /boot -f
$ sudo cp script.bin /boot -
$ sync && sudo umount /boot
6. ubuntu를 두번째 파티션에 카피합니다.
$ sudo dd if=ubuntu.img of=/dev/mmcblk0p2 bs=1M
$ sudo sync
7. SD카드를 부팅가능하게 만듭니다.
$ sudo umount /dev/mmcblk0p1
$ sudo umount /dev/mmcblk0p2
$ sudo dd if=sunxi-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
$ sudo dd if=u-boot.bin of=/dev/mmcblk0 bs=1024 seek=32
8. 이미지를 dump합니다. (옵션임)
$ sudo umount /dev/mmcblk0p1
$ sudo umount /dev/mmcblk0p2
$ sudo dd if=/dev/mmcblk0 of=ubuntu_sd.img bs=1M count=1900
9. SD카드를 보드에 넣고 재부팅합니다.
가치창조기술 | www.vctec.co.kr
댓글목록
등록된 댓글이 없습니다.
관리자에게만 댓글 작성 권한이 있습니다.