Armadilloフォーラム

起動時のboot_stateファイルに関して

narita

2017年9月19日 15時08分

お世話になっております。
G3Lにおきまして、カスタムイメージを作成中なのですがrebootを行うとリカバリブートになります。

カスタムイメージはoverlayfsをONにしたカーネルとオリジナルアプリケーションを入れたユーザーランド
でSDブートによるインストールを行っています。
SDブート後、ブートローダーの書き換え
第1パーティションにuImageとdtbファイルの書き込み
第2パーティションにユーザーランド
第3パーティションにリカバリーイメージ を書き込んで再起動を実施します

初回起動は問題なく起動してnode-eyeによりSACMにも接続されます
起動完了後rebootコマンドで再起動を行うと、リカバリブートで起動されます

MMCの第1パーティションにあるboot_stateの内容は1,0,になっており
ファイルを削除すると正常に起動できます。

u-bootでの起動時の問題と思いますが、boot_stateの内容とファーム異常の判断基準を
教えてください。

コメント

narita

2017年9月19日 16時52分

自己レスで申し訳ありません

boot_stateを内容 1,1, としてあらかじめMMCの第1パーティションに
配置することで、reboot、powroffを繰り返しても正常に稼働するようになりました

対策として問題あるでしょうか

narita

2017年9月20日 15時32分

再び自己レス、自己完結で申し訳ありません
boot_stateファイルは/etc/armsd/scriptsにあるboot-stateスクリプトで作っていたのですね

mountポイントの'on / 'と/dev/mmcblk2p2で判断しているようですがoverlayfsを有効にしたため機能しなかったようです。
スクリプト内の記述を 'on / 'から'on /overlay/system 'に変更することで対応したいともいます。
問題が有るようでしたらご指摘ください。

at_koseki

2017年9月21日 13時49分

古関です。

自己解決できてしまったようですが、回答したします。

> boot_stateを内容 1,1, としてあらかじめMMCの第1パーティションに
> 配置することで、reboot、powroffを繰り返しても正常に稼働するようになりました
> 対策として問題あるでしょうか

はい。問題ありません。

node-eyeパッケージのソースコード内に、boot_stateの記載があり
1,1,にすれば通常起動するようになります。

# Selection MAIN or RECOVERY kernel image
#| try | success | stete |
#|-----+---------+-------------------------------------------|
#| 0 | 0 | First time boot; try=1, main boot |
#| 1 | 1 | Successfully boot before; main boot |
#| 1 | 0 | Failed boot before; recovery boot |
#| 0 | 1 | Invalid "boot_state"; recovery boot |

> mountポイントの'on / 'と/dev/mmcblk2p2で判断しているようですがoverlayfsを有効にしたため機能しなかったようです。
> スクリプト内の記述を 'on / 'から'on /overlay/system 'に変更することで対応したいともいます。
> 問題が有るようでしたらご指摘ください。

overlayfsを有効にした場合の実装が不十分でした。申し訳ありません。
この対応で問題ありません。

'on / 'から'on /overlay/system 'への変更よりは、OR条件の方がベターかと思います。
製品アップデートで修正したいと思います。

よろしくおねがいします。