====== ファームウェア更新時に任意の処理を行うファームウェアの作成 ====== 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 のパッケージを更新させるファームウェアとすることができます。 #! /bin/bash apt-get update apt-get -f upgrade