Armadilloフォーラム

Armadillo640:Kernel panicで起動できない。

masahide

2019年11月12日 18時06分

お世話になっております。赤坂と申します。

新品のArmadillo640を起動して、構築済みのArmadillo640のイメージファイルをddコマンドでコピーしたところ、
(dd if=/media/backupARM****.img of=/dev/mmcblk0 bs=1M)
以下のメッセージで終了してしまいました。

[ 337.659833] systemd: 24 output lines suppressed due to ratelimiting
[ 337.666503] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 337.666503]
[ 337.676081] CPU: 0 PID: 1 Comm: systemd Not tainted 4.14-at12 #1
[ 337.682377] Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[ 337.688894] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
[ 337.697023] [] (show_stack) from [] (panic+0xc8/0x238)
[ 337.704244] [] (panic) from [] (do_exit+0x9d4/0x9f0)
[ 337.711274] [] (do_exit) from [] (do_group_exit+0x40/0xa4)
[ 337.718853] [] (do_group_exit) from [] (get_signal+0xfc/0x660)
[ 337.726791] [] (get_signal) from [] (do_signal+0xc4/0x468)
[ 337.734369] [] (do_signal) from [] (do_work_pending+0xa8/0xc0)
[ 337.742307] [] (do_work_pending) from [] (slow_work_pending+0xc/0x20)
[ 337.750877] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 337.750877]

----------

その後再起動しても以下のメッセージで起動が止まってしまいコマンドも実行できない状況です。
どの様にして復旧できますでしょうか?

よろしくお願いします。

[ 1.420805] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities
[ 1.436382] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 1.444562] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[ 1.453344] Freeing unused kernel memory: 1024K
[ 1.462233] Starting init: /sbin/init exists but couldn't execute it (error -20)
[ 1.473029] Starting init: /etc/init exists but couldn't execute it (error -13)
[ 1.482265] Starting init: /bin/sh exists but couldn't execute it (error -8)
[ 1.489421] Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance.
[ 1.503605] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14-at3 #8
[ 1.509531] Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[ 1.515760] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
[ 1.523530] [] (show_stack) from [] (panic+0xc8/0x238)
[ 1.530428] [] (panic) from [] (kernel_init+0xfc/0x10c)
[ 1.537411] [] (kernel_init) from [] (ret_from_fork+0x14/0x2c)
[ 1.544998] ---[ end Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance.

ファイル ファイルの説明
起動時log.txt
コメント

masahide

2019年11月12日 20時01分

> 佐藤です。
>
> インストールディスクを作成し、それを使用することで復旧できるかと思います。
> https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…
>

回答有難うございます。
「11.1. インストールディスクを使用する」の手順でインストールディスクを作成しようとしたのですが
Oracle VM VirtualBoxでSDカードがマウントできない(やり方が分からない)のでUSBメモリに
.imgを作成して、そのファイルをSDカードにコピーしようとしてます。

「4.SDカードにインストールディスクイメージを書き込みます。 」で
sudo dd if=install-disk-sd-a640-[version].img of=/dev/sdb bs=4M conv=fsync
とあるのですが、[version]名はどの様に確認できますか?

コマンドを実行すると、
dd: 'install-disk-sd-a640-[version].img' を開けませんでした: そのようなファイルやディレクトリはありません
となってしまいます。

申し訳ありませんがよろしくお願いします。

<追加質問>
 ・既に構築済みのArmadilloからはインストールディスクは作成できないのでしょうか。
  取説の通りATDEからでないと作成できないのでしょうか。

at_makoto.sato

2019年11月13日 10時22分

佐藤です。

> 回答有難うございます。
> 「11.1. インストールディスクを使用する」の手順でインストールディスクを作成しようとしたのですが
> Oracle VM VirtualBoxでSDカードがマウントできない(やり方が分からない)のでUSBメモリに
> .imgを作成して、そのファイルをSDカードにコピーしようとしてます。
>
> 「4.SDカードにインストールディスクイメージを書き込みます。 」で
> sudo dd if=install-disk-sd-a640-[version].img of=/dev/sdb bs=4M conv=fsync
> とあるのですが、[version]名はどの様に確認できますか?
>
> コマンドを実行すると、
> dd: 'install-disk-sd-a640-[version].img' を開けませんでした: そのようなファイルやディレクトリはありません
> となってしまいます。
以下からダウンロードできます。
https://users.atmark-techno.com/files/downloads/armadillo-640/image/ins…
windows上でも、"Win32 Disk Imager"等のイメージ書き込みツールを使用すると、SDカードに書き込めます。
こちらで復旧できるかお試しください。

> <追加質問>
>  ・既に構築済みのArmadilloからはインストールディスクは作成できないのでしょうか。
>   取説の通りATDEからでないと作成できないのでしょうか。
構築済みのArmadilloのクローンを作りたいということであれば以下の投稿が参考になるかと思います。
https://armadillo.atmark-techno.com/forum/armadillo/3340

masahide

2019年11月13日 13時29分

> 以下からダウンロードできます。
> https://users.atmark-techno.com/files/downloads/armadillo-640/image/ins…
> windows上でも、"Win32 Disk Imager"等のイメージ書き込みツールを使用すると、SDカードに書き込めます。
> こちらで復旧できるかお試しください。

> > <追加質問>
> >  ・既に構築済みのArmadilloからはインストールディスクは作成できないのでしょうか。
> >   取説の通りATDEからでないと作成できないのでしょうか。
> 構築済みのArmadilloのクローンを作りたいということであれば以下の投稿が参考になるかと思います。
> https://armadillo.atmark-techno.com/forum/armadillo/3340

上記からダウンロードしたimgファイルを「Win32 Disk Imager」でSDカードへ書き込み、
ArmadilloをSDブートして復旧することができました。
ひとまず助かりました。

目的のクローン作成については、上記投稿を参考にやってみます。
有難うございました。

masahide

2021年5月28日 14時59分

赤坂です。
以前、構築済みのarmadilloから新規に購入したarmadilloへ環境をコピー(量産)する事を目的として
構築済みのarmadilloからddコマンドでイメージを吸い上げて
dd if=/dev/mmcblk0 of=/media/****.img bs=1M

新規のarmadilloへコピー

masahide

2021年5月28日 15時17分

赤坂です。

以前、構築済みのarmadilloから新規に購入したarmadilloへ環境をコピー(量産)する事を目的として
構築済みのarmadilloからddコマンドでイメージを吸い上げて
dd if=/dev/mmcblk0 of=/media/****.img bs=1M

新規のarmadilloへコピーしたところkernel panicになると投稿しました。
dd if=/media/backupARM****.img of=/dev/mmcblk0 bs=1M

インストールディスクを作成して、それを使用してSDブートすることで復旧させる手順を教えてもらい
復旧できる様になったのですが、なぜ発生するか原因または回避方法は分かりますでしょうか?

復旧後に同じ手順で成功することもあれば、何度かコピー失敗&復旧を繰り返して
ようやく成功したりします。

お手数ですがご助言お願いします。

at_ohsawa

2021年5月28日 15時50分

起動している状態のArmadilloで、というのはSDブートで起動していますか?

もし、eMMC(/dev/mmcblk0)から起動しているのであれば、/dev/mmcblk0を
マウントして、linuxのデバイスドライバが制御下においています。

そのmountしている状態のディスクデバイスに対してddをして書き込みをした場合、
OSの制御と矛盾した結果になりエラーしますし、単に読み出す場合にしてもread onlyで
mountしてない通常の状態でddで読み出しても刻々とOSの制御によって書き込み
が発生している可能性があるので適切に、バックアップとして読み出せる保証はありません。

ddしたい場合は、SDブートしてeMMCをmountしていない状態でddするか、
下記のユーザーランドを吸い出してイメージ化するツールを用意しているので
こちらの手順をご利用ください。
https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…

上の標準ガイドでは量産のためデータ作成ツールや注意点を
他にも紹介していますので是非通読なさることをオススメします。

masahide

2021年5月28日 16時09分

SDブートで起動してませんでした。
回答有難うございます。確認いたします。

masahide

2021年5月28日 16時37分

たびたびですが確認させて下さい。

製品マニュアルを参照して、SDブートするにはATDEからSDカードにイメージを書き込んで
SDカードを作成すると理解したのですが、現在動作しているarmadillo上のイメージを吸い出すには
そうではなく、上記でもうひとつ教えて頂いたURLの手順を行う必要があるということですかね。

https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…

そこで、URLの手順を参照したのですが、
現在動作しているarmadillo上のイメージをdump_rootfs.tar.gz としてSDカードに保存する所までできそうですが、
その後、新規のarmadillo上でどの様にファイルを展開すれば良いか記載が見当たらなかった為、
ご教示お願いします。

at_ohsawa

2021年5月28日 16時48分

> 製品マニュアルを参照して、SDブートするにはATDEからSDカードにイメージを書き込んで
> SDカードを作成すると理解したのですが、現在動作しているarmadillo上のイメージを吸い出すには
> そうではなく、上記でもうひとつ教えて頂いたURLの手順を行う必要があるということですかね。

上の手順はこういった問い合わせに対して、細かな注意点やノウハウを
ツールにしたものになります。本質的には同じです。

>
> https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…
>
> そこで、URLの手順を参照したのですが、
> 現在動作しているarmadillo上のイメージをdump_rootfs.tar.gz としてSDカードに保存する所までできそうですが、
> その後、新規のarmadillo上でどの様にファイルを展開すれば良いか記載が見当たらなかった為、

dump_rootfsで吸出したルートファイルシステムアーカイブは
https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…
のインストールディスクに組み込むことで、独自に吸い出したイメージが入ったインストールディスク経由で展開できます。
ドキュメントの通読をオススメします。

masahide

2021年12月13日 10時00分

本件で度々ですが確認させて下さい。

構築済みのarmadilloから新規のarmadilloへ環境をコピーする事を目的として、構築済みのarmadilloからddコマンドでイメージを吸い上げて
dd if=/dev/mmcblk0 of=/media/****.img bs=1M

新規armadilloへコピーしたところ
dd if=/media/****.img of=/dev/mmcblk0 bs=1M
kernel panicになり復旧できない状態になったので本件を投稿しました。

ご回答で、ddしたい場合は、eMMC(/dev/mmcblk0)から起動でなくSDブートしてeMMCをmountしていない状態でddしないとエラーが出ると伺いました。(この方法でやるべきだと考えてます)

ただ、開発当初(2018.11~2019.6あたり)はeMMC(/dev/mmcblk0)から起動してddした場合でも、kernel panicエラーは発生しなかったのが、
2019.11に5台コピーする中の1台で本事象が発生して以降、現在はほぼ毎回発生する状況なのですがその理由が分かりません。

Armadillo基板ハードウェアのバージョンが新しくなっていて、以前2018.11~2019.6頃にバックアップしたイメージでは
整合が合わないのでエラー(kernel panic)が発生するとかあるでしょうか?
ご存じでしたらコメントお願いします。

at_ohsawa

2021年12月13日 13時47分

> ただ、開発当初(2018.11~2019.6あたり)はeMMC(/dev/mmcblk0)から起動してddした場合でも、kernel panicエラーは発生しなかったのが、
> 2019.11に5台コピーする中の1台で本事象が発生して以降、現在はほぼ毎回発生する状況なのですがその理由が分かりません。

SDブートしないで起動中に、起動しているディスク自体からddしているということでしょうか。
overlayfsによる書き込み保護していない限り、ddしている最中にも常に様々なプロセスが動作して
ディスクへの書き込みがされているので、たまたまうまくダンプできただけかと思います。

> Armadillo基板ハードウェアのバージョンが新しくなっていて、以前2018.11~2019.6頃にバックアップしたイメージでは
> 整合が合わないのでエラー(kernel panic)が発生するとかあるでしょうか?

いいえ、ハードウェアにそういった変更はありません。