日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说

發(fā)布時(shí)間:2023/12/10 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

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命令,查看到下面這行:

由此確定,需要配置SCSIPCI-XFusion-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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。