linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
?
linux內(nèi)核編程4部曲之一:linux內(nèi)核編譯(2.6.12版本)圖文解說(shuō)
linux內(nèi)核編程4部曲之二:增加linux內(nèi)核系統(tǒng)調(diào)用
linux內(nèi)核編程4部曲之三:修改O(1)調(diào)度算法
linux內(nèi)核編程4部曲之四:模塊編程
一、編譯環(huán)境? ??
ubuntu 5.10,要編譯的內(nèi)核源碼版本2.6.12? 二、下載并解壓源代碼? 首先從linux內(nèi)核的官網(wǎng)www.kernel.org把源代碼下載下來(lái)。為了和后面實(shí)驗(yàn)要求符合,我們要下載使用O(1)調(diào)度器的源碼。因此這里下載了2.6.12版本源碼。下載 下linux-2.6.12.tar.bz2,將下載源碼放入/usr/src/目錄下。如下圖所示: 解壓該源碼: ? ? 三、構(gòu)建編譯環(huán)境 現(xiàn)在我們得到的只是源代碼,只是許許多多的文本文件,要想使這些文件成為可以運(yùn)行的程序,需要使用編譯器進(jìn)行編譯以及鏈接。編譯器有很多,但在里linux下一般都使用gnu的開(kāi)源編譯器套件,這里包括gcc等,現(xiàn)在我們安裝基本的編譯器套件,如圖所示: ? ?? 四、安裝ncurses庫(kù) 這里使用Ubuntu系統(tǒng),因?yàn)橄到y(tǒng)自帶的ncurses庫(kù)在支持make menuconfig的時(shí)候會(huì)出錯(cuò),所以,依然要安裝ncurses庫(kù),這里我們從源碼安裝。首先去ncurses官網(wǎng)http://ftp.gnu.org/pub/gnu/ncurses/ 上下載源碼。這里我們下載5.9版本,并通過(guò)簡(jiǎn)單的安裝方式.configure?? 和make、make install方式安裝。如下圖所示: ? ? 五、配置內(nèi)核 一切準(zhǔn)備工作做完,現(xiàn)在我們就可以配置內(nèi)核了,這里我們使用make menuconfig方式。如下圖: 在使用make menuconfig這個(gè)命令后,會(huì)出現(xiàn)如下的字符界面,我們就可以在這個(gè)界面上對(duì)內(nèi)核進(jìn)行配置。但是如果這不是你第一次配置這個(gè)內(nèi)核,那么請(qǐng)先運(yùn)行:make mrproper來(lái)清除以前的配置,回到默認(rèn)配置,然后再運(yùn)行:make menuconfig.在這里,我們以對(duì)cpu支持的配置為例,其余的選項(xiàng)就不一一詳述,首先查看本機(jī)的cpu類型,如下圖:
在這里我們可以看到,我的電腦的cpu是AMD Athlon的,因此我們?cè)赾pu選項(xiàng)里面選用AMD,如下圖所示:
在這里需要注意的是:
A、 cpu的設(shè)置在linux內(nèi)核編譯過(guò)程中,不是必需的,即使保持默認(rèn)的386選項(xiàng)(我們剛才把它改成了AMD),內(nèi)核也能正常運(yùn)行,只不過(guò)運(yùn)行慢一些而已。
B、 一般容易出問(wèn)題的地方在于Device Driver的設(shè)置。我在一開(kāi)始就遇到了在內(nèi)核編譯完,通過(guò)grub引導(dǎo)系統(tǒng)過(guò)程中報(bào) “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的錯(cuò)誤。這是因?yàn)橛脖P(pán)驅(qū)動(dòng)沒(méi)有配置好而造成的。運(yùn)行l(wèi)spci命令,查看到下面這行:
由此確定,需要配置SCSI、PCI-X、Fusion-MPT驅(qū)動(dòng),需要在響應(yīng)的驅(qū)動(dòng)選項(xiàng)里將[M]設(shè)置為[*],因?yàn)橛脖P(pán)驅(qū)動(dòng)是在系統(tǒng)開(kāi)機(jī)的時(shí)候加載,所以不能以模塊形式加載。
把這幾個(gè)驅(qū)動(dòng)內(nèi)部的選項(xiàng)全部改為[*]:
六、編譯內(nèi)核
對(duì)內(nèi)核的配置完成之后,現(xiàn)在就可以開(kāi)始編譯內(nèi)核了,只需要一個(gè)簡(jiǎn)單的make命令即可,之后我們就只能慢慢等,直到編譯完成,在我的電腦上,大概用了25分鐘。下圖是運(yùn)行make后的部分輸出。
七、安裝內(nèi)核
編譯完成之后,我們需要安裝內(nèi)核,主要分為如下幾步:
1)、安裝模塊
安裝模塊,對(duì)于內(nèi)核來(lái)說(shuō),每一個(gè)內(nèi)核版本有自己的模塊目錄,默認(rèn)在/lib/modules/內(nèi)核版本號(hào)這個(gè)目錄下,make modules_install會(huì)創(chuàng)建對(duì)應(yīng)的目錄,并把對(duì)應(yīng)的模塊文件拷貝過(guò)去。注意,這一步必須要在編譯過(guò)內(nèi)核再做。
2)、拷貝bzImage文件
bzImage文件是內(nèi)核映像文件,是啟動(dòng)內(nèi)核所必需的,我們應(yīng)當(dāng)把它拷貝到/boot目錄下。在這里,我為自己新建了一個(gè)目錄,我們把它拷貝過(guò)去,并且按照一般內(nèi)核映像文件的命名方式為它改名為vmlinuz-2.6.12。
3)、制作initrd文件
initrd文件命名為initrd.img-2.6.12
4)、修改grub啟動(dòng)項(xiàng)
要能引導(dǎo)起我們的新系統(tǒng),需要更改grub配置,增加啟動(dòng)選項(xiàng)。ubuntu 5.10的grub版本比較低,配置文件為/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有啟動(dòng)項(xiàng)基礎(chǔ)上,添加我們自己的啟動(dòng)項(xiàng),并把它設(shè)為默認(rèn)啟動(dòng)項(xiàng),配置如下:
5)重啟
不出意外的話,我們的內(nèi)核已經(jīng)正常加載了,運(yùn)行uname -a,會(huì)發(fā)現(xiàn),內(nèi)核版本已經(jīng)是2.6.12了。
總結(jié)
以上是生活随笔為你收集整理的linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vs python opencv_VsC
- 下一篇: Linux学习-11月12日(Apach