概要
今回使用したものとしては下記の通りです。
Beagle Bone Black | 本体 |
---|---|
Ubuntu (on Think Pad X1 carbon) | Beagle Bone Black へインストールするためのOS をmicro SD へ書き込むためのマシン。母艦マシン |
5V AC アダプタ | Beagle Bone Black に電源を供給するためのアダプタ。USB でも代用可能。 |
micro SD(Transcend 32GB Class10) | 今回はTranscend 32GB Class10 を使用。一部ベンダのmicro SD ではうまく動かない場合がある。 |
micro SD reader/writer | BUFFALO の reader/writer。詳細な製品名までは不明。Linux で認識できるもの。 |
その他 | RJ45 ケーブル、Beagle Bone Black を接続するローカルネットワーク etc |
必要なファイルのダウンロード
下記ダウンロードページより、bone-uboot.tar.xz とubuntu のファイル(ubuntu-trusty-14.04-rootfs-3.14.4.1-bone-armhf.com.tar.xz) をダウンロードします。
http://www.armhf.com/download/
今回は現在の最新版 である Ubuntu Trusty 14.04 LTS をダウンロードします。
$ wget http://s3.armhf.com/dist/bone/bone-uboot.tar.xz
$ wget http://s3.armhf.com/dist/bone/ubuntu-trusty-14.04-rootfs-3.14.4.1-bone-armhf.com.tar.xz
micro SD にLinux を書き込む
micro SD の接続
作業端末にmicro SD カードを挿入し、dmesg コマンドでmicro SD のデバイス名を確認します。
$ dmesg
.........
[ 1478.310048] ---[ end trace 6084bf91cd897474 ]---
[ 1487.007463] sd 1:0:0:0: [sdb] 60367872 512-byte logical blocks: (30.9 GB/28.7 GiB)
.........
出力結果より、今回自分が実施した環境では/dev/sdb
でmicro SD カードが認識されていることがわかります。
micro SD にパーティションを作成する
fdisk コマンドを実行し、/dev/sdb にパーティションを作成していきます。
$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): o ## <- "o" を入力して新しいDOS ディスクを作成する
Created a new DOS disklabel with disk identifier 0x18b0c30c.
Command (m for help): p ## <- "p" を入力して現在のパーティションを作成する
Disk /dev/sdb: 28.8 GiB, 30908350464 bytes, 60367872 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: 0x18b0c30c
Command (m for help): n ## <- "n" を入力して新規パーティションを作成する
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p ## <- "p" を入力してプライマリパーティションを作成する
Partition number (1-4, default 1): 1 ## <- "1" を入力して1 番目のパーティションを選択する
First sector (2048-60367871, default 2048): ## <- return を押下してデフォルトのファーストセクタを選択する
Last sector, +sectors or +size{K,M,G,T,P} (2048-60367871, default 60367871): 4095 ## <- 4095 を入力する
Created a new partition 1 of type 'Linux' and of size 1 MiB.
Command (m for help): t ## <- "t" を入力してパーティションのタイプを選択する
Selected partition 1
Hex code (type L to list all codes): e ## <- "e" を入力して'W95 FAT16(LBA)' を選択する
If you have created or modified any DOS 6.x partitions, please see the fdisk documentation for additional information.
Changed type of partition 'Linux' to 'W95 FAT16 (LBA)'.
Command (m for help): a ## <- "a" を入力してboot フラグをon にする
Selected partition 1
The bootable flag on partition 1 is enabled now.
Command (m for help): n ## <- 新しいパーティションをもうひとつ作成する
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p ## <- "p" を入力してプライマリパーティションを選択する
Partition number (2-4, default 2): 2 ## <- "2" を選択し、2 番目のパーティションを選択する
First sector (4096-60367871, default 4096): ## <- return を押して、デフォルトのファーストセクタを選択する
Last sector, +sectors or +size{K,M,G,T,P} (4096-60367871, default 60367871): ## <- return を押して、デフォルトのラストセクタを選択する
Created a new partition 2 of type 'Linux' and of size 28.8 GiB.
Command (m for help): p ## <- "p" を入力してパーティションを表示する
Disk /dev/sdb: 28.8 GiB, 30908350464 bytes, 60367872 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: 0x18b0c30c
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 4095 2048 1M e W95 FAT16 (LBA)
/dev/sdb2 4096 60367871 60363776 28.8G 83 Linux
Command (m for help): w ## <- "w" を入力してパーティションの設定を書き込む
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
パーティションをフォーマットする
1 番目のパーティションをFAT、2 番目のパーティションをext4 でフォーマットします。
$ sudo mkfs.vfat /dev/sdb1
$ sudo mkfs.ext4 /dev/sdb2
ファイルをコピーする
boot パーティションにファイルをコピーします。
$ mkdir boot
$ sudo mount /dev/sdb1 boot
$ sudo tar -xJvf bone-uboot.tar.xz -C boot
$ sync
micro SD を挿入してBeagle Bone Black のスイッチを入れたら、自動的にmicro SD から起動するようにuEnv.txt
を編集します。
(Beagle Bone Black の電源を入れた時に、自動的にmicro SD カードから起動するようにするには、boot パーティション領域のuEnv.txt
を編集することで可能になるという情報を幾つか見ましたが、今回自分が使用したubuntu では特に何も手を加える必要はありませんでした。)
$ sudo vim ./boot/uEnv.txt
optargs=
loadfdt=load mmc ${mmcdev}:2 ${fdtaddr} /boot/dtbs/${fdtfile}
loaduimage#mw.l 4804c134 fe1fffff; if load mmc 0:2 ${loadaddr} /boot/zImage; then setenv mmcdev 0; mw.l 4804c194 01200000; echo Booting from external microSD...; else setenv mmcdev 1; if test $mmc0 1; then setenv mmcroot /dev/mmcblk1p2 rw; fi; load mmc 1:2 ${loadaddr} /boot/zImage; mw.l 4804c194 00c00000; echo Booting from internal eMMC...; fi
mmcboot=run mmcargs; bootz ${loadaddr} - ${fdtaddr}
uenvcmd#i2c mw 0x24 1 0x3e; run findfdt; if test $board_name A335BNLT; then setenv mmcdev 1; mmc dev ${mmcdev}; if mmc rescan; then setenv mmc1 1; else setenv mmc1 0; fi; fi; setenv mmcdev 0; mmc dev ${mmcdev}; if mmc rescan; then setenv mmc0 1; else setenv mmc0 0; fi; run loaduimage && run loadfdt && run mmcboot
boot パーティションをアンマウントします。
$ sudo umount /dev/sdb1
$ rmdir boot
rootfs パーティションにファイルをコピーします。
$ mkdir rootfs
$ sudo mount /dev/sdb2 rootfs
$ sudo tar -xJvf ubuntu-trusty-14.04-rootfs-3.14.4.1-bone-armhf.com.tar.xz -C rootfs
$ sync
必要に応じて、固定IP アドレスをこの時点で設定しておきます。
$ sudo cp -ip ./rootfs/etc/network/interfaces ./rootfs/etc/network/interfaces.org
$ sudo vim ./rootfs/etc/network/interfaces
.......
auto eth0
iface eth0 inet static
address 192.168.1.13
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
.......
rootfs パーティションをアンマウントします。
$ sudo umount rootfs
$ rmdir rootfs
Beagle Bone Black からubuntu を起動
作業端末からmicro SD を取り出し、Beagle Bone Black のmicro SD 挿入口に入れて、RJ45 ケーブルも取り付けます。
次に5V AC アダプタ、もしくはUSB を接続して電源を入れます。
暫くすると設定したIP アドレスでLinux が立ち上がってくるので、ssh で接続してみます。
初期ユーザとパスワードはubuntu/ubuntu
になります。
$ ssh ubuntu@192.168.1.13
ubuntu@ubuntu-armhf:~$ id
uid#1000(ubuntu) gid=1000(ubuntu) groups1000(ubuntu),27(sudo)
ubuntu@ubuntu-armhf:~$ hostname
ubuntu-armhf
以下任意で、初期段階で実施しておいたほうが良い内容について記述していきます。
初期設定
ntp の設定
初期状態ではntp との時刻同期ができていないので、時刻同期するようにします。
$ sudo apt-get install ntp
$ sudo cp -ip /etc/ntp.conf /etc/ntp.conf.org
$ sudo vim /etc/ntp.conf
参照先ntp サーバをntp.nict.jp
に変更します(任意)。
#server ntp.ubuntu.com
server ntp.nict.jp
※その他初期状態で設定されているntp サーバがあれば、コメントアウトしてください。
タイムゾーンをAsia/Tokyo
に変更します。
$ echo 'Asia/Tokyo' | sudo tee /etc/timezone
$ sudo dpkg-reconfigure -f noninteractive tzdata
ntp デーモンを再起動します。
$ sudo /etc/init.d/ntp restart
$ sudo update-rc.d ntp defaults
時刻同期の状態を確認します。
$ sudo ntpq -p
remote refid st t when poll reach delay offset jitter
#####################====================================
ntp-a2.nict.go. .NICT. 1 u 28 64 1 7.831 -12.876 0.004
暫くすると同期するはずなので、放置しておきます。
エラー: Perl のlocale エラーが出る
Perl のプログラムが使用されると、次のようなエラーメッセージが出力されることがあります。
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ja_JP.UTF-8",
LC_ADDRESS = "ja_JP.UTF-8",
LC_MONETARY = "ja_JP.UTF-8",
LC_NUMERIC = "ja_JP.UTF-8",
LC_TELEPHONE = "ja_JP.UTF-8",
LC_IDENTIFICATION = "ja_JP.UTF-8",
LC_MEASUREMENT = "ja_JP.UTF-8",
LC_TIME = "ja_JP.UTF-8",
LC_NAME = "ja_JP.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
このようなエラーが出た場合は、locale-gen
コマンドを使用して、ロケール定義をコンパイルします。
$ sudo locale-gen en_US.UTF-8
$ sudo locale-gen ja_JP.UTF-8
コンパイルが完了したら、perl コマンドを実行してエラーが出ないことを確認します。
$ perl -e exit
その他の設定
sshd、ホスト名の設定等、必要に応じて実施してください。
参考
BeagleBone Black microSD Card Installation
http://www.armhf.com/boards/beaglebone-black/bbb-sd-install/
How do I fix my locale issue?
http://askubuntu.com/questions/162391/how-do-i-fix-my-locale-issue