BeagleBone Black に Ubuntu xenial!!


これまではAngstrom(オングストローム)という、Linuxディストリビューションを使用してきました。

しかし！どうも古い環境だなぁ、システム・サービスを運用するにあたって安定性が非常に大事ということからUbuntuを入れてみようと思います。
今回はeMMCに直接書き込むのではなくSDカードにUbuntuのイメージを書き込み、ブートします！


まだまだ人に見せることを配慮しての書き方が足りてないので、もっとわかりやすく書かないといけないとおもう今日この頃。
わかりにくい点、アドバイスなどあれば是非コメントをください！

##SDカードのフォーマット
以前、SDカードにubuntuを書き込んでいたのでフォーマットします。フォーマットに`SDFormatter`を使用します。新品のSDカードを使用する場合ここは省略してください。

https://www.sdcard.org/jp/downloads/formatter_4/

フォーマットする際、オプションとしてクイックフォーマット、論理サイズ調整=ONを指定しフォーマットします。


##SDカードにイメージを書き込み
イメージを書き込んでいきます。書き込むにあたって使用したのはWindowsを使用しました。

SDカードに書き込むために以下のサイトを参考に
BBB用のディスクイメージをダウンロードします。
私がダウンロードしたのは`bone-ubuntu-xenial-console-armhf-2016-04-07-2gb.img.xz`です

http://elinux.org/BeagleBoardUbuntu#BeagleBone_White.2FBlack.2FGreen

ダウンロードしたファイルの解凍には`7zip`という解凍ソフトを使用します。

https://sevenzip.osdn.jp/

解凍はダウンロードしたファイルを右クリックし、`展開`を押し解凍します。


解凍後SDカードにイメージを書き込みます。
書き込みには`win32DiskImage`を使用します。

Win32DiskImager
https://osdn.jp/projects/sfnet_win32diskimager/

上記のサイトから`Win32DiskImager-0.9.5-binary.zip`をダウンロードし解凍します。解凍後、解凍先フォルダの`Win32DiskImaer.exe`を実行します。

その後ウィンドウが立ち上がるので、先ほど解凍したディスクイメージを選択し、書き込み先が正しく選択されていることを確認後`Wirte`を押し書き込みます。

以上でSDカードにUbuntuを書き込むことができました。

##Ubuntuを起動
BeagleBoneBlackにSDカードを挿入し起動します。HDMIなども接続し起動してみます！ここで立ち上がるのはCUIです。

BBBのS2ボタンを押しながら起動します！参考にしたサイトでは別にS2押さなくてもいけたということをかいてありましたが、わたしのケースだとS2おしておかないとダメでした。(二回目の起動時、S2ボタンを押さずに行うとubuntuが立ち上がりました。)

ubuntuを起動後ユーザ名とパスを聞かれます。

```
login: ubuntu
word: temppwd
```
でログインできます。

##パーティションの拡張

ここと全く同じようにやりました.

http://shirokuma-web.net/bbb-ubuntu-setup/

##ユーザの追加
mオプションをつけるとホームディレクトリを作ってくれます！

```
$ sudo useradd -m ユーザ名 <- ユーザの作成
$ sudo passwd ユーザ名 <- パスワードの追加
パスワード入力

$ sudo gpasswd -a ユーザ名 sudo  <- sudoが使えるようにする
```

安全面のことを考えubuntuユーザは削除しておいたほうがよさそうなので削除

```
sudo userdel ubuntu
```

ここに書いていることはパーティションの拡張で載せたURL二書いていることです。引き続き同じように設定を変更していきます。


##ホスト名の変更

```
$ hostname
arm <- デフォルトではこれ

$ sudo hostname ホスト名
```

/etc/hostnameも変更する

```
$ sudo vi /etc/hostname
```

```/etc/hostname
arm <-デフォルトではこれが記述されているので先ほど決めたホストネームに変更
```

/etc/hostsも変更する

```/etc/hosts
127.0.0.1   localhost
#127.0.1.1   arm.localdomain arm #ここを変更する
127.0.1.1   ホスト名.localdomain ホスト名

# The following lines are desirable for IPv6 capable hosts
::1   localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
```

ネットワークの再起動

```
sudo /etc/init.d/networking restart
```

##ネットワークの設定

/etc/netowrk/interfaceを編集

```/etc/network/interface
...
auth eth0
iface eth0 inet dhcp
...
```

現状ipアドレスをdhcpで割り当てるようにしているので、iface...の行をコメントアウトし自分でアドレスを割り当てます。

```/etc/network/interface
auth eth0
#iface eth0 inet dhcp
iface eth0 inet static
  address 環境次第
  network 環境次第
  netmask 環境次第
  broadcast 環境次第
  gateway 環境次第
  dns-nameservers 環境次第
```

eth0を構築し直します

```
$ sudo ifdwon eth0
$ sudo ifup eth0
```

うまく繋がらない方は参考サイトにもあるように/etc/resolv.confを見て直してみましょう。

##アップデート

```
$ sudo apt-get update
$ sudo apt-get upgrade
```

vimを入れたいのでvimをinstall

```
$ sudo apt-get install vim
```

##テストにLチカ

以前動かしたpythonのプログラムと同じものを作成し実行します。


```light.py
1 import Adafruit_BBIO.GPIO as GPIO
2 import time
3
4 GPIO.setup("P9_11", GPIO.OUT);
5 GPIO.output("P9_11", GPIO.HIGH);
6 time.sleep(3);
7 GPIO.output("P9_11", GPIO.LOW);
```

しかしAdafruitなんてないと怒られたので、モジュールをインストールします。
以下のサイトを参考にやりました。

https://learn.adafruit.com/setting-up-io-python-library-on-beaglebone-black/installation-on-ubuntu

```
$ sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus -y

$ sudo pip install Adafruit_BBIO
```

実行する際は`sudo`をつけて実行してみてください。

```
$ sudo python light.py
```

これでBeagleBoneBlackにUbuntuを入れることができました。次回からセンサーなどを扱っていきたいです。

シャットダウンする際はこれまで通りのコマンドにsudoをつけてあげてください。

```
$ sudo shutdown -h now
```


##参考サイト
このサイトのおかげでインストールできました。

 - http://shirokuma-web.net/bbb-ubuntu-setup/
 - http://elinux.org/BeagleBoardUbuntu#eMMC:_BeagleBone_Black