OpenBlocks IoTはIntel Edisonを実装しており、i386なLinuxサーバとして使うことが出来ます
OpenBlocks IoTはEdison内に標準で入っているYocto Linuxと、ぷらっとホーム社が実装したDebian GNU/Linuxの2つのOSが入っています
しかもDebian側にも2つの起動モードが存在するため、3つの使いかたができます。整頓すると以下のようになります
boot --+-------------- Yocto
|
+- Debian --+-- RAMディスクモード
|
+-- ストレージモード
2つのOSが入っているというのは地味に使い勝手がよく、片方のOS(特にDebian側)をダメにしてしまっても、Yocto側からの回復作業が可能になります
注: アップデートすると Yocto が rootfs(/dev/mmcblk0p8
) を+40MBくらい消費してしまい、Debian側で使用するinitramfs(ramdisk-wheezy.obsbx1.img.gz
)を rootfs に保存できなくなり、Debianが起動できなくなくなる可能性があります。結果的にOpenBlocks IoTをダメにしてしまう可能性がありますが、まったく無保証です
各モードへの移行方法
Yoctoのアップデートの前に、各モードへの移行方法を確認しておきます
boot -(A)------------- Yocto
|
+- Debian -(B)- RAMディスクモード
|
+-- ストレージモード
- (A)の分岐はOpenBlocks IoTの電源ON直後に行います。デフォルトはDebianです
- (B)の分岐は
/dev/mmcblk0p10
のディスクラベルの有無で行われます
(A)の分岐: OpenBlocks IoTでYoctoの起動
シリアルコンソール接続した状態でOpenBlocks IoTの電源をONにします
(もしくは、すでに起動中のOSでrebootをかけます)
電源ONから2~3秒すると下記のように表示されるため Enterキー等を入力してください
Hit any key to stop autoboot: 0
すると、U-Bootのプロンプトに移行します
Hit any key to stop autoboot: 0
boot >
この状態で run bootYocto
を実行すると Yocto が起動します
boot > run bootYocto
Yoctoには ID: root Password: なし でログインできます
停止/再起動 は halt
/ reboot
でそれぞれできます
(B)の分岐: RAMディスクモードでの起動
そのうち書きます
要するに /dev/mmcblk0p8
内の /ramdisk-wheezy.obsbx1.img.gz
をinitramfsとして起動して、それで終わりなのがRAMディスクモード
ディスクラベル DEBIAN
と割り当てられているパーティションをaufsでマウントするのがストレージモード
作業概要;
-
/dev/disk/by-partlabel/update
(=/dev/mmcblk0p9
) を vfat でフォーマット - Edison firmware image file (edison-image-**.zip) を取得、
/dev/mmcblk0p9
へ unzip reboot ota
仕組みとしては reboot ota
をすると /dev/mmcblk0p9
に展開されているイメージファイルを使ってアップデートが実行されます
その後、更新後のYocto上から、ぷらっとホーム社が用意しているDebianが起動できるようにリカバリー作業をすれば終わりです
2015/11/08時点での最新 "edison-image-ww25.5-15" はインストールが出来ませんでしたので、その一つ前の "edison-image-ww18-15" を使用します
Yoctoのネットワーク設定
Wi-Fi
configure_edison --wifi
でインタラクティブにWi-Fi設定が出来ます
※ぶっちゃけ、古い EdisonのFirmwareでは、Wi-Fi接続の性能が良くありません。Debian側でfirmwareを取得するほうが簡単かもしれません
有線LAN
USB Etherアダプタが使えるはずなのですが、ブランドを選ぶようです
認識されれば ip link
コマンドに enp0s17u1u4
のようなデバイスが見えるはずですので udhcpc -i enp0s17u1u4
等でIP設定してください
Intel EdisonをUSB Ethernet経由で有線LAN接続 - Qiita
Yocto上でのイメージファイル取得
wgetが使えます
root@edison:~# cd /home
root@edison:~# wget http://downloadmirror.intel.com/25028/eng/edison-image-ww18-15.zip
Debian上でのイメージファイル取得
Yocto上の /home
は実際は /dev/mmcblk0p10
ですので、ここに保存すればOKです
RAMディスクモードなら下記のとおりです
# mount /dev/mmcblk0p10 /mnt
# cd /mnt
# http://downloadmirror.intel.com/25028/eng/edison-image-ww18-15.zip
Firmwareのunzipとreboot ota
Yocto上で行います
root@edison:~# mkfs.vfat -F32 -I /dev/disk/by-partlabel/update
root@edison:~# mkdir -p /update
root@edison:~# mount -t vfat /dev/disk/by-partlabel/update /update
root@edison:~# unzip -x /home/edison-image-ww18-15.zip -d /update
root@edison:~# reboot ota
reboot ota
で再起動がかかり、次回起動時に更新処理が実行され、また再起動がかかります
更新されると Yocto上での /etc/version
が下記のように変わります
更新前;
root@edison:~# cat /etc/version
edison-weekly_build_56_2014-08-20_15-54-05
更新後;
root@edison:~# cat /etc/version
weekly-146
/dev/disk/by-partlabel/update
= /dev/mmcblk0p9
です
ちなみに、Edisonをストレージとしてマウントすると見えるのがこの /dev/mmcblk0p9
になります
Debianのリカバリー作業
更新時に /dev/mmcblk0p8
が初期されてしまいDebianが起動できなくなるため、起動処理に失敗→ループに陥りますので、次の方法で回復します
Yocto上で行います
作業としては bzImage と ramdisk-wheezy.obsbx1.img.gz を /dev/mmcblk0p8
に保存するだけです
Wi-Fi設定は configure_edison --wifi
で行えます(これも初期化されてます)。また、firmwareが更新されたことでWi-Fi接続性のも向上しています
# mount /dev/disk/by-partlabel/rootfs /mnt
# cd /mnt
# wget ftp://ftp.plathome.co.jp/pub/BX1/wheezy/3.10.17-9/bzImage
# wget ftp://ftp.plathome.co.jp/pub/BX1/wheezy/3.10.17-9/ramdisk-wheezy.obsbx1.img.gz
# reboot
/dev/disk/by-partlabel/rootfs
= /dev/mmcblk0p8
です
あとがき
もう、Yoctoでもいいんじゃないか?opkgとかあるしさ。