ArmbianにMQTT環境をインストール

syslogサーバになっているArmbianにMQTT環境をインストールします。作業内容はこちらの記事を参考にしました。(というか、そのまま)

注)ローカルネットワーク内でのテストのため、ユーザー認証なしの状態で実施しています。

サーバー (Broker) のインストール

サーバー(Broker)の起動

クライアントのインストール

リスナー(Subscribe)を動かす

リスナーの起動はサーバ(Broker)の起動後に行う。下記はその後のPublishをした際の記録を含む。トピックは mqtttest としてみた。

今回はローカルのサーバ(Broker)に対して接続(subscribe)しているが、リモートのサーバ(Broker)に対して接続(subscribe)する場合は「-h server名」とする。

別のPCでもクライアントのみ起動してサーバー(Broker)を指定してリスナーを起動すると、Publishした瞬間に同時に両方のリスナーで表示される。

Publishを動かす

今回はローカルのサーバ(Broker)に対して接続(Publish)しているが、リモートのサーバ(Broker)に対して接続(Publish)する場合は「-h server名」とする。

サーバー(Broker)を自動起動するように設定

dockerをarm64にインストール

ついでなので、dockerをarm64なubuntuにインストールしてみました。
最初、LinutMintと同じ方法で試してみたのですが、途中でエラーがでてうまく行きませんでした。最終的にはスクリプトを使う方法でインストールしました。

ターゲットはPine A64+上のArmbian Ubuntuです。MicroSDカードで初回起動後、armbian-configにてUSBメモリにインストールしたものです。インストールした際のログは以下のとおりです。

結局、手順としては非常に簡単で、

という感じでスクリプトをダウンロードしてきて実行するだけです。

Rock64をWiFi-APとしてもセットアップしてみました

hostapdを使って、WiFi-APとしてセットアップしました。

・・・が、なんのことはない、armbian-configの中に hotspot のメニューがあるので、それに従って設定するだけです。SSIDとパスワードはセットアップ後に /etc/hostapd.conf にて設定すれば完了です。
デフォルトでは AP としてのIPアドレスは172.24.1.1、DHCPで振られるIPは172.24.1.0/24のようです。

ROCK64用ケースを作ってみました

なんかケースばっかり作っている感じですが、先日Armbian Ubuntu 18.04を入れたROCK64 4GBにケースを作ってみました。もともと、Thinkiverseで見つけたケースを出力して入れていたのですが、HDMIに接続してXFCEデスクトップ環境のChrome上でYoutubeで動画を再生すると、小さなヒートシンクは付けてあるのですが70℃を超えていました。
これではいかん、ということでFANが付けられるケースを設計してみました。

FANは5Vのもので安いものがないか、ということで、秋月で100円で25mm角の5V動作のものを買ってきました。これに合わせて設計して出力したものが以下です。

右側が底板側で、穴の部分にはamazonで購入したインサートナットを圧入して使うように設計してみました。使用したインサートナットは下のような単純な形状のものです。

右下の2つが圧入前のもので、左が圧入後です。M2.5用のもので、ギザギザのある部分の外形ちょうどくらいの穴を開けておいて、長めのキャップスクリューの先に嵌めた状態でプラハンマーで叩いて挿入しました。

FANの取り付けはスナップフィットにして、下記のように追加の部品無しで取り付けられるようにしました。

上記の状態からROCK64のコネクタから5Vを取り出すようにコネクタをFANに付けて、完成としました。

写真ではLANケーブルは外した状態です。また、写っていないですが、反対側のUSBコネクタにはUSB3.0のUSBメモリと、キーボード/マウスのレシーバが刺さっています。その状態で同様にYoutubeを視聴してみたところ57℃くらいまで、XFCEデスクトップ環境で何もしない状態では45℃くらいまで下がりましたので、結構効果はあるものと思います。
電源は直結なので5Vが供給されている限り回りっぱなしです。25mmのFANということでかなりの高回転のようですが、径が小さいこともあり極端にうるさくはないようです。

3Dプリンタだと、このような適当なありものの部品に合わせてケースを作ってまとめられるので便利です。

ROCK64リモートデスクトップ環境

1年位前に買ったROCK64 4GBにArmbian Ubuntu18.04を入れてみました。別の端末からリモートデスクトップで接続できる環境が容易に構築できました。RAMが4GBあるので、目的によっては非常に便利に使えそうです。

1.Armbian Bionic for ROCK64のダウンロードとMicroSDへの書き込み

Armbianからダウンロードします。MicroSDへの書き込みはいつものようにディスクイメージライタで行いました。

2.初回電源投入

MicroSDを取り付け、LANに接続します。
接続先のIPアドレス確認のため電源投入の前に、fping でセグメント内で現在使われているIPアドレスを確認します。

ROCK64の電源を投入し、しばらく待って、再度fpingコマンドを実行、差分のところがROCK64のIPアドレスなので、そのアドレスに対して

としてログインします。初期パスワードは 1234 です。

※どうも、avahi-daemonが初めから動いているっぽいので、

で行けそうな気がします。

ログインに成功すると、現在のパスワード、新しいパスワードを確認してくるので入力します。
さらに、通常ユーザーの作成に移るので、適当に通常ユーザーを作成します。

一旦ログアウトして、再度作成したユーザーでログインし直します。

3.初期設定

で適当に初期設定を行います。

Systemの項目から以下のソフトウェアをインストールします。

  • Minimal Desktop
  • Default(ブラウザその他のインストール)
  • Lightdm(ログインマネージャ)

引き続きPersonalの項目から以下の項目を設定します。

  • TimezoneをAsia/Tokyoに設定
  • Languageはja_JP(UTF-8)

さらに、Softwareの項目からRDPを設定します。

4.リモートデスクトップクライアントから接続する

設定が終わると、別のマシンから Remmina(RDPクライアント)で接続するとリモートアクセスが可能となっています。すでに部分的ですが日本語化もされています。

「アプリケーション」⇒「Settings」⇒「言語サポート」で言語の設定を行いますが、この状態では英語のみインストールされていますので、「言語のインストールと削除」から日本語にチェックを入れて適用、キーボード入力に使うIMシステムにfcitxを選択します。その後、メニューとウインドウの言語で日本語を一番上に持ってきてから、「システム全体に適用」をクリックします。

地域フォーマットも同様に日本語を選択し、システム全体に適用します。

一旦ログアウトして、再度ログインして概ね完了です。
初めから Chromium ブラウザも入っているので、

5.ルートファイルシステムをUSBメモリに移動する

USBメモリを挿入した状態でarmbian-configを起動して、System settings で Install(Install on SATA, eMMC, NAND or USB)を選択、Boot from SDを実行すると、USBメモリにルートファイルシステムを移動してくれます。(実行する際にUSBメモリのパーティションを削除しておくと、自動でパーティション作成ツールが起動します)

USBメモリはこの記事で使ったSandisk UltraFit 3.1を使いましたが、システム移動後に

として1GBのファイルを作成してみたところ、所要時間は約10秒、107MB/sの速度が出ました。
まだ挙動がよくわからないところもありますが、速度面でも優位なのではないかと思います。

※Boot from SPIを実行するとSPIフラッシュにブートローダを書き込んで、SDカード無しで起動できるようになるのだと思いますが、戻し方を確認していないのでとりあえずbootはSDカードのままとしました。また、この作業は今回は最後にやりましたが、本来は最初にやっておいたほうがトータルの構築時間は短くて済むような気がします。

NanoPi NEO2セットアップ(Armbian編)

一旦は公式ディストリビューション?であるFriendlyCoreをインストールしたのですが、できるだけオープン系ということでArmbianをインストールし直しました。

OSイメージは Armbian の NanoPi NEO2 のページから Armbiean Stretch をダウンロードしました。ダウンロードしたイメージファイルを展開して、USBイメージライタでMicroSDカードに書き込むのは同じです。

書き込んだMicroSDカードをNanoPi NEO2に挿入します。ローカルPCで

を電源投入前後で実行、増えたIPアドレスを調べます。(注:電源投入後の実行はしばらく待ってから行います)
調べたIPアドレスに対して、

として、パスワード「1234」でログインします。ログインすると、rootのパスワードの設定変更を求められ、引き続きユーザーアカウントの作成を求められますので、適当に作成します。作成完了後、そのまま、

としてアップデートとavahi-daemonのインストール、カーネルバージョンアップ後の再起動を行います。以降は

でリモートログインできます。リモートログイン後、

として、Personalの項目内の Timezone、Locale、Hostname を適当に設定しておしまいです。

NanoPi NEO2セットアップ(FriendlyCore編)

何回やってるんだという感じのNanoPi NEO2のセットアップです。

公式イメージが置いてある http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2#Boot_from_TF のリンク先の Google Drive のURL https://drive.google.com/drive/folders/1w7eMluHWo3ezwKBdaJcDUcCtM9qVaaVv から「nanopi-neo2_friendlycore-xenial_4.14.52_20180628.img.zip」をダウンロードしてきて、イメージを展開、USBイメージライタでMicroSDカードに書き込みます。書き込んだMicroSDカードをNanoPi NEO2に挿入します。ローカルPCで

を電源投入前後で実行、増えたIPアドレスを調べます。(注:電源投入後の実行はしばらく待ってから行います)
調べたIPアドレスに対して、

として、パスワード「pi」でログインします。

でセットアップ。パスワードの変更、ロケール(ja_JP.UTF-8)の追加、タイムゾーンの変更(Asia/Tokyo)して、再起動。
再起動後、再度 ssh でログインして、

完了すると、以降は

でログインできるようになります。(ローカル側にも avahi-daemon が必要)

古いネットブックにKali Linuxをインストール

2代前の持ち出しPCのネットブック(IdeaPad S10-2、Atom N270、メモリを2GBに増設、HDDをSSD64GBに換装済み)にKali Linuxの32bit版をインストールしてみました。

グラフィカルインストーラは重いので、テキストインストーラを起動します。

途中、WiFiチップのドライバのregulatory.db b43/ucode15.fwなどが見つからない、というメッセージが出ますが、ここではそのまま放置して、有線LANを接続しておきます。

上記コマンドはすごく実行時間がかかりました。ホストしているサーバーまでの帯域が細いようで、ダウンロードも長いのですが、非力な初期のAtomでは非常に時間がかかります。で、なんだかんだ言いつつ、途中lightdmを選択し導入。
再起動し、ログイン画面でxfceを選択してログインします。ログインし直すと、軽くなってそれなりに操作できるようになりました。

BCM4311ドライバのインストール

このネットブックはWiFiチップとしてBCM4311が載っていて、Debian系をインストールするとドライバが入りません。Debianのページを見ると、non-freeのファームウェアは別途インストールする必要があるようで、主要な non-free のファームウェアを集めたアーカイブファイルへのリンクがあります。この中から、firmware-b43-installer_019-3_all.deb をダウンロードしておき、USBメモリで Kali linux 側に持っていって、

とすると、ファームウェアをダウンロード(これがまた時間がかかります。15KB/sくらいしか出ません。)

いろいろアップデート

これが終わったところで、ようやくいろいろアップデートかけます。

・・・1GBダウンロードだそうで、丸1日くらいかかりそうです。性能が非力かどうかよりも、回線側の問題ですね・・。

<追伸>実際はそこまでかかりませんでしたが、UbuntuやLinuxMintに比べるとやはり時間がかかってしまいますね。

Raspberry Piをネットワークの試験に使う

ここのところ買い集めている小さなLinuxボードは結局はネットワークの試験のために購入したもので、元々はなるべく小さなtcpdumpが使えて動かしっぱなしで放置できるものを探していたものです。で、いろいろぐぐっていたら、linuxでEthernetインタフェースが2つある環境を使って、もっといろいろできることがわかってきました。具体的には、ブリッジとして動作させてた上で、遅延を挿入したりできるというものです。その環境もRaspberry PiにUSBイーサネットアダプタを追加してやれば、Raspberry Piでもできそうなことがわかったので、試してみました。

1.Raspbianのインストール

今回はGUIは不要なので、Raspbian Liteを適当なMicro SDに書き込んで、余っていたRaspberry Pi model B+に入れました。
起動して、User/Passwd=pi/raspberryでログインしたあと、コンソールから

として再起動。再起動後、linuxマシン側から

としてsshでログイン、以降はリモートログインで作業します。リモートログインしたら、

として、初期設定をします。今回は、

  • パスワード設定
  • ホスト名をraspinetに変更
  • ブートオプションをConsoleに設定
  • ローカライゼーションでLocaleにja_JP.UTF-8 UTF-8を追加、デフォルトはen_GB.UTF-8のまま。タイムゾーンはAsia/Tokyoを選択。
  • Advanced OptionでExpand Filesystemを選択、Memory Spiltは16MBに設定

で、設定後に再度、再起動。再起動後、Linuxマシン側から

として再度ログインします。ログインしたら、

として、アップデートを一通りかけた後、bridge-utilsとtcpdumpをインストールします。

2.スクリプトファイルを作成して起動時に実行させる

として、ブリッジを起動する以下の内容のスクリプトを作成しました。(実行タイミングをsleepで調整しているのでちょっと汚いですが・・・)

IPv6は今回禁止、IGMP snooping も禁止しました。作成後に、

pi@raspinet:~ $ sudo chmod a+x /usr/local/bin/start-bridge

として、実行権限を付与。起動時に実行させるため、/etc/rc.local を修正して、最後の exit 0 の前に以下の部分を追加しました。

これで、Raspberry Piを起動させると自動的にブリッジとして動作するようになります。

3.tcpdumpで通過パケットをモニタしてみる

Linuxホスト側から

でブリッジに設定したRaspberry Piにログインします。その後、

とか、

で通過するパケットをモニタします。(後ろの方の長いのは vbr0 のIPアドレスを抽出しているだけです)
ポートやIPアドレスでRaspberry Piに接続しているsshのパケットを除外しています。除外しないと、表示した文字列をパケットキャプチャして、それを再度表示してしまいます。

4.参考情報

Pine A64+ 2GBにarmbianをインストール

Pine A64+ であるが公式サイトのUbuntu Mateはアップデートを行っていくと /boot パーティションの容量不足でアップデートができなくなってしまいました。これを機会に、armbianを試してみました。(ちなみに、以前の記事では1GB版でしたが、その後、秋月で2GB版が出ていたので買ってしまいました・・・)

1.イメージを書き込み

Ubuntu Desktopをこちらから bit torrent 経由でダウンロードして、ファイル展開、Linux Mint のUSBイメージライタで16GBのMicroSDカードに書き込みます。

2.起動

HDMIで液晶モニタに接続、USBでキーボードとマウスを接続してMicroUSB経由で電源供給してしばらくすると、CLIのログイン画面が表示されます。ここで、ユーザー名:root、パスワード:1234でログインすると、rootのパスワード変更が求められますので、パスワード設定を行います。引き続き、一般ユーザーの作成が求められますので、ユーザー名とパスワードとその他のログイン情報(空欄のままで大丈夫)を設定していきます。設定が終わると、GUIが起動します。

3.アップデートの適用

DHCPサーバーのある環境なので、何もしなくてもネットワークに接続できるようになっています。termnialを開いて、

でアップデートをすべて適用します。

4.日本語サポートの追加

左上の「Application」から「Setting」を選択、その下の「Language Support」を選択すると、「The language support is not installed competely」と表示されるので「Install」をクリックして不足部分のインストールを行います。この処理はかなり時間がかかります。途中、パスワード入力を求められるので、適宜入力してやります。
インストール直後だとサポート言語はEnglishのみなので、下の方の「Install/Remove Languages…」をクリックして、Japaneseにチェックを入れて「Apply」をクリック。
再起動してログオンし直すと、メニューなどが日本語化されます。

5.時計表示の修正

時計表示を右クリックしてプロパティを選択、タイムゾーンが空白になっているので、Japanに修正すると時刻表示が正しくなります。

6.ArmbianのConfig

デスクトップ上のConfigのアイコンをダブルクリックすると、uxtermが開いてその中でUbuntu16.04のconfiguration utilityが起動します。とりあえず必要な設定項目はないようですが、ここに設定があることを忘れないために備忘録としてメモしておきます。

7.ToDo

残っていること

  • 解像度が1280×720になっているので、1920×1080に変更したい。
  • 日本語入力の設定