2009年6月18日 星期四

OS_hw5

此用於kernel 2.6.25以上,略過部分步驟,例如要clone host system for producing target system


我用的OSFedora10gcc4.3.2Linux kernel 2.6.29

由於kernel 2.6.25以後,kgdb已附在裡面,所以不用下載kgdbpatch,用不到助教投影片給的patch方法,但仍有一些設定需要按照投影片的做法。

要先對目前的Fedoraclone,然後到linux網站下載2.6.29kernel,要打開target systemyield CPU on pollVMTargethost都要設定serial port,一個設client,一個設server


其他步驟和舊版本kernel 差不多,請參照其他人寫的舊版本使用方法。
此方法經證實可在2.6.29上使用
感謝yungshin提供方法


0.安裝ncurses-devel
sudo yum install ncurses-devel

1.linux kernel 2.6.25以上 已藏有 kgdb,不用再下載kgdb的source code
輸入make menuconfig,選擇特定選項,啟用kgdb

設定.config檔
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_RODATA=n

2.將host system和 target system 的vm 開啟serial port,做server and client設定

3.host 切為root權限,這步不用在target system上做
make
make modules
make modules_install
make install

4.複製三個重要檔案到target system的 /boot/
vmlinuz-(uname -r)
System.map-(uname -r)
initrd-(uname -r).img

5.修改target system的 /boot/grub/menu.lst
若timeout=0,將它改為五

新增
title Fedora (OOXXkgdb)
root (hd0,0)
kernel /vmlinuz-(uname -r) ro kgdboc=ttyS0,115200 kgdbwait
initrd /initrd-(uname -r).img

5.1
設定target system的kernel.sysrq為一
這樣target就會在開機的時候等host的gdb進來
請vim /etc/sysctl.conf



6.將target system reboot,並把host system 切換到root 權限和linux source
code 的資料夾(自己下載的檔案解壓縮)。

host system 要在target system 重開機時馬上輸入兩行指令
gdb vmlinuz
target remote /dev/ttyS0


7.差不多結束


Reference:

http://blog.linux.org.tw/~jserv/archives/002045.html

http://linux.chinaunix.net/bbs/archiver/tid-1045674.html

http://www.penna.cn/blog/article.asp?id=179

http://bbs.driverdevelop.com/htm_data/12/0807/112490.html


心得:

感謝同學互相幫忙,不然因為新版本核心,不是助教投影片上寫的fedora8,要找的資料很多很雜,很擔心沒有太多時間看資料一個一個方法測試。做的過程當中,重做好幾次,覺得很煩,而且不知道自己做得對不對,因此沒有拍照記錄過程。

沒有留言:

張貼留言