タグ

ブックマーク / syuu1228.hatenablog.com (6)

  • netconsoleでpanicだけをログしてみる - syuu1228's blog

    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だけが送られてくるようになる。 使い方は特にそれまでと変わらない。

    netconsoleでpanicだけをログしてみる - syuu1228's blog
    kshimo69
    kshimo69 2013/04/27
    oops_only
  • パケット受信処理の待ち合わせ部分 - syuu1228's blog

    ネットワークスタックの、割り込みコンテキストからプロセスをたたき起こすまでの処理はしっかり読んだつもりなのだが、プロセスコンテキストで寝ている側を深く把握していなかったのでちょっと眺めてみる。 システムコールからプロセスがスリープするまで(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

    パケット受信処理の待ち合わせ部分 - syuu1228's blog
    kshimo69
    kshimo69 2013/04/13
  • アドレスからソースコードの位置を探すコマンド - syuu1228's blog

    カーネル飛んだ時とか、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

    アドレスからソースコードの位置を探すコマンド - syuu1228's blog
    kshimo69
    kshimo69 2013/01/26
  • シリアルコンソール上でのkdbの有効化 - syuu1228's blog

    ドキュメントがあんまりしっかりしてないのでここに書いておく。 ちなみに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以上。

    シリアルコンソール上でのkdbの有効化 - syuu1228's blog
    kshimo69
    kshimo69 2012/05/14
    9600はしんどいな。
  • Kernel/VM Advent Calendar 25日目 最近のPCアーキテクチャにおける割り込みルーティングの仕組み - syuu1228's blog

    ※追記: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/チップセット 割り込みを行う主

    Kernel/VM Advent Calendar 25日目 最近のPCアーキテクチャにおける割り込みルーティングの仕組み - syuu1228's blog
    kshimo69
    kshimo69 2012/01/06
    この辺コード見ても全然ピンとこない。
  • UbuntuのLinuxカーネルをビルドする - syuu1228's blog

    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

    UbuntuのLinuxカーネルをビルドする - syuu1228's blog
    kshimo69
    kshimo69 2011/12/20
  • 1