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

歡迎訪問 生活随笔!

生活随笔

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

linux

Ubuntu 8.04 Linux系统下面编译更新内核版本

發(fā)布時(shí)間:2023/12/9 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu 8.04 Linux系统下面编译更新内核版本 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 VirtualBox 虛擬機(jī)上面測(cè)試的,ubuntu 8.04系統(tǒng)。
1. 下載內(nèi)核源代碼
http://www.kernel.org/
下載The latest stable version of the Linux kernel is:??2.6.25.7??,點(diǎn)后面的“F”??按鈕下載
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.7.tar.bz2
??文件。
2. 在終端 su root命令切換到root權(quán)限,然后把linux-2.6.25.7.tar.bz2??文件復(fù)制到/usr/src/ 目錄下。
在ubuntu中不能以root身份登錄界面,很奇怪
3. cd 到/usr/src/ 目錄下, 執(zhí)行??tar??-jxvf??linux-2.6.25.7.tar.bz2? ???命令解壓源代碼包。就會(huì)解壓到
/usr/src/ linux-2.6.25.7,我又把它復(fù)制到 /usr/src/ linux-2.6.25.7-widebrihgt 目錄下了,/usr/src/
linux-2.6.25.7-widebrihgt? ???掛載了一個(gè) 8G的盤。
4.root用戶,cd到/usr/src/ linux-2.6.25.7-widebright??目錄下
# make mrproper (該命令可確保源代碼目錄下沒有不正確的.o文件? ???.config文件等)
內(nèi)核配置工具
(1) make config (純字符提示模式)
? ?? ?
(2)
# make menuconfig (配置內(nèi)核各選項(xiàng),居于ncurse 的菜單選擇模式)
需要ncurse 庫的支持, ubuntu中默認(rèn)沒有安裝??需要安裝一下
# apt-get install libncurses5-dev? ?
(3)
# make xconfig? ???(X窗口的圖形界面,配置內(nèi)核各選項(xiàng))? ???
xconfig基于X11, 使用qt庫, 在Ubuntu中先安裝qt庫:
# apt-get install libqt3-headers libqt3-mt-dev
我是安裝libncurses5-dev? ???之后用 menuconfig??來配置的,??都是用他默認(rèn)配置,
除了
General setup --->
()??Local version - append to kernel release ()
這個(gè)可以在內(nèi)核版本后面加上個(gè)性字符串,我輸入了widebrighgt
然后選最后一條,保存配置文件就行了,他會(huì)在 /usr/src/ linux-2.6.25.7-widebright 生成 .config 文件


5.編譯內(nèi)核
只需要運(yùn)行 make就行了
#make
執(zhí)行之前可以先運(yùn)行make clean 清空生成的內(nèi)核文件,或者編譯中間有問題了,想重新編譯,可以用這
個(gè)先清空已經(jīng)生成的內(nèi)核文件
我在VirtualBox虛擬機(jī)的ubuntu8.04 系統(tǒng)里面執(zhí)行make 命令, 結(jié)果make一次花的編譯時(shí)間應(yīng)該在兩個(gè)
小時(shí)以上。注意 /usr/src/ linux-2.6.25.7-widebright的剩余空間要在2.5G以上,我一開始mount到一個(gè)
2G的盤,結(jié)果編譯時(shí)候提示沒有空間。后來重試了幾次,花了很多時(shí)間,最后mount了一個(gè)8G的盤,終
于編譯成功了。 看他完成后,占用的控件大概在1.8G左右。
這個(gè)make相當(dāng)于,手工執(zhí)行了一下兩步:
# make bzImage
# make modules (編譯可加載模塊)
其中make bzImage??將在??/usr/src/ linux-2.6.25.7-widebrihgt/arch/i386/boot 目錄下生成一個(gè)名字為
bzImage的內(nèi)核鏡像文件。??make zImage??命令其實(shí)可以生成內(nèi)核鏡像的,bzImage 的區(qū)別就是它是壓
縮的。
make modules 則是生產(chǎn)大量的 *.ko??內(nèi)核文件,就是模塊化的內(nèi)核驅(qū)動(dòng)等等吧,你不把它編譯進(jìn)去
bzImage里面去的都會(huì)另外單獨(dú)生成的一個(gè)ko文件了,以后需要的時(shí)候再由內(nèi)核加載這個(gè)ko模塊。
6.安裝內(nèi)核
(1)
執(zhí)行 make install??命令
? ?? ?? ???
我運(yùn)行了這一步后,提示需要在GRUB menu.lst 配置文件中把 入口 點(diǎn)指向 /boot/vmlinuz-
2.6.25.7widebright??文件。??應(yīng)該是已經(jīng)把上面一步生成的bzImage復(fù)制到系統(tǒng)的 /boot 目錄去了, ls
-l看一下 /boot 目錄,可以已經(jīng)把vmlinuz 文件鏈接到 vmlinuz-2.6.25.7widebright 文件??System.map
文件鏈接到? ???System.map-2.6.25.7widebright 文件,config 文件鏈接到 config-2.6.25.7widebright 文
件。
(2)
沒有看到模塊的配置信息輸出,所以我又執(zhí)行了一下 make modules_install 命令,這個(gè)是安裝模塊的。
這個(gè)會(huì)安裝很多 ko文件,最后輸出 DEPMOD??2.6.25.7widebright。不懂這個(gè)流程是什么樣子的。不過
在/lib/modules/ 目錄下面生成了一個(gè) 2.6.25.7widebright的目錄,下面 目錄就是上面make modules生
成的那些ko內(nèi)核模塊文件。
(3)??我上面的編譯過程好像沒有生成initrd鏡像文件,不知道怎么回事,只好手工來了。什么是initrd鏡
像請(qǐng)看最后附的那篇文章
生成initrd鏡像文件,redhat系統(tǒng)下面用new-kernel-pkg??命令應(yīng)該就可以了,后面那篇文章說的mkinitrd
命令不知道是什么系統(tǒng)。 ubuntu系統(tǒng)下面在網(wǎng)上搜索了一下,應(yīng)該是用 mkinittramfs 命令來生成的。
運(yùn)行一下 "mkinitramfs??-o??initrd.img-2.6.25.7widebrihgt? ???2.6.25.7widebrihgt" ,將在當(dāng)前目錄下生成
一個(gè)名字為 initrd.img-2.6.25.7widebrihgt大小7.1M左右的initrd 鏡像文件。最后我把它移到 /boot/ 目
錄里面去。
注意:最后那個(gè)參數(shù)“2.6.25.7widebrihgt” 是version,指定 內(nèi)核版本,就是/lib/modules/??目錄下相應(yīng)的
文件夾名字。這個(gè)一定要指定的,不然他默認(rèn)使用的是正在運(yùn)行的系統(tǒng)的版本,最后系統(tǒng)就不能引導(dǎo)成
功。
(4)檢查一下 grub的配置文件
cat??/boot/grub/menu.lst ,??看來make install 命令沒有自動(dòng)把新編譯的內(nèi)核的配置寫到grub的配置文
件里面。修改 timeout??屬性 為 10,讓等待的時(shí)間長(zhǎng)一點(diǎn),然后仿造原有的配置新建一項(xiàng)放在最前面,因?yàn)橐婚_始的default 的值設(shè)置為0的,默認(rèn)是第一項(xiàng)。增加的內(nèi)容如下
title? ?? ?? ? Ubuntu 8.04, kernel 2.6.25-7-widebright
root? ?? ?? ? (hd0,0)
kernel? ?? ?? ? /boot/vmlinuz-2.6.25.7widebright root=UUID=a082d103-894e-443a-bf58-8b128c7e5dd1 ro quiet splash locale=zh_CN
initrd? ?? ?? ? /boot/initrd.img-2.6.25.7widebright
quiet
注意其中的 kernel 和initrd 都指向自己的鏡像文件。 root的 UUID可能沒個(gè)人都不一樣的,可以參考GRUB的配置文件說明。






做完上面步驟之后,重啟系統(tǒng),等到系統(tǒng)提示按 ESC 鍵的時(shí)候,可以選擇和進(jìn)入GRUB的菜單。可以看到自己的內(nèi)核版本已經(jīng)顯示出來了。
選擇進(jìn)入之后,一切正常。
使用uname -a 命令查看,可以看到當(dāng)前內(nèi)核已經(jīng)被更新了
widebright@widebright-desktop:~$ uname -r
2.6.25.7widebright
widebright@widebright-desktop:~$ uname -a
Linux widebright-desktop 2.6.25.7widebright #1 SMP Sat Jun 21 05:37:09 CST 2008 i686 GNU/Linux
widebright@widebright-desktop:~$




=======另附一篇initrd鏡像相關(guān)文章==============================================
initrd 鏡像文件的作用與制作
我們?cè)诎惭b新內(nèi)核的時(shí)候,通常都會(huì)編輯lilo.conf 和grub.conf 文件。里面有一段“initrd=/boot/initrd-
***.img”(其中的***表示內(nèi)核的版本號(hào))的我們都很少會(huì)注意到,有時(shí)候還會(huì)發(fā)現(xiàn)這 一行不要也可以
正常開機(jī)。那這個(gè)initrd***.img究竟是用來干什么的呢?
其實(shí)initrd***.img是一個(gè)鏡像文件,類似ramdisk,把一段程序打包到img里,然后在開機(jī)的時(shí)候在內(nèi)存
里開辟一段區(qū)域,一般是2m,釋 放到那里運(yùn)行,都是一些初始化的程序,比如sisc_mod、ext3、
sd_mod等模塊和insmod、nash等命令。不同內(nèi)核,初始化的img可 以相同,也可以不同,如果沒有,
可以在grub.conf里加上no initrd,它就跳過initrd的檢測(cè)和執(zhí)行了,以前好像就沒有,后來才有的。
它的作用是在沒有mount /分區(qū)以前,系統(tǒng)要執(zhí)行一些操作,比如掛載scsi驅(qū)動(dòng),它就把initrd釋放到內(nèi)
存里,作一個(gè)虛擬的/,然后執(zhí)行其根目錄下的一個(gè)腳本 “l(fā)inuxrc”,運(yùn)行insmod和nash命令掛裝模塊。
為什么有的時(shí)候我們?cè)趌ilo或grub的配置文件中不加入該行都可以正常開機(jī)呢?這是因 為我們一般的PC
機(jī)都沒有使用scsi硬盤等需要先加載其驅(qū)動(dòng)的設(shè)備,所以就算沒有initrd***.img也可以正常開機(jī)。但是
如果我們要在服務(wù)器上 為其編譯新內(nèi)核那就一定不要忘記也為其新建一個(gè)initrd文件呀!
好,下面來看看如何查看initrd***.img里面的內(nèi)容和如何為你的新內(nèi)核創(chuàng)建一個(gè)新的initrd.img文件。
查看initrd.img:
initrd***.img雖然后綴是“img”,但其實(shí)它是一個(gè)gz格式的文件,我們可以先把它解壓,然后載掛裝到
目錄下:
1、cp initrd.img initrd.gz
2、guzip initrd.gz
3、mount -o loop initrd /mnt/floppy
進(jìn)入/mnt/floppy目錄,我們就可以看到initrd***.img文件的廬山真面目了。
制作initrd文件
當(dāng)我們編譯了一個(gè)新的內(nèi)核,也不要忘了為我們的scsi設(shè)備做一個(gè)新的initrd鏡像:
語法:
mkinitrd 文件名 內(nèi)核的目錄名
示例:
mkinitrd initrd-2.4.19.img 2.4.19
initrd-2.4.19.img文件是自己任意取的,但最好對(duì)應(yīng)自己的內(nèi)核版本號(hào)。
2.4.19是在/lib/modules中的目錄名,對(duì)應(yīng)內(nèi)核的版本。
當(dāng)然,我們也可以在掛裝了initrd***.img文件后直接添加模塊到/lib目錄中,然后修改linuxrc腳本讓其開
機(jī)進(jìn)行掛裝。但必須具備一定的shell腳本的能力才行。
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?

?

轉(zhuǎn)載于:https://www.cnblogs.com/hankering/archive/2013/06/05/3118999.html

總結(jié)

以上是生活随笔為你收集整理的Ubuntu 8.04 Linux系统下面编译更新内核版本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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