システムコール
MenuFedora 上で、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.jpgdb で追うには
gdb /usr/lib/debug/lib/modules/3.17.4-200.fc20.x86_64/vmlinux
gdb 起動後は
(gdb) target remote localhost:1234
で接続