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
以上、よろしくお願いいたします。
コメント
at_kojiro.yamada
> 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に変更
kasawa.ms
at_yashi
2015年6月18日 11時39分
確認してみました。
でもブートしないですね。
earlyprintk
を付けて、ちょっと調べてみます。