-title: システムコール Fedora 上で、kernel source を install する。 以下を参考にすると良いらしいです。 http://fedoraproject.org/wiki/Docs/CustomKernel 3.12 を使うこと。kernel.org から、取ってくる。 運が良ければ、先輩たちが既に用意してくれているはず。 --kernel を compile する kernel を gdb 用に作成する sudo yum install ncurses-devel make menuconfig make >& ers & disown %m exit --システムコールテーブル arch x86_64 に関して以下のことを調べる がカーネル内部でシステムコール番号から関数ポインタに変換するテーブル。 select の番号はいくつか? --ファイルディスクリプタ read が参照するファイルディスクリプタのカーネル内部での構造 fs/read_write.c を読む SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) struct の名称とソースファイル名 を示せ。 --ファイルディスクリプタの排他制御 ファイルディスクリプタ参照する際の排他制御はCレベルではどこで おこなわれているか。 hint fs/file.c --プロセスとスレッド プロセスとスレッドが kernel の中でどのような構造を持っているかを調べる。 hint task_struct --VirtualBox や VMWare Fusion を使って、Linux kernel を gdb/lldb に接続する (option) kernel を debug 用に config したものを使用する VM image を作成する VM を定義している xml を debug 用に調整する source と kernel を適切な場所に置き、kernel gdb を VM に接続する system call table に break point をかけて、そこから trace する --OS の授業で使う kernel debug について virsh 上にある debug 対象の VM は下記になります。 vm name: managers_taira_01 ip address: 192.168.122.184 user name: ieuser / one ssh bldsv11.cr.ie.u-ryukyu.ac.jp gdb で追うには gdb /usr/lib/debug/lib/modules/3.17.4-200.fc20.x86_64/vmlinux gdb 起動後は (gdb) target remote localhost:1234 で接続