EdisonのFlashROMを仮想マシン経由で書換えてみた
はじめに
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 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月時点)