我用的OS是Fedora10,gcc是4.3.2,Linux kernel 是2.6.29。
由於kernel 2.6.25以後,kgdb已附在裡面,所以不用下載kgdb和patch,用不到助教投影片給的patch方法,但仍有一些設定需要按照投影片的做法。
其他步驟和舊版本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,要找的資料很多很雜,很擔心沒有太多時間看資料一個一個方法測試。做的過程當中,重做好幾次,覺得很煩,而且不知道自己做得對不對,因此沒有拍照記錄過程。
沒有留言:
張貼留言