3.8あたりからかな?最近のカーネルのnetconsoleにはoops_onlyってオプションがある。 $ sudo modprobe netconsole netconsole=6665@192.168.100.12/eth0,6666@192.168.100.11/04:0c:ce:xx:xx:xx oops_only=Y こんな感じに指定しとくと、panicした時のdmesgだけが送られてくるようになる。 使い方は特にそれまでと変わらない。
ネットワークスタックの、割り込みコンテキストからプロセスをたたき起こすまでの処理はしっかり読んだつもりなのだが、プロセスコンテキストで寝ている側を深く把握していなかったのでちょっと眺めてみる。 システムコールからプロセスがスリープするまで(UDP) アプリケーションからのシステムコールが最終的にudp_recvmsgを呼ぶところまでの説明は割愛。 udp_recvmsgは__skb_recv_datagramを呼んで、sk->sk_receive_queueに積まれたskbを取り出そうとする。 (skはカーネル内のソケット構造体) この時、パケットがなければwait_for_packetがコールされるが、これが待ち合わせ処理のwait側。 wait_for_packetでは、prepare_to_wait_exclusiveでset_current_stateを呼びcurrent->sta
カーネル飛んだ時とか、RIP(EIP)からobjdump -d vmlinuxを見ながら位置を探したりしてたんだけれども、binutilsに含まれてるaddr2line使えばソースコードの行数簡単に見れたのね。 まぁ、これがあるからといってobjdumpでディスアセンブルさせて眺めたいケースが無くなるわけじゃないから、併用した方がいいんだろうけど。 objdumpで探す $ cd ~/linux $ objdump -l -d vmlinux |less (/ ffffffff81525fc0と入力してReturn) ffffffff81525fc0 <dev_queue_xmit>: dev_queue_xmit(): /home/syuu/bcube-linux-stable/net/core/dev.c:2464 ffffffff81525fc0: 55 push %rbp ffff
ドキュメントがあんまりしっかりしてないのでここに書いておく。 ちなみにkdbというのは*BSDでいうddbである(説明になっていない。 まず、カーネルの.configでこのあたりを有効にしてみる: CONFIG_KGDB_KDB=y CONFIG_KDB_KEYBOARD=y CONFIG_HAVE_ARCH_KGDB=y CONFIG_KGDB_SERIAL_CONSOLE=y # CONFIG_KGDB_TESTS is not set CONFIG_KGDB_LOW_LEVEL_TRAP=yんでもって、boot parameterにkgdbocを足す: console=ttyS0,9600n8r kgdboc=ttyS0,9600以上。
※追記:MSIはPCI 3.0からじゃなくてPCI 2.3からだとの指摘を受けて書き換え。 ※追記:hisakさんから詳しくコメントが入っているので、併せて読んで下さい。 とてつもなく遅れたKernel/VM Advent Calendarの25日目の記事です。 Linuxにおける/proc/irq//smp_affinityはハードウェアにどのような設定を行うことにより実現されているのか、或いは最近のPCアーキテクチャにおける割り込みの仕組みはどうなっているのか、という辺りが知りたかったので調べてみた。 結構こんがらがっているので、予想外に時間を食ってしまった…まだ調べ尽くせていないが、分からない事はTODOとして一旦現時点での理解を書いておこうと思う。 前提条件 2つ以上のCPUコアを持つ、Core2世代或いはCore iシリーズ世代のIntel CPU/チップセット 割り込みを行う主
UbuntuでもRedhatなどと同じようにメインラインのカーネルをいくらか変更したローカルバージョンをメンテナンスしていて、ディストリローカルのバイナリパッケージとしてリリースされているので、単純にmainlineのtar.gzを落としてきてmake && make installしても同じものがビルド出来るわけではない。 今回は、mainlineのカーネルを使ってもkdumpが動かない(vmcoreinfoファイルが作れなかった)ので、Ubuntuバージョンを作ってみた。 #mainlineカーネルでもkdump出来る方法自体はあるはず。あくまでその方法が分かるまでの回避策。 $ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-oneiric.git $ cd ubuntu-oneiric $ uname -r 3.0.0-14-serv
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く