BeagleBone Black에 (ARM CPU용) Ubuntu를 설치하기 위해 매일 삽질하다 잘 안 되는 이유를 알았다. microSD 카드로 부팅한 다음, 이후 단계를 수행하는 위치가 틀렸었다. 계속 PC에서 수행하는 것인줄 알았는데, 보드로 접속해서 해야 하는 단계가 많았다. 또 어떤 이미지는 드라이버가 없어서인지 내장 스토리지인 eMMC가 마운트 되지 않고, 어떤 방법은 eMMC로 이미지가 복사(flash)되지 않고, 이래저래 안 되는 경우가 많기도 하고 TㅅT
microSD 카드에 담은 Angstrom으로 부팅해서 eMMC에 Ubuntu 이미지를 복사(flash)하는 방법
몇 가지 방법이 있는데, 될듯 하면서 잘 안되는 경우가 많았다. 여기서는 가장 간편한 pre-compile된 Ubuntu 이미지를 넣는 방법을 따라하겠다. ARMhf 등에서 미리 컴파일 된 Ubuntu와 Debian 등을 제공한다. 이런 pre-compiled 이미지를 제공하는 곳은 많다.
0. 따라하기 전에 필요한 것들 준비
- BeagleBone Black에 고정 IP를 할당해두면 좋다. 키보드, HDMI 등을 꽂으면 전원이 부족해서 부팅이 되지 않거나 키보드를 사용할 수 없는 경우가 있다. 이럴 때는 IP를 미리 할당해두고 telnet이나 ssh로 접속하면 편하다.
- Ubuntu 이미지를 미리 다운받아 두고 scp 등으로 복사하면 시간을 절약할 수 있다.
1. microSD 카드로 부팅할 Angstrom 이미지를 다운받는다. BeagleBone Black용이 아닌
BeagleBone용 Angstrom을 사용한다. 이유는, BeagleBone Black용 Angstrom으로 부팅을 하면 자동으로 microSD 카드에 있는 이미지를 eMMC로 복사하는 프로세스가 동작하기 때문에 BeagleBone용을 사용한다. Ubuntu를 설치하면 되니까 부팅만 가능하면 된다. (마치 CD-Rom으로 부팅하듯이 ㅋ)
Ubuntu를 microSD 카드에 넣어서 부팅하지 않는 이유는, 내가 사용해본 Ubuntu 이미지는 드라이버가 제공되지 않아서인지 eMMC가 마운트되지 않아 이미지 복사가 불가능했다. (사실 Ubuntu로 부팅해서 eMMC에 flash만 해주는게 가장 깔끔한데, 아직 이런 이미지가 없는건지 방법을 잘못 선택한건지 잘 되지 않았다.)
BeagleBone 홈페이지에서 Angstrom Distribution 최신 버전을 다운로드 한다.
파일 확장자는 .img.xz로 윈도에서는 7zip으로 압축을 풀면 되고, MacOS나 Linux에서는 xz를 사용하면 된다.
MacOS는 xz가 기본적으로 설치되어 있지 않기 때문에 설치해야 한다. Homebrew 등을 통해서 설치하면 편하다.
2. microSD 카드에 BeagleBone용 Angstrom 이미지를 복사한다.
압축을 푼 이미지를 microSD 카드에 복사한다. 이미지를 복사하는 방법은 OS에 따라 Installation/FromIngFiles - Community Ubuntu Documentation에 잘 설명되어 있으니 따라하면 된다.
여기서는 MacOS를 기준으로 설명한다. (Linux도 크게 다르지 않을 것으로 예상된다.)
microSD 카드를 꽂기 전에 마운트된 내용을 확인한다.
microSD 카드를 꽂은 다음 추가된 영역을 확인한다. 추가로 마운트된 영역이 microSD 카드이다.
해당 디스크를 unmount한다. unmount하지 않으면 Resource busy 오류가 발생한다.
이미지를 microSD 카드에 복사한다. dd명령의 of 파라미터를 unmount한 영역으로 설정하면 된다.
3. 전원이 꽂혀 있지 않은 BeagleBone Black에 microSD를 꽂는다.
4. User Boot 버튼(microSD 카드쪽에 혼자 떨어져 있는 버튼)을 누른 상태에서 전원을 연결하고 LED가 길게 켜지는 것을 확인한다. OS 이미지 마다 LED가 켜지는 모습이 다르기 때문에 짧고 빠르게 깜빡이기 시작하면 놔도 된다.
5. 1-2분 정도 후에 부팅이 되면 BeagleBone Black에 접속한다. IP 등을 미리 고정으로 할당해두면 키보드와 HDMI 등을 연결하지 않아도 돼서 좋다. 전원이 많이 부족한데 키보드까지 꽂으면 켜지지 않는 경우도 있다.
초기 사용자는 root이고 비밀번호는 없으니 그냥 엔터를 치면 된다. 이 다음부터는 접속한 BeagleBone Black에서 수행한다.
6. (터미널 등으로 BeagleBone Black에 접속한 다음) 설치할 Ubuntu 이미지를 다운로드 받는다. 혹은 앞의 과정을 수행하는 동안 이미지를 미리 다운로드 해두고 scp 등을 통해 복사해도 된다. (여기서는 ARMhf에서 제공하는 이미지를 사용했다.)
7. 다운로드 받은 이미지 압축을 풀면서 eMMC에 복사한다. Angstrom을 설치한 microSD 카드가 작은 용량으로 파티셔닝되어 있기 때문에 그자리에 압축을 풀련 다 풀리지 않을 것이다.
8. 복사가 다 되면, 전원을 뽑고 microSD 카드를 제거한 다음, 다시 전원을 연결하면 끝이다.
유후~ 이제 내 비글은 Ubuntu~!!
아쉬운 점이라면 여러 방법을 찾아보고 싶었는데, 잘 안된다는 점 TㅅT
- 참고
Ubuntu Images for the BeagleBone Black - armhf.com
[BBB] BeagleBone Black에 OS 설치 시 팁 (어쩌면 FAQ)
[BBB] BeagleBone Black에 새 OS 설치
[MacOS] microSD 카드에 OS 이미지 넣기
Installation/FromImgFiles - Community Ubuntu Documentation
Booting Ubuntu on BeagleBoard Black
BeagleBoardUbuntu - eLinux.org
microSD 카드에 담은 Angstrom으로 부팅해서 eMMC에 Ubuntu 이미지를 복사(flash)하는 방법
몇 가지 방법이 있는데, 될듯 하면서 잘 안되는 경우가 많았다. 여기서는 가장 간편한 pre-compile된 Ubuntu 이미지를 넣는 방법을 따라하겠다. ARMhf 등에서 미리 컴파일 된 Ubuntu와 Debian 등을 제공한다. 이런 pre-compiled 이미지를 제공하는 곳은 많다.
0. 따라하기 전에 필요한 것들 준비
- BeagleBone Black에 고정 IP를 할당해두면 좋다. 키보드, HDMI 등을 꽂으면 전원이 부족해서 부팅이 되지 않거나 키보드를 사용할 수 없는 경우가 있다. 이럴 때는 IP를 미리 할당해두고 telnet이나 ssh로 접속하면 편하다.
- Ubuntu 이미지를 미리 다운받아 두고 scp 등으로 복사하면 시간을 절약할 수 있다.
1. microSD 카드로 부팅할 Angstrom 이미지를 다운받는다. BeagleBone Black용이 아닌
BeagleBone용 Angstrom을 사용한다. 이유는, BeagleBone Black용 Angstrom으로 부팅을 하면 자동으로 microSD 카드에 있는 이미지를 eMMC로 복사하는 프로세스가 동작하기 때문에 BeagleBone용을 사용한다. Ubuntu를 설치하면 되니까 부팅만 가능하면 된다. (마치 CD-Rom으로 부팅하듯이 ㅋ)
Ubuntu를 microSD 카드에 넣어서 부팅하지 않는 이유는, 내가 사용해본 Ubuntu 이미지는 드라이버가 제공되지 않아서인지 eMMC가 마운트되지 않아 이미지 복사가 불가능했다. (사실 Ubuntu로 부팅해서 eMMC에 flash만 해주는게 가장 깔끔한데, 아직 이런 이미지가 없는건지 방법을 잘못 선택한건지 잘 되지 않았다.)
BeagleBone 홈페이지에서 Angstrom Distribution 최신 버전을 다운로드 한다.
$ wget https://s3.amazonaws.com/angstrom/demo/beaglebone/Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz
--2013-08-28 09:46:40-- https://s3.amazonaws.com/angstrom/demo/beaglebone/Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz
Resolving s3.amazonaws.com... 207.171.185.200
Connecting to s3.amazonaws.com|207.171.185.200|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 295278444 (282M) [application/octet-stream]
Saving to: ‘Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz’
100%[==========================================================>] 295,278,444 300KB/s in 22m 47s
2013-08-28 10:09:29 (211 KB/s) - ‘Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz’ saved [295278444/295278444]
--2013-08-28 09:46:40-- https://s3.amazonaws.com/angstrom/demo/beaglebone/Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz
Resolving s3.amazonaws.com... 207.171.185.200
Connecting to s3.amazonaws.com|207.171.185.200|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 295278444 (282M) [application/octet-stream]
Saving to: ‘Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz’
100%[==========================================================>] 295,278,444 300KB/s in 22m 47s
2013-08-28 10:09:29 (211 KB/s) - ‘Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz’ saved [295278444/295278444]
파일 확장자는 .img.xz로 윈도에서는 7zip으로 압축을 풀면 되고, MacOS나 Linux에서는 xz를 사용하면 된다.
$ xz -cdk Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img.xz > Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img
MacOS는 xz가 기본적으로 설치되어 있지 않기 때문에 설치해야 한다. Homebrew 등을 통해서 설치하면 편하다.
$ brew update
$ brew install xz
$ brew install xz
2. microSD 카드에 BeagleBone용 Angstrom 이미지를 복사한다.
압축을 푼 이미지를 microSD 카드에 복사한다. 이미지를 복사하는 방법은 OS에 따라 Installation/FromIngFiles - Community Ubuntu Documentation에 잘 설명되어 있으니 따라하면 된다.
여기서는 MacOS를 기준으로 설명한다. (Linux도 크게 다르지 않을 것으로 예상된다.)
microSD 카드를 꽂기 전에 마운트된 내용을 확인한다.
$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
microSD 카드를 꽂은 다음 추가된 영역을 확인한다. 추가로 마운트된 영역이 microSD 카드이다.
$ mount
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk1s1 on /Volumes/BEAGLE_BONE (msdos, local, nodev, nosuid, noowners)
$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *121.3 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 120.5 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.9 GB disk1
1: Windows_FAT_32 BEAGLE_BONE 74.0 MB disk1s1
2: Linux 3.6 GB disk1s2
/dev/disk0s2 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
/dev/disk1s1 on /Volumes/BEAGLE_BONE (msdos, local, nodev, nosuid, noowners)
$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *121.3 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 120.5 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.9 GB disk1
1: Windows_FAT_32 BEAGLE_BONE 74.0 MB disk1s1
2: Linux 3.6 GB disk1s2
해당 디스크를 unmount한다. unmount하지 않으면 Resource busy 오류가 발생한다.
$ diskutil unmountDisk /dev/disk1
Unmount of all volumes on disk1 was successful
Unmount of all volumes on disk1 was successful
이미지를 microSD 카드에 복사한다. dd명령의 of 파라미터를 unmount한 영역으로 설정하면 된다.
$ dd if=Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.06.20.img of=/dev/disk1 bs=1m
62+1 records in
62+1 records out
65774596 bytes transferred in 33.400125 secs (1969292 bytes/sec)
62+1 records in
62+1 records out
65774596 bytes transferred in 33.400125 secs (1969292 bytes/sec)
3. 전원이 꽂혀 있지 않은 BeagleBone Black에 microSD를 꽂는다.
4. User Boot 버튼(microSD 카드쪽에 혼자 떨어져 있는 버튼)을 누른 상태에서 전원을 연결하고 LED가 길게 켜지는 것을 확인한다. OS 이미지 마다 LED가 켜지는 모습이 다르기 때문에 짧고 빠르게 깜빡이기 시작하면 놔도 된다.
5. 1-2분 정도 후에 부팅이 되면 BeagleBone Black에 접속한다. IP 등을 미리 고정으로 할당해두면 키보드와 HDMI 등을 연결하지 않아도 돼서 좋다. 전원이 많이 부족한데 키보드까지 꽂으면 켜지지 않는 경우도 있다.
$ ssh root@xxx.yyy.zzz.xyz
초기 사용자는 root이고 비밀번호는 없으니 그냥 엔터를 치면 된다. 이 다음부터는 접속한 BeagleBone Black에서 수행한다.
6. (터미널 등으로 BeagleBone Black에 접속한 다음) 설치할 Ubuntu 이미지를 다운로드 받는다. 혹은 앞의 과정을 수행하는 동안 이미지를 미리 다운로드 해두고 scp 등을 통해 복사해도 된다. (여기서는 ARMhf에서 제공하는 이미지를 사용했다.)
$ wget http://s3.armhf.com/debian/precise/bone/ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
--2013-08-22 07:54:11-- http://s3.armhf.com/debian/precise/bone/ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
Resolving s3.armhf.com... 72.21.195.15
Connecting to s3.armhf.com|72.21.195.15|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 65774596 (63M) [binary/octet-stream]
Saving to: ‘ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz’
100%[==========================================================>] 65,774,596 1.15MB/s in 1m 44s
2013-08-22 07:55:56 (618 KB/s) - ‘ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz’ saved [65774596/65774596]
$ md5sum ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
19e81997cce7217a68c04088d8f31edd ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
--2013-08-22 07:54:11-- http://s3.armhf.com/debian/precise/bone/ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
Resolving s3.armhf.com... 72.21.195.15
Connecting to s3.armhf.com|72.21.195.15|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 65774596 (63M) [binary/octet-stream]
Saving to: ‘ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz’
100%[==========================================================>] 65,774,596 1.15MB/s in 1m 44s
2013-08-22 07:55:56 (618 KB/s) - ‘ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz’ saved [65774596/65774596]
$ md5sum ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
19e81997cce7217a68c04088d8f31edd ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz
7. 다운로드 받은 이미지 압축을 풀면서 eMMC에 복사한다. Angstrom을 설치한 microSD 카드가 작은 용량으로 파티셔닝되어 있기 때문에 그자리에 압축을 풀련 다 풀리지 않을 것이다.
$ xz -cdk ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz > /dev/mmcblk1
8. 복사가 다 되면, 전원을 뽑고 microSD 카드를 제거한 다음, 다시 전원을 연결하면 끝이다.
유후~ 이제 내 비글은 Ubuntu~!!
아쉬운 점이라면 여러 방법을 찾아보고 싶었는데, 잘 안된다는 점 TㅅT
- 참고
Ubuntu Images for the BeagleBone Black - armhf.com
[BBB] BeagleBone Black에 OS 설치 시 팁 (어쩌면 FAQ)
[BBB] BeagleBone Black에 새 OS 설치
[MacOS] microSD 카드에 OS 이미지 넣기
Installation/FromImgFiles - Community Ubuntu Documentation
Booting Ubuntu on BeagleBoard Black
BeagleBoardUbuntu - eLinux.org
덧글|신고