EdisonのFlashROMを仮想マシン経由で書換えてみた

2015.02.12

はじめに

AWSチームのすずきです。

Intel Edison、reboot otaコマンドによりOS(Yocto linux)の更新、リカバリが実施可能です。

参考:09: Edison Getting Started Guideをやってみる

reboot otaコマンドが利用出来ない状況からの復旧や、別OSの導入などの場合には、 USB接続した別PCより、Intel EdisonのFlashROMの書換が必要となる場合があります。

参考:15: Intel Edison上のOSが起動しなくなった / rootパスワードを忘れた時には

FlashROMの書換に利用する「dfu-util」、MacOSX環境でもBrewを用いた導入が可能ですが、これが正常に機能しない事がありました。

確実なFlashROMの書換が期待できる実行環境として、Linux(Ubuntu)をOSX上のVMware Fusion上で稼働させ、Intel EdisonのFlashROMの書換が可能な事を確認できました。その手順を以下に示します。

実行環境

OS

  • Mac:MacBook Air (2014)
  • OS:OSX Yosemite (10.10.2)
  • 仮想ホスト:VMware Fusion 6.0.x
  • 仮想OS設定
    • OS:Ubuntu Server 14.04.1 LTS
    • 最小インストール
    • 追加パッケージ:ssh unzip screen dfu-util
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ssh 
sudo apt-get unzip screen dfu-util

USB接続設定

  • EdisonのJ3、J16にUSBで接続。
  • VMware Fusion上で、認識した以下のデバイスは 「動作を確認」→「この仮想マシン(Linux)に接続」 とし、Edisonリブート後の再接続を可能とします。

    • Future Devices FT232R USB UART(J3)
    • Intel Edison(J16)

VMware Fusion USB設定画面

edison-flashrom-vmfusion-img01

Edison Flash更新

イメージ入手と更新スクリプト実行

  • VM上のLinux(Ubuntu)にログインします。
  • Edison用のイメージファイルを入手します。
  • 同梱のスクリプト(flashall.sh)を実行します。

rel1 ww42-14 実行例

$ mkdir -p /tmp/ww42-14; cd /tmp/ww42-14
$ wget http://downloadmirror.intel.com/24389/eng/edison-image-rel1-maint-rel1-ww42-14.zip
$ unzip http://downloadmirror.intel.com/24389/eng/edison-image-rel1-maint-rel1-ww42-14.zip
$ sudo ./flashall.sh
Using U-Boot target: edison-blank
Now waiting for dfu device 8087:0a99
Please plug and reboot the board

Edisonの再起動

  • 「flashall.sh」を実行した環境で「Please plug and reboot the board」と表示されている間に、 Intel Edison Arduinoボード上のRESETボタン(SW1UI5)を押下します。
  • Edisonの起動をトリガとしてFlashROMの更新処理が開始します。
  • フラッシュ更新の所要時間は5〜10分程度です。
  • Edison上のデータ、USBストレージ領域を含めて全て消去されます。必要なデータはMicroSDなどの外部媒体に退避させて下さい。
  • EdisonのUSBコンソール(J3)にて進捗を確認する事をお勧めします。
  • USBコンソール、VM上のLinuxで/dev/ttyUSB0として認識している場合、以下で確認が可能です。
$ sudo screen /dev/ttyUSB0 115200 -L

flashall.sh 実行ログ

$ sudo ./flashall.sh 
[sudo] password for ubuntu: 
Using U-Boot target: edison-blank
Now waiting for dfu device 8087:0a99
Please plug and reboot the board
Flashing IFWI
##################################################] finished!
##################################################] finished!
Flashing U-Boot
##################################################] finished!
Flashing U-Boot Environment
##################################################] finished!
Flashing U-Boot Environment Backup
##################################################] finished!
Flashing boot partition (kernel)
##################################################] finished!
Flashing rootfs, (it can take up to 5 minutes... Please be patient)
##################################################] finished!
Rebooting
U-boot & Kernel System Flash Success...
Your board needs to reboot twice to complete the flashing procedure, please do not unplug it for 2 minutes.

Edison コンソールログ

$ sudo screen /dev/ttyUSB0 115200 -L

******************************
PSH KERNEL VERSION: b0182727
                WR: 20104000
******************************

(略)

U-Boot 2014.04 (Oct 12 2014 - 15:29:52)

       Watchdog enabled
DRAM:  980.6 MiB
MMC:   tangier_sdhci: 0
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0 
Target:blank
Partitioning already done...
Flashing already done...
GADGET DRIVER: usb_dnl_dfu
#
DFU complete CRC32: 0x677be95a
DOWNLOAD ... OK
Ctrl+C to exit ...
#
DFU complete CRC32: 0x677be95a
DOWNLOAD ... OK
Ctrl+C to exit ...
#
DFU complete CRC32: 0x7d41232d
DOWNLOAD ... OK
Ctrl+C to exit ...
#
DFU complete CRC32: 0x6d41a02b
DOWNLOAD ... OK
Ctrl+C to exit ...
#
DFU complete CRC32: 0x6d41a02b
DOWNLOAD ... OK
Ctrl+C to exit ...
#
DFU complete CRC32: 0xdaddfa4a
DOWNLOAD ... OK
Ctrl+C to exit ...
################################################################
DFU complete CRC32: 0xdb8b7821
DOWNLOAD ... OK
Ctrl+C to exit ...
resetting ...

******************************
PSH KERNEL VERSION: b0182727
                WR: 20104000
******************************

SCU IPC: 0x800000d0  0xfffce92c

PSH miaHOB version: TNG.B0.VVBD.0000000c

microkernel built 23:15:13 Apr 24 2014

(略)
Kernel command line: "root=PARTUUID=012b3303-34ac-284d-99b4-34e03a2335f4 rootfstype=ext4 console=ttyMFD2 earlyprintk=ttyMFD2,keep loglevel=4 systemd.unit=multi-user.target hardware_id=00 g_multi.iSerialNumber=58ff0c93bfef8929ea50d421e69542c6 g_multi.dev_addr=02:00:86:95:42:c6"

Starting kernel ...
(略)
Welcome to Linux!
(略)

Poky (Yocto Project Reference Distro) 1.6 edison ttyMFD2

edison login: 

2回の再起動後、新OSの操作が可能となります。

おまけ

Intel Edison 用のOSイメージ入手先リスト(2015年2月時点)