LoginSignup
6
5

More than 5 years have passed since last update.

OpenBlocks IoTのEdison内のYoctoをupdateする

Last updated at Posted at 2015-11-08

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でマウントするのがストレージモード

作業概要;

  1. /dev/disk/by-partlabel/update (= /dev/mmcblk0p9) を vfat でフォーマット
  2. Edison firmware image file (edison-image-**.zip) を取得、 /dev/mmcblk0p9 へ unzip
  3. 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とかあるしさ。

参考ページ

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5