システムコール

Menu

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

で接続


Shinji KONO / Tue Dec 2 14:31:10 2014