[pcDuino] 3: Ubuntu OS 부팅 microSD카드 만들기

우분투 부팅가능한 SD카드를 만들기 위해 SD카드를 준비합니다:

다음 링크(ubuntu_mmc.img)에서 SD카드 부팅이미지를 다운로드 받고 이미지를 microSD카드에 아래와 같이 플래쉬합니다.

Windows의 경우:

Win32DiskImager(다운로드) 를 사용하여 부트 이미지 SD카드에 씁니다.

Linux의 경우:

microSD카드를 슬롯에 집어 넣으면 자동으로 SD카드가 마운팅 되는데, 먼저 microSD카드의 모든 파티션을 unmount시킵니다. 예를들어 SD카드가 두개의 파티션을 가지고 있다고 하면 아래와 같이 명령어를 수행하여 unmout시킵니다.

$ umount 

그 다음으로 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의 압축을 풀면 아래의 파일을 얻게 됩니다.

  • ubuntu.img

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카드를 보드에 넣고 재부팅합니다.

 

Comments