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