Armadilloフォーラム

Armadillo-IoT G3 でコマンド「shutdown -h now」「poweroff」を実行するとカーネルパニックが発生する。

at_ohno

2016年8月2日 13時48分

大野と申します。

あるお客様とのやり取りの中で、フォーラムの皆様にも、ご参考になりそうな話がありました。
私自身の備忘録も兼ねて、ここに、ご紹介いたします。

Q.
Armadillo IoT G3 にて、
「shutdown -h now」「poweroff」コマンドを実行するとカーネルパニックが発生します。
また、その約2分後に再起動しますが、これは何故でしょうか?

A.
まず、カーネルパニックが発生する要因については、
Armadillo-IoT G3 では、システムの電源OFFが実装されていないためです。

「shutdown -h now」「poweroff」 のコマンドでは、
シャットダウン+システムの電源OFFが要求されますので、
Armadillo-IoT G3 では、「halt」コマンドでシャットダウンする様にお願いします。

次に、約2分後に再起動する現象については、ウオッチドッグタイマー(WDT)に因る物です。

Armadillo-IoT ゲートウェイ G3製品マニュアル v1.3.0 HTML版
第7章 Linuxカーネル仕様 | 7.3.19. ウォッチドッグタイマー
http://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_prod…

| Linux カーネルを停止した場合は、ウォッチドッグタイマーのキックができなくなるためシステムリセットが発生します。
| WDOGドライバーの終了処理では、タイムアウト時間をWDOGの最大値である128秒に設定します。

従いまして、「halt」コマンドでシャットダウンした場合も、再起動は発生します。

シャットダウン後、再起動させないようにする方法は、
U-BootでWDTを無効化する方法が有ります。
( ご参考までに、U-BootでWDTを有効化しないパッチを添付します。 )

しかし、量産製品や実用設備でArmadillo-IoT G3 をお使い頂く場合、
WDTを無効にしてしまって、復帰不可能な状況(kernelが動けない状態になったなど)になった時に、
最低限、再起動はされる。…と言う挙動が出来なくなるのは、大きなデメリットになると考えられます。

コマンドでシャットダウンし、再起動して欲しくない理由にも依りますが、
もし、主な目的が待機状況での消費電力の低減などであるならば、
ルートファイルシステムへの書き込みと電源断からの保護機能を有効にした上で、
GPIOの割り込みなどで、電源断が出来る様なHW構成とし、
RTCか3GモジュールのSMSから再起動が掛けられる様なシステムにするのが宜しいかと考えます。

電源断からの保護機能 ( overlayfs ) については、以下の章に詳しく記載されています。

Armadillo-IoT ゲートウェイ G3製品マニュアル v1.3.0 HTML版
第22章 Howto | 22.2. ルートファイルシステムへの書き込みと電源断からの保護機能
http://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_prod…

※ 例示したマニュアルなどのリンクについて、将来の閲覧者は、
下記からダウンロード可能な最新版のドキュメントで適宜読み替えてください。

http://armadillo.atmark-techno.com/armadillo-iot-g3/downloads

ファイル ファイルの説明
uboot_2014.04-at2_disable-wdt.patch