- 論壇徽章:
- 0
|
-----------------------
一、內(nèi)核內(nèi)存配置檢查:
-----------------------
可以通過(guò)以下辦法來(lái)查看啟動(dòng)時(shí)內(nèi)核是否支持64G內(nèi)存
首先要弄清啟動(dòng)時(shí)用的是哪個(gè)內(nèi)核
[root@study ~]# cat /boot/grub/grub.conf
...
default=0 (說(shuō)明第一個(gè)條目是默認(rèn)的啟動(dòng))
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-34.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-34.ELsmp ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.9-34.ELsmp.img
title Red Hat Enterprise Linux AS-up (2.6.9-34.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-34.EL ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.9-34.EL.img
我的內(nèi)核是vmlinuz-2.6.9-34.ELsmp
對(duì)應(yīng)安裝時(shí)的內(nèi)核編譯文件就是
/boot/config-2.6.9-34.ELsmp
檢查高內(nèi)存支持
[root@study ~]# more /boot/config-2.6.9-34.ELsmp |grep 4G
# CONFIG_X86_4G is not set
# CONFIG_X86_4G_VM_LAYOUT is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y 說(shuō)明我的內(nèi)核編譯時(shí)選擇了64G內(nèi)存支持,
只有4G支持的情況會(huì)類似:
[root@study ~]# more /boot/config-2.6.9-34.EL |grep 4G
# CONFIG_X86_4G is not set
# CONFIG_X86_4G_VM_LAYOUT is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
-----------------------
二、定制內(nèi)核:
-----------------------
如果要改變內(nèi)核對(duì)高內(nèi)存的支持需要重新編譯內(nèi)核。定制內(nèi)核有兩種方法
1)、redhat專有,中間可以得到一個(gè)rpm內(nèi)核包,用來(lái)安裝或者與別人共享。
2)、用于所有l(wèi)inux發(fā)行版,不會(huì)得到rpm包,從原代碼生成您定制的內(nèi)核。
這里只介紹第一種
警告:
定制內(nèi)核超出了紅帽的服務(wù)范圍和支持流程?赡軙(huì)使您的系統(tǒng)失去紅帽的支持服務(wù)。風(fēng)險(xiǎn)自負(fù)。
如果已投入運(yùn)行的redhat系統(tǒng),只是想改變內(nèi)核的一項(xiàng)配置的話,按我說(shuō)的步驟會(huì)把影響降到最低。
1,檢查相關(guān)工具包
[root@study ~]# system-config-packages
在彈出的"添加或刪除軟件包"界面選中"開(kāi)發(fā)工具",并檢查它的細(xì)節(jié)中,
kernel-devel,kernel-smp-devel,kernel-hugemem-devel,他們會(huì)產(chǎn)生以下文件夾:
[root@study ~]# ls /usr/src/kernels/
2.6.9-34.EL-hugemem-i686 2.6.9-34.EL-i686 2.6.9-34.EL-smp-i686
每個(gè)文件夾對(duì)應(yīng)一個(gè)內(nèi)核代碼樹(shù)(他們都不是完整的代碼,只是可以用來(lái)編譯相應(yīng)的內(nèi)核模塊而已,
而不能用來(lái)編譯真正的內(nèi)核)。
2,準(zhǔn)備完整的源代碼環(huán)境
請(qǐng)使用與您系統(tǒng)版本一致的軟件包(cat /etc/redhat-release)。
如果注冊(cè)了紅帽網(wǎng)絡(luò)可以通過(guò)下面方法來(lái)下載安裝源代碼
# up2date redhat-rpm-config rpm-build
# up2date --get-source kernel
# rpm -ivh /var/spool/up2date/kernel*.src.rpm
參考
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/release-notes/as-x86/
如果沒(méi)有注冊(cè)紅帽網(wǎng)絡(luò),只能手工下載安裝了(我猜配發(fā)的光盤(pán)中應(yīng)該可以找到這個(gè)包,但我的光盤(pán)不全無(wú)法試驗(yàn))
ftp://ftp.redhat.com/pub/redhat/linux/updates/enterprise/4AS/en/os/SRPMS/kernel-2.6.9-34.src.rpm
請(qǐng)下載用與您系統(tǒng)版本一致的軟件包。
# rpm -ivh /mnt/kernel-2.6.9-34.src.rpm
# cd /usr/src/redhat/SPECS/
#cd /usr/src/redhat/SPECS
#vi kernel-2.6.spec
主要修改如下地方:
define buildsource 0------------我的這個(gè)在第8行,改為1,
這就是為什么沒(méi)有源代碼包的原因,因?yàn)槟J(rèn)不生成源代碼包。
%define buildhugemem 1 支持高內(nèi)存
%define buildsmp 1 支持多處理器
%define buildlargesmp 1 支持更多處理器
Requires: qt-devel, gtk2-devel readline-devel ncurses-devel
我的在1187行,如果沒(méi)用用X的話,把這句注釋掉,這樣編譯出來(lái)的包就不依賴于X-window的某些包,
因?yàn)閮?nèi)核配置是可以用make xconfig,所以默認(rèn)依賴X-window,如果沒(méi)裝X-window,可以注釋掉。
保存退出。
#touch /etc/beehive-root
這句命令非必須,如果不做的話,最后編譯出來(lái)的包都會(huì)變成kernel-*.*-root.rpm,多了個(gè)root,
據(jù)說(shuō)是為了標(biāo)示包的編譯人的,如果touch了這個(gè)文件,就沒(méi)有這個(gè)問(wèn)題了,命名和官方rpm一樣。
#rpmbuild -ba --target=`uname -m` ./kernel-2.6.spec
編譯i686平臺(tái)(這里uname -m命令會(huì)得到i686的結(jié)果)的所有包,這樣上面介紹的所有包都會(huì)生成,
或者換成rpmbuild -bb --target=`uname -m` ./kernel-2.6.spec只編譯非src.rpm。
所有包就會(huì)生成到/usr/src/redhat/RPMS/i686下面
如果只需要sourcecode而并非所有rpm包,那在修改spec文件時(shí)還要修改如下行:
%ifarch noarch
%define builddoc 1
%define buildsource 0---------------這里0修改為1
在編譯的時(shí)候使用rpmbuild -ba --target=noarch ./kernel-2.6.spec,這樣僅僅編譯sourcecode和doc包,
會(huì)節(jié)省很多時(shí)間。
3,配置內(nèi)核
為了標(biāo)識(shí)我們將來(lái)自己訂制的內(nèi)核,以和現(xiàn)有的內(nèi)核區(qū)分:
[root@study kernel-2.6.9]# cd /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/
[root@study linux-2.6.9]# vi Makefile
找到EXTRAVERSION改成下面的形式:
EXTRAVERSION = -custom-2.6.9-34
因?yàn)槲业?boot/config-2.6.9-34.EL內(nèi)核不支持64G內(nèi)存,我要“克隆”一個(gè)新的,并支持64G內(nèi)存。
[root@study linux-2.6.9]# diff .config /boot/config-2.6.9-34.EL 比較這兩個(gè)配置文件,
一般無(wú)輸出,也就是沒(méi)有差異,如果有差異就:
[root@study linux-2.6.9]# cp /boot/config-2.6.9-34.EL .config
cp:是否覆蓋 '.config' ? y
我們的目的是在原來(lái)的基礎(chǔ)上只修改內(nèi)存配置,這個(gè).config文件決定了編譯內(nèi)核的選項(xiàng)。
不建議直接修改.config,而通過(guò)下面的方法:
[root@study linux-2.6.9]#make menuconfig
在界面中選擇 Processor type and features --->
再選擇 High Memory Support (4GB) --->
( ) off
( ) 4GB
(X) 64GB
退出,退出,再退出,當(dāng)下面信息出現(xiàn),一定要選yes
Do you wish to save your new kernel configuration?
4,編譯并安裝內(nèi)核
這里有兩種選擇,結(jié)果一致,任選其一。
1)這時(shí)候您可以做一個(gè)rpm
[root@study linux-2.6.9]# make rpm
安裝完成的這個(gè)內(nèi)核rpm包
[root@study linux-2.6.9]# rpm -ivh /usr/src/redhat/RPMS/i386/kernel-2.6.9custom2.6.934-2.i386.rpm
可以看到/boot下面多了我們的新內(nèi)核文件vmlinuz-2.6.9-custom-2.6.9-34
/lib/modules下面多了文件夾2.6.9-custom-2.6.9-34,其中包含了新內(nèi)核的所有模塊。
為我們的新內(nèi)核制作一個(gè)內(nèi)存盤(pán),確保新內(nèi)核能夠啟動(dòng)
[root@study linux-2.6.9]# mkinitrd /boot/initrd-2.6.9-custom-2.6.9-34.img 2.6.9-custom-2.6.9-34
在啟動(dòng)引導(dǎo)器grub的配置文件中添加屬于新內(nèi)核的一段配置
[root@study linux-2.6.9]# vi /boot/grub/grub/conf
default=2 因?yàn)槲业男聝?nèi)核配置段排在第3位,這樣把新內(nèi)核作為默認(rèn)啟動(dòng)項(xiàng)
...
title Red Hat Enterprise Linux AS(2.6.9-34custom)
root (hd0,0)
kernel /vmlinuz-2.6.9-custom-2.6.9-34 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.9-custom-2.6.9-34.img
2)[root@study linux-2.6.9]# make
[root@study linux-2.6.9]# make modules_install
[root@study linux-2.6.9]# make install
新的kernel, initrd 和 system.map 會(huì)自動(dòng)拷貝到/boot目錄,新的內(nèi)核也會(huì)自動(dòng)加入到grub.conf的啟動(dòng)列表里面。
在上面兩個(gè)步驟之一完成后
重新啟動(dòng)時(shí)系統(tǒng)就使用我們訂制的內(nèi)核了。
[root@study linux-2.6.9]# reboot
請(qǐng)檢查系統(tǒng)及各個(gè)服務(wù)的運(yùn)行狀況,如果有錯(cuò)誤,可以更改/boot/grub/grub.conf的default值,選原來(lái)的配置段,
重新啟動(dòng)后,就恢復(fù)使用原來(lái)的內(nèi)核了。
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/11408/showart_288745.html |
|