Armadilloフォーラム

kdump

kasawa.ms

2015年6月11日 13時45分

Armadillo-840でkdumpを使用しようと機能を有効化したのですが、
kernelが起動しない現象が発生しています。

以下に記載する手順で機能を有効化したのですが、kdumpを使用するために
追加で必要な手順があれば教えていただけないでしょうか。

<環境>
kernel:linux-3.4-at13
userland:atmark-dist v20150424

1. kernel configurationで以下のConfigを有効化
  CONFIG_KEXEC
  CONFIG_SYSFS
  CONFIG_CRASH_DUMP

2. bootloaderのsetenv コマンドで以下のように設定。

 hermit> setenv console=ttySC2,115200 mem=384M crashkernel=128M

コンソールに以下のメッセージが出力されたあと、kernelが起動されずHW Watch Dogでリセットする。

 Doing console=ttySC2,115200
 Doing mem=384M
 Doing crashkernel=64M
 branch to kernel image

以上、よろしくお願いいたします。

コメント

確認してみました。

crashkernel=0M

でもブートしないですね。

earlyprintk を付けて、ちょっと調べてみます。

at_kojiro.yamada

2015年6月24日 15時33分

> Armadillo-840でkdumpを使用しようと機能を有効化したのですが、
> kernelが起動しない現象が発生しています。

kdumpが動作するかは確かめていませんが、
以下のようにすると起動することを確認しました。

hermit> setenv console=ttySC2,115200 mem=384M crashkernel=64M@1280M

サイズを指定する際に、サイズの後に'@'を付けてオフセットを指定する必要が
ありました。また、オフセットは物理アドレスで指定しなければならず、
128MBでアラインメントされます。
Armadillo-840では、DRAMがメモリ空間の1GB目からマップされているため、
オフセットは 1024M + (128M * n) のような値を指定することになります。

■メモリ不足への対策について
上記の設定だけでは、メモリ不足により、crashkernelで使用するメモリ領域の
確保に失敗するかと思います。

メモリ領域の確保に成功したかどうかは起動ログに出力されるメッセージで
判断できます。

- 失敗の場合

crashkernel reservation failed - memory is in use (0x50000000)                  

- 成功の場合

Reserving 1MB of memory at 1280MB for crashkernel (System RAM: 384MB)           

メモリ領域の確保に失敗する場合、ユーザーランドから要らない機能を省いて
イメージのサイズを小さくする等の対策が必要になります。

ユーザーランドイメージを小さくする以外の対策としては、
以下の方法があります。

- AVコーデックミドルウェアが不要の場合
Linuxカーネルが管理するメモリを384MBから512MBにして、
128MBの空き領域を作ることができます。

Howto : AVコーデックミドルウェアを無効にしてメモリを全てLinuxに割り当てる
http://armadillo.atmark-techno.com/disable_acm_use_whole_ram

- HDMI出力が不要の場合
カーネルコンフィギュレーションで無効にし、CMAの空間サイズを34MBにすることで、
30MBほどメモリ使用量を削減することができます。

Kernel Configuration
   Device Drivers  --->
      Graphics support  --->
         <*> Support for frame buffer devices  --->
            <*>   SuperH Mobile LCDC framebuffer support
            < >     SuperH Mobile HDMI controller support   (a)チェックを外す
 
Kernel Configuration
   Device Driver --->
      Generic Driver Options --->
         [*] Contiguous Memory Allocator (EXPERIMENTAL)
         (34) Size in Mega Bytes                            (b)設定値を34に変更

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

不要な機能を省きメモリを確保することで、こちらの環境でも起動することが確認できました。
また、kernel panic発生で2ndカーネル起動 -> クラッシュダンプ取得まで確認することができました。

ダンプの解析までは至っていませんが、不明点あれば
また質問させていただきます。

以上、よろしくお願いいたします。