ユーザ用ツール

サイト用ツール


spreadrouter_devel:custom_firmware:start

任意の処理を行うファームウェアの作成

SpreadRouter のファームウェアは、ZIP アーカイブ形式となっています。(参照: firmware_structure)
下記の動作をファームウェアファイルの中に含めることが可能です。

  • ファームウェア更新の準備処理 (firmup-pre.sh)
  • ファームウェア更新の事後処理 (firmup-post.sh)

もしくは

  • ファームウェア更新処理 (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)
      • ファームウェア更新スクリプト終了1)
  • 規定のファームウェア更新処理 (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” として入れることで、
インターネットに接続された SpreadRouter のパッケージを更新させるファームウェアとすることができます。

firmup.sh
#! /bin/bash
 
apt-get update
apt-get -f upgrade
1)
ここに cleanup 処理が抜けています。のちほど追加予定
spreadrouter_devel/custom_firmware/start.txt · 最終更新: 2023/09/19 17:08 by 127.0.0.1

ページ用ツール