Armadilloフォーラム

Armadillo image更新後のKernel panicの対処方法

fukasawa

2019年6月5日 19時35分

日頃、お世話になっております。

Armadillo-440を新規に購入して、そのイメージファイルを新しいものに更新したところ、起動できなくなってしまいました。
対処方法を教えていただけると助かります。

# やったこと
https://armadillo.atmark-techno.com/armadillo-440/downloads
から最新のLinuxイメージとユーザーランドイメージをダウンロードしました。

それをUSBメモリ経由でArmadilloでnetflashで書き込みしました。

```
[root@armadillo440-0 (ttymxc1) /mnt]# netflash -knusbr /dev/flash/kernel linux-a400-2.07.bin.gz
...(略)
[root@armadillo440-0 (ttymxc1) /mnt]# netflash -knusbr /dev/flash/userland romfs-a440-2.04.img.gz
...(略)
netflash: got "romfs-a440-2.04.img.gz", length=15294660
netflash: programming FLASH device /dev/flash/userland
```

その後再起動したところ、起動に失敗するようになってしまいました。

```
[root@armadillo440-0 (ttymxc1) /mnt]# reboot
[root@armadillo440-0 (ttymxc1) /mnt]#
System is going down for system reboot now.

(略)

RAMDISK: ext2 filesystem found at block 0
RAMDISK: image too big! (40251KiB/32768KiB)
List of all partitions:
1f00 256 mtdblock0 (driver?)
1f01 2048 mtdblock1 (driver?)
1f02 30336 mtdblock2 (driver?)
1f03 128 mtdblock3 (driver?)
No filesystem could mount root, tried: ext3 ext2 msdos vfat
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
```

ログの全体を添付しました。

# ためした対処方法
https://armadillo.atmark-techno.com/faq/troubleshooting-a440-a420
を参考にHermitやLinuxの起動オプションは確認して、問題ありませんでした。

# 補足
別のArmadillo-440にも同様のことを実行したところ、同じ状態になったので、製品の初期不良ではないのではないかと思います。

# 環境
- Windows10 1803 64bit
- Intel Corei7
- VMware Workstation Player Ver 15.0.2
- ATDE5 amd64

コメント

Armadillo-440の出荷時のbootloader(hermit-at)は、
旧来のLinux-2.6.x系のカーネルに対応したものが書かれています。

今回書き換えて頂いた最新のLinux-3.14系のイメージを起動するには
bootloaderの書き換えも実施必要になります。
わかりづらくて申し訳ありません。

https://users.atmark-techno.com/armadillo-440/software
のブートローダーイメージを、「故障かなと思ったら」もしくは
ソフトウェアマニュアルに記載した、
shoehornによるアップデートで更新するようお願いします。

回答ありがとうございます。

頂いた情報を元に作業しました。

まず作業前にHermit-Atのバージョンが2.4.0であることを確認しました。

```
Hermit-At v2.4.0 (armadillo4x0) compiled at 07:42:06, Mar 30 2018
```

> shoehornによるアップデートで更新するようお願いします。
`shoehorn`によるローダーのアップデート、`hermit`によるHermitイメージファイルの更新を実施しました。
その後、Hermit-Atのバージョンが3.10.0であることを確認しました。

```
Hermit-At v3.10.0 (armadillo4x0/boot) compiled at 10:17:00, Nov 06 2017
```

その後LinuxカーネルとLinuxイメージを書き込み、無事にLinuxが3.14にアップデートできました。

```
atmark-dist v1.55.0 (AtmarkTechno/Armadillo-440)
Linux 3.14.36-at12 [armv5tejl arch]
```

ありがとうございました。

余談ですが、下記コマンドの前にたどり着くまで、かなり試行錯誤することになりました。

```
shoehorn --boot --terminal --target armadillo4x0 \
--initrd /dev/null \
--kernel /usr/lib/hermit-3/loader-armadillo4x0-boot-v3.10.0.bin \
--loader /usr/lib/shoehorn/shoehorn-armadillo4x0.bin \
--initfile /usr/lib/shoehorn/shoehorn-armadillo4x0.init \
--postfile /usr/lib/shoehorn/shoehorn-armadillo4x0.post --port /dev/ttyUSB1
```

というのも、以下の3つを混同していたためです。

文中の表現:loader-armadillo4x0-boot-v3.X.X.bin
ダウンロードした最新のローダー:loader-armadillo4x0-v3.11.0.bin
実際のコマンド:loader-armadillo4x0-boot-v3.10.0.bin

できればシリアルポートの読み替え([PORT]→[/dev/ttyUSB1])と同じように文中にフォローがあると助かります。

ポイントを絞って報告頂き、誠にありがとうございます。

そもそも、/usr/lib/hermit-3/以下に、期待する命名規則のファイルは
1つしかないので、
”--kernel /usr/lib/hermit-3/loader-armadillo4x0-boot-v3.*.bin”
と入力すれば人間が数値を入力する必要は無いですね…
tty以外はそのまま入力できる例に変更しました。

また、類似のファイル名が直後に出現するのは判りづらいので、
書き込みの直前にダウンロードするように手順を入れ替えました。

https://armadillo.atmark-techno.com/faq/troubleshooting-a440-a420

”--kernel /usr/lib/hermit-3/loader-armadillo4x0-boot-v3.*.bin”
そちらの方が、簡潔で良いですね(^^)

迅速な対応ありがとうございます。