1. 程式人生 > >linux核心除錯環境構想

linux核心除錯環境構想

雖然現在64位作業系統越來越流行,但是為了研究方便,我們還是選取32位核心研究。

linux作業系統就多種,比較流行的有centos ubuntu等,這裡選用centos6.5-i386系統。

安裝系統時配置為軟體開發站,方便核心編譯。檔案系統部分可以不使用LVM

而核心原始碼採用2.6.32.26核心

在使用linux過程中,我們很可能要安裝一些軟體,比如centosyum。這需要配置好軟體源。一般可以把光碟配置成軟體源就可以安裝大部分軟體包了。也可以配置本地軟體源,如本學校,或者中國的軟體源。使用本地軟體源下載軟體包速度更快。


在除錯核心的過程使用虛擬機器比較方便,虛擬機器用qemu vmware virtualbox bochs

等等。

1.使用KDB+兩個Vmware+管道除錯核心

這是網上介紹的一種方法,原理是在核心啟動時,加上gdb引數,使核心暫停

再用另一臺虛擬機器上執行gdbvmlinux

兩臺虛擬機器再通過虛擬串列埠連線。

2.使用qemu -kernel bzImage  -hda rootfs.img -append "xxxx"-S -s來啟動核心

需要用busybox製作根檔案系統rootfs.img

3.使用qemu啟動系統

首先在vmware上安裝一個作業系統(centos6.5-i386),在這個作業系統上編譯安裝核心。

然後複製這個虛擬機器的硬碟。

然後在另一個虛擬機器上載入這個硬碟,這時會有

/dev/sdb1

最後用qemu -kernel bzImage  -hda /dev/sdb -append"xxxx"-S -s

再開一個終端執行gdb vmlinux

(gdb)target remote 127.0.0.1:1234就可以了。

這個方法的好處是在一個虛擬機器中除錯核心了,而且是比較完整的核心。從開機到核心載入,執行init程序,載入使用者程式,到圖形介面,使用者登入,都有。

4.可以把一個裝好的系統複製到虛擬機器中去當前硬碟,或者在虛擬機器中再裝虛擬機器,然而發現qemu可以載入vmware的磁碟之後,這些都不用了,直接像第3中方法中那樣,指定/dev/sdb就能正常工作。