■
BeagleBoneBlack(ArchLinux)の起動
目的
今回はBeagleBoneBlackについてです。
前回作成したArchLinuxのSDカードを使ってBeagleBoneBlackを起動していきます。
起動したあと、便利に使うための説明などをしていきたいと思います。
方法
では、ここからはBeagleBoneBlackの起動を行っていきます。
BeagleBoneBlackはディスプレイにマイクロHDMIケーブルを使うのですが、高いので今回は使用せずに、ディスプレイなしでBeagleBoneBlackのセットアップを行います。 方法は、同じネットワークへ接続してsshで繋ぐ方法と、USB-Serialコンバータを使用してシリアルコンソールでログインする方法、クロスケーブルを使う方法があります。 今回は1つ目の、ネットワークごしにログインします。この方法ではIPアドレスがわからなくても、sshで接続することができます。
2015/7/30 追記
USB-Serialコンバータを使用してシリアルコンソールでログインする方法を追記しました。こちら。
準備
まずは下記のものを用意してください
- BeagleBoneBlack (Rev C)
- ArchLinuxがインストールされたマイクロSDカード
- LANケーブル
- MiniUSB-B to USB-A ケーブル
- ネットワークに接続したLinuxマシン
(1) BeagleBoneBlack には種類が複数ありますが、現在最新のRev Cを使用します。
(2) BeagleBoneBlackはRaspberryPi B+などと同様にマイクロSDカードを使用します。 こちらの通りインストールをしておいてください。
内部ストレージもありますが、インストールにはSDカードを使用しないとできません。 内部ストレージの方が早いので、SDで起動した後に内部ストレージへインストールをお勧めします。
(3) BeagleBoneBlackをネットワークに接続するためにLANケーブルを使用します。有線でないと設定できません。
(4) BeagleBoneBlackはMiniBで電源供給を行います。 RaspberryPiと異なり、設定をするとこのポートを使って(ネットワークケーブルを使用せずに)パソコンからログインできるようになります。
BeagleBoneBlackの起動
まず、こちらで作成したSDカードをBeagleBoneBlackに差し込んでください。
ネットワークへ接続するために、有線LANでルータとBeagleBoneBlackを接続してください。
MiniUSBケーブルでBeagleBoneBlackとパソコンをつなぐと、電源が供給されて、BeagleBoneBlackが起動します。 しかし、デフォルトではeMMC(内蔵メモリ)に入っているDebianが起動してしまうので、SDカードから起動させるために、SDカードを差し込んだ口側にあるボタンを押しながら、USBケーブルを接続してください。
青いLEDが何度か点滅したら、ボタンから手を話しても大丈夫です。
しばらく待つと、LEDの点滅が一定周期になって起動したことがわかります。
起動には20~30秒ほどかかります。
これで起動は完了です。
BeagleBoneBlackへ接続
次に、用意しておいたLinuxマシンからBeagleBoneBlackへ接続します。 ここからは、Linuxマシンでの作業です。
LinuxマシンとBeagleBoneBlackは同じネットワークへ接続しておいてください。
BeagleBoneBlackへはsshを使って接続します。sshは、
$ ssh username@ipaddress
のように指定して接続します。
今回インストールしたArchLinuxのusernameはrootに設定されています。
では、ipaddressはどのようにしたらわかるのでしょうか?
インストールしたArchLinuxはIPアドレスはDHCPサーバから動的に取得するように設定されているため、IPアドレスがわかりません。
IPアドレスを探す
このような場合にはnmapを使用してIPアドレスを調べます。
nmapはポートスキャンなどに使われるネットワークツールです。 今回は、ネットワーク上に存在するすべてのマシンへパケットを送信して、SSH接続を待ち受けている(22番ポートが開いている)マシンを探します。
場合によっては、ネットワーク上に存在する他の人に迷惑をかけてしまうので、閉じた環境で実施してください。
まずは、BeagleBoneBlackを探す範囲を決定します。
LinuxマシンのIPアドレスをifconfigで取得します。 同じネットワークに接続しているため、BeagleBoneBlackのアドレスの範囲を推測することができます。
$ ifconfig wlp2s0: flags=4163 UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 192.168.1.5 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 2408:f3:447d:0:3fa5:eb78:c809:d96 prefixlen 64 scopeid 0x0 global inet6 fe80::f2ab:fd9f:60ae:e021 prefixlen 64 scopeid 0x20 link ether 40:25:c2:f5:53:2c txqueuelen 1000 (Ethernet) RX packets 7864 bytes 3785892 (3.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4651 bytes 794902 (776.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
私の環境では、上記のように表示されました。inetのうしろにある192.18.1.5がIPアドレスです。
環境によって、IPアドレスや、デバイス名(wlp2s0 や enp4s0 eth0)は変わりますが、IPアドレスを見つけてください。
BeagleBoneBlackも同じネットワーク上にいるため、さきほど取得したIP:192.168.1.5より、BeagleBoneBlackのIPアドレスは192.168.1.1 〜 192.168.1.255であることがわかります。
ここまで推測できたのでnmapを使って、推測した範囲内のマシン全てにパケットを送ります。
192.168.1.1 〜 192.168.1.255の範囲を指定するためには、192.168.1.1-255と打ち込みます。
IPアドレスは適宜置き換えてください。
$ nmap -p22 192.168.1.1-255
しかし、たくさんのマシンが表示されて22番ポートが開いているマシンがわかりづらいので、grepに流し込んでopenのものだけ表示させます。
$ nmap -p22 192.168.1.1-255 | grep -i -B3 open Nmap scan report for 192.168.1.6 Host is up (0.011s latency). PORT STATE SERVICE 22/tcp open ssh
私の環境では、上記のように表示されました。 forの後ろにあるのが、22番ポートが開いているマシンのIPアドレスです。
これで、BeagleBoneBlack(だと思われるマシン)のIPアドレスがわかりました。 もし複数表示された場合は、それぞれのマシンにssh接続を試してみてください。 正しいマシンにのみログインできるはずです。 (BeagleBoneBlackが複数ある場合は別ですが)
SSHで接続する
BeagleBoneBlackのIPアドレスがわかったため、これでやっと接続できます。
$ ssh username@ipaddress
のusrenameをroot、ipaddressを先ほど発見したIPアドレスに置き換えて接続します。
$ ssh root@192.168.1.6
「The authenticity of host '192.168.1.* (192.168.1.*)' can't be established.
ECDSA key fingerprint is ********************::.
Are you sure you want to continue connecting (yes/no)?」
と聞かれたら、yesと入力してください。
要は「これまでに接続したことがないけど信頼できるシステムなの?」ということです。
Are you sure you want to continue connecting (yes/no)? yes
もし、「Warning: Permanently added '192.168.1.*' (ECDSA) to the list of known hosts. ssh_packet_read: Connection closed」と言われて接続できない場合は、以前に同じIPアドレスのホストに接続したことがあるようです。 ホストが変わったため、次のように入力してそのIPアドレスのsshのリストを初期化してみてください。
ipaddressは適宜置き換えてください。
$ ssh-keygen -R ipaddress
うまく接続できると、「root@192.168.1.6's password:」とパスワードの入力を求められます。 デフォルトでrootのパスワードは「root」になっているため、rootと入力してください。
root@192.168.1.6's password: root
コンソールの左端が、「[root@alarm ~]#」になったら接続成功です。
[root@alarm ~]#
BeagleBoneBlackへ接続する(シリアルコンソール)
sshではなく、シリアルコンソールで接続する方法についてです。この方法では、sshが起動していない場合、ネットワークがない場合でも接続できます。
まずは、仮想コンソールscreenをインストールします。
$ sudo pacman -Sy screen
次にUSB-SerialコンバータとBeagleBoneBlackを接続します。
次のように接続してください。
BeagleBoneBlack | USB-Serialコンバータ |
---|---|
LANポート側から1つ目 | GND |
LANポート側から4つ目 | TX (OUTPUT) |
LANポート側から5つ目 | RX (INPUT) |
LinuxマシンにUSB-Serialコンバータを接続して起動します。
lsを使ってUSB-Serialコンバータのデバイス名をチェックします。
$ ls /dev/ttyUSB* /dev/ttyACM*
私の環境では、/dev/ttyUSB0として認識されました。
下記のコマンドを打って接続します。デバイス名は各自置き換えてください。
$ sudo screen /dev/ttyUSB0 115200
これで接続できます。
終了するときはctrl+a k yと3つ順に入力してください。