FAQ : /etc/config/rc.local が原因で、起動しなくなった

対象製品: Armadillo-IoT G1/G2Armadillo-Box WS1Armadillo-840Armadillo-810Armadillo-460Armadillo-440Armadillo-420Armadillo-410

残念ながら、Linuxが起動しないと、 /etc/config/rc.local を編集するのは難しいです。そこで、Hermit を使って /etc/config のデーターを消してしまう方法を紹介します。/etc/config は、フラッシュメモリの「configリージョン」に保存されています。configリージョンにデーターがない場合、次回起動時に flatfsd/etc/default から/etc/config を再構築してくれます。

以下では、「Hermit コマンド」と 「Hermitプロンプト」の2つの方法を紹介します。どちらの方法でも、Armadillo は保守モードで起動してください。

ATDE や Linux など、hermit コマンドが使える環境から

hermit コマンドが使える環境であれば、下記のコマンドで config リージョンを消すことができます。

[PC ~]$ hermit erase -r config --port /dev/ttyUSB0

使用するシリアルポートは、環境に合わせて置き換えてください。

Windows や OS X など hermit コマンドが使えない環境から

hermit コマンドが使えない環境では、シリアル通信ソフトウェアを使います。hermit プロンプトで erase コマンドを実行することで、フラッシュメモリのどこでも消すことが可能です。ただし、erase コマンドは、リージョン名を受け付けません。フラッシュメモリのアドレスだけを受け付けます。そこで、まずは config リージョンのアドレスを memmap コマンドで調べます。

hermit> memmap
0x04000000:0x0bffffff FLA all bf:8K bl:4x32K/l,1023x128K/l
0x04000000:0x0403ffff FLA bootloader bf:8K bl:4x32K/l,1x128K/l
0x04040000:0x0407ffff FLA config bf:8K bl:2x128K
0x04080000:0x040bffff FLA license bf:8K bl:2x128K/l
0x040c0000:0x044bffff FLA firmware bf:8K bl:32x128K/l
0x044c0000:0x048bffff FLA kernel bf:8K bl:32x128K
0x048c0000:0x0bffffff FLA userland bf:8K bl:954x128K
0x40000000:0x5fffffff RAM dram-1

Armadillo-840の場合、config は、 0x04040000 にあることが分りました。また、bl:2x128K から、「128KBのブロックが2つある」と分ります。そこで以下のように erase コマンドを実行し両方のブロックを消します。

hermit> erase 0x04040000
hermit> erase 0x04060000

これで、configリージョンが消されました。アドレスを間違うと Linux の領域なども簡単に消せてしまいます。十分注意してください。

参考

configリージョンがフラッシュメモリのどこにあるかは、各製品のマニュアルにも記載されています。

製品 アドレス
Armadillo-IoT 0xa1f00000
Armadillo-Box WS1 0xa1f00000
Armadillo-840 0x04040000
Armadillo-810 0x00040000
Armadillo-460 0xa1fe0000
Armadillo-440 0xa1fe0000
Armadillo-420 (linux-3.14-at) 0xa0f00000
Armadillo-420 (linux-2.6.26-at) 0xa0fe0000
Armadillo-410 0xa1fe0000