この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
mae3xx_devel:custom_firmware:start [2014/09/11 09:40] admin |
mae3xx_devel:custom_firmware:start [2015/09/15 10:07] (現在) admin |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | ====== ファームウェア更新時に任意の処理を行うファームウェアの作成 ====== | ||
+ | |||
+ | MA-E3xx のファームウェアは、ZIP アーカイブ形式となっています。(参照: [[mae3xx_ope:firmware_structure:start]])\\ | ||
+ | 下記の動作をファームウェアファイルの中に含めることが可能です。 | ||
+ | * ファームウェア更新の準備処理 (firmup-pre.sh) | ||
+ | * ファームウェア更新の事後処理 (firmup-post.sh) | ||
+ | |||
+ | もしくは | ||
+ | |||
+ | * ファームウェア更新処理((v2.1.9 までは、処理後ファームウェアを umount せず exit しているため、手動での ファームウェア umount 処理が必要です)) (firmup.sh) | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== ファームウェア更新プログラム ===== | ||
+ | |||
+ | ファームウェアの更新は、/usr/local/sbin/firmup スクリプトにより行います。\\ | ||
+ | 下記シーケンスで処理が行われます。 | ||
+ | |||
+ | * ファームウェアアーカイブ mount point (/tmp/.firmware) を mkdir | ||
+ | * rootfs.img が含まれているか? | ||
+ | * YES -> 現在と反対側のエリアのみ更新対象とする | ||
+ | * **[事前処理]** firmup-pre.sh が含まれているか? | ||
+ | * YES -> | ||
+ | * 更新事前処理実行: '' # /bin/bash /tmp/.firmware/firmup-pre.sh /tmp/.firmware 更新対象エリア(0/1)'' | ||
+ | * **[更新処理]** firmup.sh が含まれているか? | ||
+ | * YES -> | ||
+ | * 更新処理実行: '' # /bin/bash /tmp/.firmware/firmup.sh /tmp/.firmware 更新対象エリア(0/1)'' | ||
+ | * ファームウェア更新スクリプト終了((ここに cleanup 処理が抜けています。のちほど追加予定)) | ||
+ | * 規定のファームウェア更新処理 (kernel, kernel module, initramfs, rootfs, opt(JVM), device tree blob, bootloader) | ||
+ | * オーバーレイエリア更新処理 (etc, home, other) | ||
+ | * **[事後処理]** firmup-post.sh が含まれているか? | ||
+ | * YES -> | ||
+ | * 更新事後処理実行: '' # /bin/bash /tmp/.firmware/firmup-post.sh /tmp/.firmware 更新対象エリア(0/1)'' | ||
+ | * ファームウェアファイル umount 処理実行 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 実装の例 ===== | ||
+ | |||
+ | ==== Debian package 更新 ==== | ||
+ | |||
+ | apt-get update, apt-get upgrade を行うスクリプトを "firmup.sh" として入れることで、\\ | ||
+ | インターネットに接続された MA-E3xx のパッケージを更新させるファームウェアとすることができます。 | ||
+ | |||
+ | <file shell firmup.sh> | ||
+ | #! /bin/bash | ||
+ | |||
+ | apt-get update | ||
+ | apt-get -f upgrade | ||
+ | </file> | ||
+ | |||
+ | |||
+ | |||
+ | |||