follow me

Pythonのhashlibが使えない

Pythonのhashlibが使えない。
OpenWrtではまったから残しておこう。

複数Python入れてたり、クロスビルド環境として一時環境作ってたりすると起こるケースがままありそう。
普通にOpenSSLのライブラリが見える位置にいるのかという話ではあるのだが、Pythonをやらない人からすると面倒くさいのです。
しかも、nodeのビルドをしたいだけなのに、Pythonのhashlibとかではまるとか考えないのですよ。

ちなみに、OpenWrtでビルドできなかったときのメッセージはこうなってました。
follow me

LinkIt 7688のビルド手順。(Ubuntu 18.04環境で)

Ubuntu 18.04環境でのLinkIt 7688ファームウェアのビルドについて。
LinkIt 7688は、TELECの関係上Chaos Calmer (15.05.x)を利用する訳ですが、Chaos CalmerはUtuntu 18.04環境でのビルドが出来ません。

実はChaos Calmer (15.05.x)だけの話しではなく、ながらくUbuntu 18.04でのビルドはmasterでもできなかった。(いつのまにかビルドできるようになったけど、おそらくパッケージによってはビルド失敗すると思われる。)
Ubuntu 16.04.x環境を用意すればいいのですが、それが面倒だという人が出てきてもおかしくないので、パッチを作ってみました。
ここまで変更入れないとビルドできないとか予想してませんでした。
基本バージョン構成はChaos Calmer (15.05.1)と同じに保ちたかったのですが、nodeだけ少しバージョン上がってしまいます。

用意したパッチは17個になります。
feedsで追加するパッケージ関係でのパッチが5個入っています。
feedsは、pythonとnodeに関するパッチです。(これらのパッケージを利用しないのであれば、苦労することはなかったのですが。。。)

では、各パッチと、ビルド手順を記載していきます。
patches.tar.gz
follow me

LinkIt 7688用にmtk-linkit-miniパッケージを用意する


LinkIt 7688、デフォルトでビルドされてしまうmtk-linkitパッケージの依存関係の関係で馬鹿でかいイメージになるのをなんとかしたい。
でも、外せないパッケージは存在する。
なので整理しました。
mtk-linkit-miniパッケージ。
ROM容量の節約だけでなく、ビルド時間の短縮にもなります。
勿論、wps要らないとか、リセット系動作とか自分で定義しなおせるなら、自分で書いてしまった方がもっと節約できる。
とりあえず、手軽にコンパクト化するものという位置づけです。

mtk-linkit-miniパッケージは、mtk-linkitパッケージに対し以下パッチを当てて作成します。
feeedsなので、追加してからパッチを当ててください。(全体の手順は下に記載していきます。
Add-mtk-linkit-mini.patch

手順の前に、どれぐらいサイズとビルド時間が変わるのかを出しておこうかと思います。
バイナリサイズ ビルド時間
mtk-linkit 21,505kb 85m10.838s
mtk-linkit-mini 3,329kb 44m16.293s
バイナリサイズは比較とかのレベルではなくなります。
32MB Flashを積んでいるので、大して気にする必要も無いかもしれませんが、焼きの時間等も考えれば小さいに越したことはありません。(不要なものを動かすメモリも勿体ないですし。)
ビルド時間は、ソースコードのダウンロード時間は含まず、make -j1の結果なので、ダウンロード時間も含めると差はさらに大きくなる。
follow me

LinkIt 7688のビルド手順。(Chaos Calmer 15.05.1)

仕方ないから過去枠埋めたったるわ。
本記事はルーターハックAdvent Calendar 2018 12日目の記事です。

LinkIt 7688が登場した当時は問題なかったのだが、OpenWrtからforkしたLEDEが登場し、OpenWrtに再結合したり、多くのイベントがあったのもありでLinkIt 7688の公式ドキュメントのビルド手順ではビルドできなくなってしまっている。
だれかがメンテしている様子もないので、解る人しか使ってないのだろうなと予想できる訳ですが。
このLinkIt 7688、実はTELEC取ってるんですよね。

もちろん、シール貼り付けれる人は限られてるのですが。。。
写真のはSeeed株式会社からTELECシール付きでお借りしたものになります。
また、TELECに反しない様にファームをビルドする手順となっています。
Seeed株式会社からなんとかTELEC刻印付きで販売してくれないものか。という話はあるが、なかなかロット数が稼げないと難しいのですかね。
みんなで数千個頼んで刻印入れて貰おうよ。とか人集め始めませんかね?


ちなみに今現在、chaos_calmer-15.05.1をビルドしようとすると以下の様なエラーとなってしまう。
mkdir -p /home/dev/chaos_calmer-15.05.1/dl
echo "Checking out files from the git repository..."; mkdir -p /home/dev/chaos_calmer-15.05.1/tmp/dl && cd /home/dev/chaos_calmer-15.05.1/tmp/dl && rm -rf libmraa-0.8.0 && [ \! -d libmraa-0.8.0 ] && git clone https://github.com/intel-iot-devkit/mraa.git libmraa-0.8.0 --recursive && (cd libmraa-0.8.0 && git checkout 70600dece4138b0c0dbaff42f57828f1559cd840 && git submodule update) && echo "Packing checkout..." && rm -rf libmraa-0.8.0/.git &&      tar czf /home/dev/chaos_calmer-15.05.1/tmp/dl/libmraa-0.8.0-70600dece4138b0c0dbaff42f57828f1559cd840.tar.gz libmraa-0.8.0 && mv /home/dev/chaos_calmer-15.05.1/tmp/dl/libmraa-0.8.0-70600dece4138b0c0dbaff42f57828f1559cd840.tar.gz /home/dev/chaos_calmer-15.05.1/dl/ && rm -rf libmraa-0.8.0;
Checking out files from the git repository...
Cloning into 'libmraa-0.8.0'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 11918 (delta 5), reused 5 (delta 4), pack-reused 11905
Receiving objects: 100% (11918/11918), 3.27 MiB | 1.22 MiB/s, done.
Resolving deltas: 100% (8349/8349), done.
Checking connectivity... done.
Submodule 'doxygen2jsdoc' (https://github.com/intel-iot-devkit/doxygen2jsdoc.git) registered for path 'doxygen2jsdoc'
Submodule 'doxyport' (https://github.com/intel-iot-devkit/doxyport.git) registered for path 'doxyport'
Cloning into 'doxygen2jsdoc'...
remote: Enumerating objects: 112, done.
remote: Total 112 (delta 0), reused 0 (delta 0), pack-reused 112
Receiving objects: 100% (112/112), 359.18 KiB | 0 bytes/s, done.
Resolving deltas: 100% (35/35), done.
Checking connectivity... done.
Submodule path 'doxygen2jsdoc': checked out '67cad692720982ac3cbd99bf1c3421edc69b08f9'
Cloning into 'doxyport'...
remote: Enumerating objects: 55, done.
remote: Total 55 (delta 0), reused 0 (delta 0), pack-reused 55
Unpacking objects: 100% (55/55), done.
Checking connectivity... done.
Submodule path 'doxyport': checked out 'db3e1a6eb8677d3166d90d82c3068689803ce547'
warning: unable to rmdir doxyport: Directory not empty
M       doxygen2jsdoc
Note: checking out '70600dece4138b0c0dbaff42f57828f1559cd840'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 70600de... mraa: update to version 0.8.0
fatal: reference is not a tree: 9cc90b7976252b2d14b7956230c5870097e1f008
Unable to checkout '9cc90b7976252b2d14b7956230c5870097e1f008' in submodule path 'doxygen2jsdoc'
make[3]: *** [/home/dev/chaos_calmer-15.05.1/dl/libmraa-0.8.0-70600dece4138b0c0dbaff42f57828f1559cd840.tar.gz] Error 1
make[3]: Leaving directory `/home/dev/chaos_calmer-15.05.1/feeds/packages/libs/libmraa'
make[2]: *** [package/feeds/packages/libmraa/compile] Error 2
make[2]: Leaving directory `/home/dev/chaos_calmer-15.05.1'
make[1]: *** [/home/dev/chaos_calmer-15.05.1/staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/stamp/.package_compile] Error 2
make[1]: Leaving directory `/home/dev/chaos_calmer-15.05.1'
make: *** [world] Error 2
follow me

ApresiaLightGC105-SSがプレゼントで届いた。

アンケート抽選のApresiaLightGC105-SSが当たって届いた。
Apresiaのループ検出したらブザーなるやつですね。
気にはなっていたのです。
が、買う機会は正直なかった。。。

follow me

open-vm-toolsをOpenWrtで使う

ESXiでOpenWrtを使うケースはあると思います。
その際に悲しい思いをした人は多いに違いない。
vmtoolsが無い。というか、glibcではなくmuslがデフォルトのOpenWrtではvmtoolsを入れるのは難しい。(というか入るのか怪しい。
なので、open-vm-toolsパッケージ作りました。
野良パッケージなので、ビルドしてください。
muslで動きますので、パッケージさえビルドすればOpenWrt本家でダウンロードできるイメージにも入ります。
https://github.com/srchack/custom-packages/tree/master/open-vm-tools


ESXi 6.7で動作確認しました。
ネットワーク情報は取れてます。シャットダウン/再起動系も機能しています。
正常に動いているかテストを全パターン試しておきたいが何か方法ないものか。。。
まぁ、OSシャットダウンが一番やりたかったことなので個人的目的は達成してはいるのですが。


ビルドするのが面倒な人用にパッケージ置いときました。
r7332-2163b49でビルドされています。
18.06環境であれば動くでしょう。(依存関係弱いので
open-vm-tools_10.3.0-1_i386_pentium.ipk
open-vm-tools_10.3.0-1_i386_pentium4.ipk
open-vm-tools_10.3.0-1_x86_64.ipk


open-vm-toolsのOpenWrtでのビルドについて、
open-vm-toolsのビルドオプションは、Makefileを見ていただくとおり、ほとんど無効化されています。
ライブラリ依存だったり、デフォルトでOpenWrtには入っていない機能に依存しているものは落としています。
filesディレクトリ以下は、起動スクリプトと設定ファイルです。shutdownはOpenWrtに足りないのでダミーです。
patches以下は、musl対応になります。(なんでlibc判別のための"__MUSL__"って存在しないんですかね?と愚痴ってみる)
musl対応系は、途中まで書きつつOpenEmbedded向けのパッチを見つけたので、ほぼそっちのパッチを調整しただけです。
follow me

PQI Air Penのath79対応

以前、OpenWrtに対応させたのですが、ar71xxはath79に移行される事になったので、どこかで書き直さないといけないわけですがサボってました。
ar71xxは、今のkernelバージョンで終了の様子なので、ath79移行は今後OpenWrtで使えるようにするには必要なことになります。
とりあえず少し古いけど、手元の開発環境でパッチを書いてみた。
r7995-967d646_ath79_pqi-air-pen.patch


ath79対応してみたものの、恩恵を受けないですね。ar9330では正直あまりメリット無いですね。
Kernelでかくなってしまったし、Flash小さいからますますメリット無いですね。


起動ログ貼り付けておきますね。
とりあえず動作問題なさそうなので、最新にパッチ作って送りますかね。
follow me

OpenWrt 18.06.0対応機種動作確認

OpenWrt 18.06.0がとっくの昔にリリースされています。
https://openwrt.org/releases/18.06/notes-18.06.0
18.06.1が出てしまいました。
自分が対応に関わったハードでの動作確認をやっと実施しました。(18.06.0です。)
  • Planex MZK-DP150N (ビルドしなおす必要あり)
  • YUKAI Engineering Inc. BOCCO
  • PQI Air Pen
  • Planex VR500
  • Planex MZK-EX750NP
  • Planex MZK-EX300NP
  • Planex CS-QR10
  • ELECOM WRH-300CR
  • Planex DB-WRT01
  • Planex MZK-750DHP
  • Planex MZK-WDPR (ごめんなさい電源見つからず)

各起動ログを張り付けておきます。

follow me

RB450GのopenWrt 18.06-rc2化


最近またRouterBOARDのOpenWrtをさわりはじめました。
以前触っていたのは2014年とか2015年とかの様なので、久々に見た訳ですがイロイロ変わってた。。。
ので、OpenWrt化手順を再度残しておきます。
OpenWrt/LEDEのプロジェクト再統合後、本家のドキュメント系が捜しにくくなりました。(Googleからの話。。。古いWikiが先に出てしまうんですよね。
ドキュメント自体は更新されているんですがね。

今回は、DHCPで流し込んでもいいのですが、BOOTPで流し込む方法で書き換えました。
BOOTPの方が、シリアルが無い機種でのRouterBOARDへの戻しが容易な為です。

とりあえず、BOOTPサーバの為にUbuntu 16.04の仮想マシンを利用しました。
Windowsだと手軽なBOOTPサーバが思いつかなかったので。


0. イメージファイル
https://downloads.openwrt.org/releases/18.06.0-rc2/targets/ar71xx/mikrotik/からダウンロードする。
以下2個が必要。
vmlinux-initramfs.elf
nand-large-squashfs-sysupgrade.bin
いつの間にかjffs2の領域にtar.gzを展開する方式から、sysupgrade.binを書き込むだけの方式に変わってました。(sysupgradeコマンドが対応しただけともいうが)
手順が大きく変わってしまったので、古い情報を見ると解らなくなってしまう。。。

1. リセットジャンパでBOOTPされる設定か確認
Winboxだと、System->Routerboard->Settingsの位置にあります。
BootProtocolがbootp、Enable Jumper Resetが有効な状態にして下さい。

設定したらshutdownします。
follow me

Interop Tokyo 2018 行ってきました (2)

Interop Tokyo 2018 行ってきました。
は良いとして、戦利品の話。
今年は袋にも困らない年でした。数年前は袋難民が大量発生しましたが、今年はそんな事は無かったです。

めずらしくオライリーは1冊しか買ってないので戦利品は無し。
実践パケット解析。
まぁ、動物じゃなくなったから新鮮味。。。