■
BeagleBoneBlack(ArchLinux)の設定
BeagleBoneBlack(ArchLinux)の起動の続きです。
方法
では、ここからはBeagleBoneBlackの設定を行っていきます。
アップデート
まずはOSのアップデートを行います。pacmanを実行してください。
$ pacman -Syu
:: Proceed with installation? [Y/n]と聞かれたら、yを入力してください。
:: Proceed with installation? [Y/n] y
もし、-bash: pacman: command not foundと言われたら、それはSDカードから起動できていません。 こちら見ながら、もう一度起動しなおしてみてください。
アップデート完了までしばらくお待ちください。
固定IPの設定
今後はnmapを使って総当りアクセスをしないように固定IPを割り振って、一発でアクセスできるようにします。
一般的なネットワーク上の固定IPの方法はこちらを見て設定してください。 (Linuxの固定IP設定)
USBでのSSH接続
これらの方法ではネットワークとルータが必要ですが、BeagleBoneBlackではさらにもうひとつアクセス方法を提供しています。
それは、電源供給に使用しているMiniUSBポートを使った接続です。(USB Ethernet)(USB 仮想LAN)
RaspberryPiでは、このポートは電源供給にしか使えませんが、BeagleBoneBlackはなんとこのポートを通じてSSH接続することができます。
しかし、デフォルトでは使用できないので使うための設定をしていきます。
usbネットワークインターフェースの有効化
まずは、usbのネットワークインターフェースを有効化します。
最初に、現在認識されているネットワークインターフェースをチェックし見ましょう。
$ ip link 1: lo: .................. 2: eth0: ...............
loとeth0の2つが表示されると思います。 ここにusb0を追加することでusbをネットワークインターフェースとして使うことができるようになります。
usbネットワークインターフェースを有効にするために次のコマンドを実行してカーネルにg_etherを読み込ませます。 (gとetherの間はアンダーバー)
$ modprobe g_ether
もう一度、認識されているネットワークインターフェースを確認してみましょう。
$ ip link 1: lo: ................. 2: eth0: ............... 3: usb0: ..............
usb0が追加されていれば成功です。
最後にip link upで有効になります。
$ ip link set up usb0
ifconfigで確認してみましょう。
$ ifconfig usb0
usb0の情報が表示されれば完了です。
自動設定スクリプトの作成
これらの操作は、再起動するとすべて初期化されてしまいます。
そのため、公式で永続的に設定する方法があるのですが、私の環境ではうまく動作しなかったため、ゴリ押しで起動するたびにこれらの操作を自動でするPythonスクリプトを組みます。
スクリプトは下記のようなものになっています。
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import os, sys import subprocess #----- call_system() -----# def call_system(cmd): splitted_cmd = cmd.split() subprocess.call(splitted_cmd) #----- main() -----# def main(): # Add IP Adress cmd = "modprobe g_ether" call_system(cmd) cmd =" ip link set eth0 up" call_system(cmd) cmd = "ip link set usb0 up" call_system(cmd) cmd = "ip addr add 192.168.7.2/24 dev usb0" call_system(cmd) if __name__ == '__main__': try: main() except KeyboardInterrupt: print("\nCtrl+C - END")
このファイルを/opt/bin/start_conf.pyとして保存してください。
startとconfの間はアンダーバー
$ mkdir -p /opt/bin/ $ cd /opt/bin/ $ pacman -S wget $ wget http://tokun.net/bookshelf/robot/start_conf.py $ chmod 755 start_conf.py $ pacman -S python3
次に、このスクリプトをsystemdを使って自動起動させます。
systemdに登録するためには、.serviceファイルを書きます。 今回は、別のスクリプトを起動させるだけなので、とても簡単なものになっています。
[Unit] Description=Beagle Bone Configuration After=local-fs.target [Service] Type=oneshot ExesStart=/opt/bin/start_conf.py [Install] WantedBy=multi-user.target
このファイルを/etc/systemd/system/start_conf.serviceとして保存してください。
startとconfの間はアンダーバー
$ cd /etc/systemd/system/ $ wget http://tokunn.net/bookshelf/robot/start_conf.service
最後に、.serviceファイルをsystemdに登録します。
$ systemctl enable start_conf.service
これで完了です。 次回起動時から自動で設定されるようになります。
$ reboot
起動時にはこちら見ながら、起動してください。
SSH接続
では、実際に接続してみましょう。
BeagleBoneBlackをUSBで接続したLinuxマシンで、ifconfigを打ちます
$ ifconfig
すると、普段より1つ多くデバイスが表示されると思います。 私の環境では、enp0s20u1i1と表示されました。 これが、BeagleBoneBlackです。
このデバイスを使って接続するのですが、IPアドレスが割り振られていないため接続できません。
そのため、まずはIPアドレスを割り当てます。
先ほど、BeagleBoneBlack側のIPを192.168.7.2/24に設定しました。Linuxマシン側は192.168.7.1/24を設定しましょう。
ip addrで割り当てます。devicenameは適宜先ほど調べてたデバイス名に置き換えてください。
$ sudo ip addr add 192.168.7.1/24 dev devicename
割り当てたら、もう一度ifconfigで確認してみましょう。
$ ifconfig devicename
192.168.7.1が割り当てられていることを確認したら、sshで接続します。
$ ssh root@192.168.7.2
パスワードはいつも通りrootです。
コンソールの左端に[root@alarm ~]#と表示されたら成功です。
インターネット接続はできませんが、これでBeagleBoneBlackとパソコンさえあれば、ネットワークなしでも接続できるようになりました。
おわりに
いかがでしたでしょうか。
わからないことなどがありましたら、ご質問だくさい。
2015/7/1