linux核心除錯環境構想
雖然現在64位作業系統越來越流行,但是為了研究方便,我們還是選取32位核心研究。
而linux作業系統就多種,比較流行的有centos ubuntu等,這裡選用centos6.5-i386系統。
安裝系統時配置為軟體開發站,方便核心編譯。檔案系統部分可以不使用LVM。
而核心原始碼採用2.6.32.26核心。
在使用linux過程中,我們很可能要安裝一些軟體,比如centos用yum。這需要配置好軟體源。一般可以把光碟配置成軟體源就可以安裝大部分軟體包了。也可以配置本地軟體源,如本學校,或者中國的軟體源。使用本地軟體源下載軟體包速度更快。
在除錯核心的過程使用虛擬機器比較方便,虛擬機器用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),並在這個作業系統上編譯安裝核心。
然後複製這個虛擬機器的硬碟。
然後在另一個虛擬機器上載入這個硬碟,這時會有
最後用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就能正常工作。