home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

561 - 570 / 1320    [|<]  [|<]  [<]  51  52  53  54  55  56  57  58  59  60   [>]  [>|][>|]
タイトル/名前 更新者 更新日
技術/BSD/FreeBSDでのKernelデバッグメモ msakamoto-sf 2011-01-09 09:30:19
日記/2011/01/08/ディケイド、かっけーっす。 msakamoto-sf 2011-01-08 01:03:59
技術/BSD/FreeBSDでKernel Loadable Moduleをデバッグするメモ(1) msakamoto-sf 2011-01-07 22:00:11
技術/BSD/FreeBSDでのKernel Core or Crash Dumpの取得方法メモ msakamoto-sf 2011-01-07 21:25:53
技術/BSD/FreeBSDでのシリアルコンソール使い方メモ msakamoto-sf 2011-01-07 11:47:28
技術/VMware/WindowsホストとゲストOSのNamedPipeシリアル接続 msakamoto-sf 2011-01-07 10:33:54
日記/2011/01/06/FreeBSDのsingle userでJP106キーボードを使うには msakamoto-sf 2011-01-06 10:23:07
日記/2011/01/06/FreeBSDのshutdown(8) msakamoto-sf 2011-01-06 10:08:49
読書メモ/「プログラミングの宝箱 アルゴリズムとデータ構造」 msakamoto-sf 2011-01-05 18:39:05
日記/2010/12/31/2010年のまとめ msakamoto-sf 2010-12-31 09:29:56
ソート項目 / ソート順     1ページ 件ずつ表示

技術/BSD/FreeBSDでのKernelデバッグメモ  

所有者: msakamoto-sf    作成日: 2011-01-09 09:26:57
カテゴリ: BSD 

FreeBSDでのKernelデバッグについて雑多なメモ。

一次資料:

オンラインでDDBを起動する

KDB, DDB有効にしてカーネル再構築。

options KDB
options DDB

好きなタイミングで

# sysctl debug.kdb.enter=1

これでコンソール or シリアルコンソールでDDBが起動する。ダンプを保存したければDDB上で"panic"コマンドを実行する。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-09 09:30:19
md5:a41014f89cfdad3b26452a8556b6c5f1
sha1:cb4319b45b9df95144869cbce91185e02a6933e3

日記/2011/01/08/ディケイド、かっけーっす。  

所有者: msakamoto-sf    作成日: 2011-01-08 00:59:12
カテゴリ:

たまにはアニメでも見ようかとTSUTAYAで何本か借りてきた。
で、最近やる夫AAスレで仮面ライダーのAAが増えてきたので、気になってなんとなくディケイドのvol1を見てみたんだけど、結構面白い。主人公が結構「イイ性格」しててキャラ立ちしてるなぁ。他の平成ライダーも見てみたくなってきた。
他、今更だけど「空の境界」劇場版。まだ「俯瞰風景」観終わっただけだけど、とりあえず両儀式への愛に満ち溢れた映像であることはわかった。ってか、Google日本語入力、両儀式を一発変換できた。すげぇ。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-08 01:03:59
md5:cd16af0d197c8f3e90f594c35ebfc7d7
sha1:2e71d88f2338b9686cef054e13d9da8e469fa7b7

技術/BSD/FreeBSDでKernel Loadable Moduleをデバッグするメモ(1)  

所有者: msakamoto-sf    作成日: 2011-01-07 21:57:56
カテゴリ: BSD 

とりあえず下記handbookの内容を抄訳メモ。

他、"FreeBSD loadable module debug"などでググる。

で、上の内容なんだけど www."es".freebsd.org で見つかって、www.freebsd.orgの方には無い(2011-01-07時点)。
なんで、ちょっと不安。

あとあくまでもざっくり意訳したメモ書きで、実際に試してはいません。


1. デバッグ情報付きでモジュールをコンパイル

例としてlinux.ko:

# cd /sys/modules/linux
# make clean; make COPTS=-g

2. モジュールがロードされたアドレスを見つける

リモートからGDBでデバッグしてる(オンライン)場合:デバッグ機でkldstatすればLinker File= .koファイルがロードされたアドレスが分かる。
例:

# kldstat
Id Refs Address    Size     Name
 1    4 0xc0100000 1c1678   kernel
 2    1 0xc0a9e000 6000     linprocfs.ko
 3    1 0xc0ad7000 2000     warp_saver.ko
 4    1 0xc0adc000 11000    linux.ko

→ 0xc0adc000 に linux.ko がロードされてる。

crashダンプをkgdbなどでデバッグしてる(オフライン)場合:linker_files->tqh_first を起点として link.tqe_next を辿り、 filename が対象のlinker file名になっているエントリを見つける。見つかったら、 address メンバが linker file がロードされたアドレスを示している。

オンライン/オフラインそれぞれの場合でlinker fileがロードされたアドレスを見つけたら、その中に含まれている実行コードのアドレス(=linker file中でのオフセット)を調べる。

# objdump --section-headers /sys/modules/linux/linux.ko | grep text
  3 .rel.text     000016e0  000038e0  000038e0  000038e0  2**2
 10 .text         00007f34  000062d0  000062d0  000062d0  2**2
                                                ^^^^^^^^ これがオフセット。

というわけで、この例なら

0xc0adc000 = linux.ko = linker fileがロードされたアドレス
+
0x000062d0 = linker file中の".text"のオフセット = 実行コードのオフセット
=
0xc0ae22d0 = 再配置後のメモリ上の実行コードのアドレス

3. GDB(kgdb)にシンボルをロードする

add-symbol-file コマンドでシンボルをロードする。
今回の例:

(kgdb) add-symbol-file /sys/modules/linux/linux.ko 0xc0ae22d0
add symbol table from file "/sys/modules/linux/linux.ko" at text_addr = 0xc0ae22d0?
(y or n) y
Reading symbols from /sys/modules/linux/linux.ko...done.
(kgdb)

以上。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-07 22:00:11
md5:4b17a33127c2c90cc90afa5998e5bc0f
sha1:d1a96987ca66c47d1734cc9609bd8b0edf22bd18

技術/BSD/FreeBSDでのKernel Core or Crash Dumpの取得方法メモ  

所有者: msakamoto-sf    作成日: 2011-01-07 21:22:22
カテゴリ: BSD 

FreeBSDでのKernel Crash Dump, Core Dump の取得方法についてメモ。

一次資料:

Dumpの取得方法それ自体については上記資料の他にも色々見つかりますが、実際に実験しようとすると、まずCrash自体を発生させないとDumpも生成されない。というわけで、最初にGENERICカーネルでもプログラミング不要で使えるpanic(9)発生方法をまとめて、その後、Dumpの取得方法や必要な設定についてまとめます。
FreeBSD 6.0-RELEASEで確認してます。

Kernel Panic の起こし方

Crash Dumpの解析をしてみたいが、そのためにはKernel Panicが発生する必要がある。
panic(9)を使うのが素直な方法らしいが、そのためだけにわざわざカーネルモジュールを作るのは手間。
というわけで、とにかくpanic(9)を起こしたことにする方法。ざっとググッてみたところ2通りあるっぽい。

一つが sysctl の "debug.kdb.panic" オプションに1を設定する方法。

# sysctl -d debug.kdb.panic
debug.kdb.panic: set to panic the kernel
# sysctl debug.kdb.panic=1
→即座にpanic

出典:

もう一つが、

# sysctl -d machdep.enable_panic_key
machdep.enable_panic_key: Enable panic via keypress specified in kbdmap(5)
# sysctl machdep.enable_panic_key=1

としておいて、現在使っているキーマップファイルで、アクションに"panic"を設定したキーを用意し、コンソールから入力する方法。
出典:

"debug.kdb.panic"の方法については、昨日から使い始めたFreeBSD 6.0-RELEASEでは

# sysctl -d debug.kdb.panic
sysctl: unknown oid 'debug.kdb.panic'

となってしまい認識されない。

"machdep.enable_panic_key"については、少なくとも2004年7月頃にパッチが投稿されているので、それ以降なら使える可能性が高い。
2005年11月リリースのFreeBSD 6.0-RELEASEで問題なく機能した。

というわけで"machdep.enable_panic_key"によりpanic発生方法についてメモ。
FreeBSD 6.0-RELEASEのGENERICカーネルでも使える。

まずこのオプションに1を設定する。

# sysctl machdep.enable_panic_key=1

以降もずっと有効にしたければ /etc/sysctl.conf に登録しておく。

次に、現在使っているコンソールのキーマップに"panic"アクション用のキーを設定する。
"/etc/rc.conf"でキーマップを確認:

# grep keymap /etc/rc.conf
keymap="jp.106"

"keymap"の値に".kbd"を付ければ、キーマップのファイル名になる。この例なら:

/usr/share/syscons/keymaps/jp.106.kbd

がキーマップファイル名。キーマップファイルのフォーマットの詳細はkbdmap(5)参照。

とりあえず今回は"alt + ctrl + shift + p"をpanicに設定してみる。

 025   'p'    'P'    dle    dle    'p'    'P'    dle    dle     C
 →
 025   'p'    'P'    dle    dle    'p'    'P'    dle    panic     C

あとはkbdcontrol(1)でキーマップファイルをロードさせればOK.

# kbdcontrol -l /usr/share/syscons/keymaps/jp.106.kbd

これでコンソール上で"alt + ctrl + shift + p"を押せば、無事(?)Kernel Panicが発生する。GENERICカーネルならそのままCrash Dumpがswapデバイスに出力され、"options KDB" + "options DDB"付きのカーネルならDDBが起動する。
DDBが起動した場合は、

panic

コマンドでkernelのcore dump(=Crash Dump : 本当にCrashしたわけじゃないけど。)をswapデバイスに保存できる。詳細は前掲の "On-Line Kernel Debugging Using DDB" 参照。

Kernel Core Dump (Crash Dump) を保存するには

Dumpを保存するには2stepが必要。
1. kernel panic -> swapデバイスに保存される。 : dumpon(8)コマンド
2. 再起動後 -> swapデバイスからダンプデータを取り出して、適当なファイルに保存する。 : savecore(8)コマンド

基本的に "/etc/rc" により自動的に処理されるが、手動でdumpon(8)やsavecore(8)を実行することも勿論可能。
rc.conf(5)で"/etc/rc"で処理されるときのパラメータをカスタマイズすることもできる。

出典:

手動でdumpon(8), savecore(8)を実行する

まずswapinfoでswapデバイスがonになってるか確認、適当なswapデバイスを選ぶ。

# swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/ad0s1b        498504        0   498504     0%

dumpon(8)でダンプデータの保存先swapデバイスを設定する。

# dumpon /dev/ad0s1b

好みの方法でpanicを発生させ、swapデバイスにダンプデータを保存、その後 single user モードで再起動させる。
"/var/crash"などダンプファイル保存先のディレクトリをマウントし、savecore(8)でダンプファイルとして保存する。

OK>boot -s
...
# fsck -p
# mount -a
# savecore /var/crash /dev/ad0s1b
# exit

自動でdumpon(8), savecore(8)実行

基本的に "/etc/rc" が自動的にdumpon(8), savecore(8)を処理してくれる。
dumpon(8)のswapデバイスを指定したい場合は

dumpdev="/dev/ad0s1XY"

などをrc.confに設定する。
savecore(8)のダンプファイル保存先ディレクトリを指定したい場合は

dumpdir="/my/crash/files"

などをrc.confに設定する。

FreeBSD 6.0-RELEASEでは /etc/defaults/rc.conf において

dumpdev="AUTO"          # Device to crashdump to (device name, AUTO, or NO).
dumpdir="/var/crash"    # Directory where crash dumps are to be stored

が設定済みになっている。このため、殆どのケースではpanic発生時には自動的にswapデバイスにダンプデータが保存され、再起動後、自動的に"/var/crash"以下にダンプファイルが保存される。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-07 21:25:53
md5:c41acb71878dca938860a53dfbf6d09b
sha1:000f3b0a844bcde19f0f921247a31ab313399056

技術/BSD/FreeBSDでのシリアルコンソール使い方メモ  

所有者: msakamoto-sf    作成日: 2011-01-07 11:40:19
カテゴリ: BSD 

一次資料:

DDB関連のトピック以外はGENERICカーネルで使える。もし複数のシリアルポートを使い分けたり、通信速度を変更したい場合は上記一次資料を参考に設定ファイルの変更やカーネル再構築が必要となる。

とりあえずCOM1で9600bpsのままお手軽に出来ればオッケー、みたいなノリでメモ。

起動時のカーネルメッセージをシリアルポートに出力したい or DDBをシリアルポートで制御したい

FreeBSD 6.0-RELEASE環境で、一番お手軽で準備不要なのはboot時に"-h"オプション付ける方法。

boot -h

起動時のカーネルメッセージが物理コンソールとシリアルポートの両方に出力される。

DDBが起動するときも、物理コンソールとシリアルの両方から使えるので便利。つまり、「うっかりシリアルポートに接続しないでpanicしちゃった」時も、物理コンソール側からDDBを制御できるので安心。もちろんシリアルポートに端末を接続してれば、そちらからもDDBを制御できるのでなお便利。

FreeBSD 6.0-RELEASEでは、GENERICカーネルのhintsで

hint.sio.0.flags="0x10"

が定義済み。あとは"-h"オプション使うなり、

set console="comconsole"

を/boot/loader.confに設定する or boot時のプロンプト上から直接設定するなりすればOK。

ただし、set console="comconsole" だと物理コンソールに起動時メッセージの出力とかDDBの制御が渡らなく
なってしまうので、うっかりシリアルポートに端末を接続するのを忘れたとき「ouch!!」ってなっちゃいそう。

ちなみにGENERICカーネルで"-h"によりシリアルポートに出力できるのは起動時のカーネルメッセージまで。DDBはGENERICカーネルでは当然使えない。
DDBも使おうと思ったらDDBオプション有効にしてカーネル再構築が必要。

bootメニューの段階でシリアルポートを使いたい

"/boot"をマウントしたパーティションのルートディレクトリに、"boot.conf"という名前のファイルを作り、そこに

-h
-D
-P

のいずれかを書きこむ。"-h"だとシリアルポートにだけbootメニューやカーネルメッセージが出力される。"-D"ならシリアルポートと物理コンソールの両方からbootメニューが使えて、カーネルメッセージも出力される。"-P"だとキーボードの有無がチェックされる。

個人的には、キーボードがあろうとなかろうと、シリアルと物理、両方あれば両方使う、どちらか無ければ有るほうが使えれば良い、そういうケースが多いと思うので、"-D"が好み。

これらのオプションを二つ以上組み合わせたい場合の"boot.conf"は、

-D -P

のように分けても良いし、

-DP

のようにしても良い。

シリアルコンソールからログインしたい

/etc/ttysファイルの "ttyd"(FreeBSD 8.0以降は"ttyu")端末のエントリを "off" から "on" に書き換える。

ttyd0  "/usr/libexec/getty std.9600"   dialup  off secure
→
ttyd0  "/usr/libexec/getty std.9600"   dialup  on secure

これでシリアルポート用のgettyがブート時に起動され、ログインプロンプトがシリアルコンソールに表示されログイン可能となる。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-07 11:47:28
md5:fe9b513a622f99cd0b185767cea460b8
sha1:999e1e896e5b9dc3c53ed339c3ab115e3757fa18

技術/VMware/WindowsホストとゲストOSのNamedPipeシリアル接続  

所有者: msakamoto-sf    作成日: 2011-01-07 10:29:15
カテゴリ: VMware Windows 

ゲストOSのシリアルポートをNamedPipeに設定し、Windowsホスト側のアプリケーションと接続する方法のメモ。

→ "Named Pipe TCP Proxy Utility" を使ってNamedPipeをTCP/IPに中継、あとはTeraTermなりtelnetコマンドなりでお好きなWindowsアプリ使って通信できます。

Win7でもOKでした。

参考:

一応TeraTerm側で自前でNamedPipeに対応する機能を追加する動きがあるようです。将来、上記のUtilityを入れなくてもTeraTermだけで接続できるようになるかもしれません。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-07 10:33:54
md5:9c614c0b6316d89fb1a118f63cb93341
sha1:1a925cb19bd086be8bbe1b662fa0103b31cd9298

日記/2011/01/06/FreeBSDのsingle userでJP106キーボードを使うには  

所有者: msakamoto-sf    作成日: 2011-01-06 10:16:49
カテゴリ: BSD 

他に頭の良いやり方があるかもだけれど、とりあえず適当に "FreeBSD single user keyboard" でググッてみたりしたらできちゃったのでメモ。

まずFreeBSDのブートメニューでブートローダーのプロンプトを表示させて、

OK> boot -s

でsingle userでブートする。で、適当に/bin/shとかを起動して、

# mount -a

とかで適当にマウントして、

/usr/share/syscons/keymaps/

以下を見れるようにしておく。

で、

# kbdcontrol -l /usr/share/syscons/keymaps/jp.106.kbd

すれば使えるようになった。

# kbdcontrol -l /usr/share/syscons/keymaps/jp.106x.kbd

でも良いのかもしれない。試してないので分からないけど。

これをしておかないと、chpassとかでviを起動したとき、viコマンドの":"の入力で困ることになるので。
いや~、焦った焦った。":"を押してもviコマンドにならず、「あ、もしかして英語キーボードになってる?」ってところでググリだした次第。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-06 10:23:07
md5:e733558f2e099be5ff1c11582f4ba772
sha1:0d0f60d9aad68c3c39b59fb8ffdfc2dd32472065

日記/2011/01/06/FreeBSDのshutdown(8)  

所有者: msakamoto-sf    作成日: 2011-01-06 10:05:02
カテゴリ: BSD 

最初

shutdown -h now

しても電源がOFFにならないので、適当に"FreeBSD shutdown power off"とかでぐぐってみたら、

shutdown -p now

すればOKということがわかった。へ~。
Linuxだと"-h"で電源もOFFになるんだけど、FreeBSDだと分かれてるんだ・・・。

電源管理に関連するkernel機能となるとAPMやACPIのオプションが気になるけど、昨日から使い始めたFreeBSD-6.0のGENERICだとデフォルトでACPIが有効になっていたので、特に問題は無かった。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-06 10:08:49
md5:467349d5e00c450883047b53f47e110b
sha1:dd973fa3a8fc48ca0a29d23e791bec27e7286c81

読書メモ/「プログラミングの宝箱 アルゴリズムとデータ構造」  

所有者: msakamoto-sf    作成日: 2011-01-05 18:34:43
カテゴリ: プログラミング 読書 

2004年に購入してずっと本棚に眠っていましたが、簡潔かつ短めなサンプルコードと一緒にサクサク読み進めることが出来ました。

基本と本質部分を図とともに分かりやすくガイドしてくれます。広く浅くつまみ食いできるようになってますので、アルゴリズム分野への肩の凝らない入門書としておすすめです。

オフィシャル:


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-01-05 18:39:05
md5:fb9e3ef01f9c48036eb8f6c21e4c6f11
sha1:c972a9c0539103c6682f1a555cd572a21c88e1ba

日記/2010/12/31/2010年のまとめ  

所有者: msakamoto-sf    作成日: 2010-12-31 09:00:00
カテゴリ:

家賃の都合で千葉県は習志野市に引越し、ニート・ひきこもり生活を満喫しつつ、自動車免許取得したりスキューバダイビング始めたり本棚に積まれていた技術書を消化したり知り合いのお手伝いをしたりしてました。あと近くにコナミスポーツクラブがあったので、2月位から通い始め、なんとか10kgの減量に成功しました。ダイビング始めたのもコナミスポーツクラブで誘われたのがきっかけです。

参考:2009年のまとめ:

2010年で自分にとって印象深い出来事や本サイトの記事をまとめてみます。

  • Assembler/なぜx86ではMBRが"0x7C00"にロードされるのか?(完全版)
    • はてなブックマークでも好評頂きました。自分で読み返してみると、参考資料の一覧が我ながら便利だなと。DOS時代の資料サイトが結果としてうまくまとまった感じです。
  • 技術/UNIX/なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他)
    • こちらもはてブが多かった記事です。nohupの有無で挙動が変わる点は前から気になっていたので調べてみました。
  • 本棚に積まれていた技術書32冊消化
    • 何年も積みっぱなしで、「いつか読んでやる・・・!!」と心の重荷になっていた技術書の消化に明け暮れた一年とも言えます。大学時代からの宿題をようやく、片付けることが出来ました。
  • 自動車免許取得
    • TSUTAYAの会員証の更新など、やっぱり取得しておいて良かったです。住所確認が必要な場面で大活躍でした。
  • ダイエット
    • 長いお休みを良い機会に、手を出してみました。90kg -> 80kgと減らすことが出来ましたが、元が太ってるので、もう少し続けてみます。まだまだ体脂肪率は30%を越えてますので。

技術書の消化と並行し、不要となった本や漫画本を処分したりしました。それも減量の一種かもしれません。
良い意味で肩の力を抜くことが出来た一年です。
読み残していた技術書も、残り6冊です(余裕があればもう1-2冊)。
来年春頃から再就職の活動を始めます。

以下、月ごとの細かい振り返りです。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-12-31 09:29:56
md5:92c61da6a1f3b1232a9c944da08a550e
sha1:afbcc21817a928296217c295ac8e987c5b4b1331