先前曾發表過一次有關核心編譯的文章,這次也是關於核心編譯的內容,但這次針對 RHEL 4 提出更快速方便的方法,也適用其他 Fedora 版本的 Linux。
※此方法僅適用使用預設 kernel 設定檔,無修改 Kernel 設定檔需求。
一、快速重新編譯 SRPM 核心檔
由於 updates.redhat.com 好像已不提供 SRPM 讓非 Redhat 客戶下載,建議可到 http://rpmfind.net 搜尋 kernel,下載適合的 Kernel
1. 這次在 rpmfind.net 下載 kernel-2.6.9-67.EL.src.rpm 版本。
2. 編譯 Kernel SRPM 版本。
# rpmbuild --rebuild kernel-2.6.9-67.EL.src.rpm
warning: user brewbuilder does not exist - using root
warning: group brewbuilder does not exist - using root
error:Architecture is not included: i386
結果出現錯誤,無法編譯。
# useradd brewbuilder
新增 brewbuilder 帳號及群組
# rpmbuild --rebuild kernel-2.6.9-67.EL.src.rpm Installing kernel-2.6.9-67.EL.src.rpm
error: Architecture is not included: i386
還是無法編譯,但這次訊息不一樣
# rpmbuild --rebuild --target i686 kernel-2.6.9-67.EL.src.rpm Installing kernel-2.6.9-67.EL.src.rpm
Building target platforms: i686
Building for target i686
.................
+ exit 0
開始編譯中,此步驟約需花費一小時多
# cd /usr/src/redhat/RPMS/i686/ 編譯完成的 RPM 檔存放位置
# rpm -ivh *
開始安裝新版本 Kernel
資料參考來源:http://blog.chinaunix.net/u/16189/showart_103440.html
二、編譯核心步驟
另外轉貼資料來源的內容。
***********************************************************************
作者:lee
来自:http://lee133.cublog.cn/
参考文献:编译内核操作流程 ──为新手指南 等等~~~~~
http://fedora.linuxsir.org/main/?q=node/66
摘要:Linux我喜欢,FC是我的最爱,但是在我的ACer本本上运行不能使我满意,太慢了!
决定编译内核,发挥他的优点,但是对于我这样的新手编译内核是很困难的事情,呵呵!这是在没有编译前的想法,现在看来还是很简单的哦!把我的经验分享一下,由于水平有限,必有错误指出,欢迎指出!!
***********************************************************************
一:确定自己的内核版本,很简单:
[root@lee-linuxOS lee]# uname -a
Linux lee-linuxOS 2.6.16-1.2096_FC5 #1 Wed Apr 19 05:14:36 EDT 2006 i686 i686 i386 GNU/Linux
呵呵! 这是我的,我现在使用的是2.6.16-1.2096_FC5的内核,昨天刚升级的。
二:安装内核的源码包:1.下载地址:http://download.fedora.redhat.com/pub/fedora/linux/core/updates/5/SRPMS/
2.安装源码:
我还是莱鸟一个,刚开始的时候想的太简单了,直接rpm -ivh *****了,结果不知道安装到那里去了,找不到了,呵呵! 当然也就不能编译内核了。后来参考了很多资料才知道自己有犯了一个错误。呵呵!! 废话不说了,安装吧!
[root@lee-linuxOS kernel]# rpm -i kernel-2.6.16-1.2096_FC5.src.rpm
[root@lee-linuxOS kernel]# cd /usr/src/redhat/SPECS
[root@lee-linuxOS SPECS]# ls
kernel-2.6.spec
[root@lee-linuxOS SPECS]# rpmbuild -bp kernel-2.6.spec
到这里很不辛,有出现错误了,error: Architecture is not included: i386,只好去man rpmbuild,这永远是最有用的东西。终于让我在这里发现了问题所在了。这个命令还有一下--target PLATFORM 选项,看到这个我就马上相到了这个错误了。马上来加上这个选项,
[root@lee-linuxOS SPECS]# rpmbuild -bp --target i686 kernel-2.6.spec
OK!!!!!!!!!!!!!!
接着继续吧:
[root@lee-linuxOS SPECS]# cd ..
[root@lee-linuxOS SPECS]# cd BUILD
[root@lee-linuxOS BUILD]# ls
kernel-2.6.16
[root@lee-linuxOS BUILD]# cd ker*
[root@lee-linuxOS kernel-2.6.16]# ls
Config.mk linux-2.6.16.i686 vanilla xen xen-vanilla
[root@lee-linuxOS kernel-2.6.16]# cd linux*
[root@lee-linuxOS linux-2.6.16.i686]# ls -a
. include README .tmp_kallsyms3.S
.. init REPORTING-BUGS .tmp_System.map
arch ipc scripts .tmp_versions
block Kbuild security .tmp_vmlinux1
.config .kconfig.d sound ..tmp_vmlinux1.cmd
.config.old kernel System.map .tmp_vmlinux2
configs .kernelrelease .tmp_kallsyms1.o ..tmp_vmlinux2.cmd
COPYING lib ..tmp_kallsyms1.o.cmd .tmp_vmlinux3
CREDITS MAINTAINERS .tmp_kallsyms1.S ..tmp_vmlinux3.cmd
crypto Makefile .tmp_kallsyms2.o usr
Documentation Makefile.orig ..tmp_kallsyms2.o.cmd .version
drivers mm .tmp_kallsyms2.S vmlinux
fs Module.symvers .tmp_kallsyms3.o .vmlinux.cmd
.gitignore net ..tmp_kallsyms3.o.cmd
[root@lee-linuxOS linux-2.6.16.i686]#
现在就是你将要编译的内核的代码所在的目录,呵呵! 当然你也可以直接从kernel.org下载原代码进行编译,但是我还是建议使用FC5改进的代码哦! 呵呵!! 个人爱好拉!
3.开始最重要的,配置内核:
[root@lee-linuxOS linux-2.6.16.i686]# make menuconfig
[root@lee-linuxOS linux-2.6.16.i686]# make
5.安装内核模块
[root@lee-linuxOS linux-2.6.16.i686]#
2.6.16-1.2080_FC5 2.6.16-1.2096_FC5 2.6.16-prep
上面的2.6.16-prep就是刚才编译的东东!!!
6。安装内核:[root@lee-linuxOS linux-2.6.16.i686]# make install
这样有个好处就是,你可以什么都不用干,自动完成。
[root@lee-linuxOS linux-2.6.16.i686]# cd /boot/
[root@lee-linuxOS boot]# ls
initrd-2.6.16-1.2080_FC5.img
System.map-2.6.16-1.2080_FC5
vmlinuz-2.6.16-1.2080_FC5
config-2.6.16-1.2080_FC5
initrd-2.6.16-1.2096_FC5.img
System.map-2.6.16-1.2096_FC5
vmlinuz-2.6.16-1.2096_FC5
config-2.6.16-1.2096_FC5
initrd-2.6.16-prep.img
System.map-2.6.16-prep
vmlinuz-2.6.16-prep
grub
System.map
vmlinuz[root@lee-linuxOS boot]#
在看一下grub.conf
[root@lee-linuxOS boot]# vi /etc/grub.conf
===================================================================
default=1
timeout=10
splashimage=(hd0,3)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.16-prep)
root (hd0,3)
kernel /boot/vmlinuz-2.6.16-prep ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.16-prep.img
title Fedora Core (2.6.16-1.2096_FC5)
root (hd0,3)
kernel /boot/vmlinuz-2.6.16-1.2096_FC5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.16-1.2096_FC5.img
title Fedora Core (2.6.16-1.2080_FC5)
root (hd0,3)
kernel /boot/vmlinuz-2.6.16-1.2080_FC5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.16-1.2080_FC5.img
title Windows Xp
rootnoverify (hd0,0)
chainloader +1
=====================================================================
End,reboot,看看效果何如?? 呵呵!!
由於 updates.redhat.com 好像已不提供 SRPM 讓非 Redhat 客戶下載,建議可到 http://rpmfind.net 搜尋 kernel,下載適合的 Kernel
1. 這次在 rpmfind.net 下載 kernel-2.6.9-67.EL.src.rpm 版本。
2. 編譯 Kernel SRPM 版本。
# rpmbuild --rebuild kernel-2.6.9-67.EL.src.rpm
warning: user brewbuilder does not exist - using root
warning: group brewbuilder does not exist - using root
error:Architecture is not included: i386
結果出現錯誤,無法編譯。
# useradd brewbuilder
新增 brewbuilder 帳號及群組
# rpmbuild --rebuild kernel-2.6.9-67.EL.src.rpm Installing kernel-2.6.9-67.EL.src.rpm
error: Architecture is not included: i386
還是無法編譯,但這次訊息不一樣
# rpmbuild --rebuild --target i686 kernel-2.6.9-67.EL.src.rpm Installing kernel-2.6.9-67.EL.src.rpm
Building target platforms: i686
Building for target i686
.................
+ exit 0
開始編譯中,此步驟約需花費一小時多
# cd /usr/src/redhat/RPMS/i686/ 編譯完成的 RPM 檔存放位置
# rpm -ivh *
開始安裝新版本 Kernel
資料參考來源:http://blog.chinaunix.net/u/16189/showart_103440.html
二、編譯核心步驟
另外轉貼資料來源的內容。
***********************************************************************
作者:lee
来自:http://lee133.cublog.cn/
参考文献:编译内核操作流程 ──为新手指南 等等~~~~~
http://fedora.linuxsir.org/main/?q=node/66
摘要:Linux我喜欢,FC是我的最爱,但是在我的ACer本本上运行不能使我满意,太慢了!
决定编译内核,发挥他的优点,但是对于我这样的新手编译内核是很困难的事情,呵呵!这是在没有编译前的想法,现在看来还是很简单的哦!把我的经验分享一下,由于水平有限,必有错误指出,欢迎指出!!
***********************************************************************
一:确定自己的内核版本,很简单:
[root@lee-linuxOS lee]# uname -a
Linux lee-linuxOS 2.6.16-1.2096_FC5 #1 Wed Apr 19 05:14:36 EDT 2006 i686 i686 i386 GNU/Linux
呵呵! 这是我的,我现在使用的是2.6.16-1.2096_FC5的内核,昨天刚升级的。
二:安装内核的源码包:1.下载地址:http://download.fedora.redhat.com/pub/fedora/linux/core/updates/5/SRPMS/
2.安装源码:
我还是莱鸟一个,刚开始的时候想的太简单了,直接rpm -ivh *****了,结果不知道安装到那里去了,找不到了,呵呵! 当然也就不能编译内核了。后来参考了很多资料才知道自己有犯了一个错误。呵呵!! 废话不说了,安装吧!
[root@lee-linuxOS kernel]# rpm -i kernel-2.6.16-1.2096_FC5.src.rpm
[root@lee-linuxOS kernel]# cd /usr/src/redhat/SPECS
[root@lee-linuxOS SPECS]# ls
kernel-2.6.spec
[root@lee-linuxOS SPECS]# rpmbuild -bp kernel-2.6.spec
到这里很不辛,有出现错误了,error: Architecture is not included: i386,只好去man rpmbuild,这永远是最有用的东西。终于让我在这里发现了问题所在了。这个命令还有一下--target PLATFORM 选项,看到这个我就马上相到了这个错误了。马上来加上这个选项,
[root@lee-linuxOS SPECS]# rpmbuild -bp --target i686 kernel-2.6.spec
OK!!!!!!!!!!!!!!
接着继续吧:
[root@lee-linuxOS SPECS]# cd ..
[root@lee-linuxOS SPECS]# cd BUILD
[root@lee-linuxOS BUILD]# ls
kernel-2.6.16
[root@lee-linuxOS BUILD]# cd ker*
[root@lee-linuxOS kernel-2.6.16]# ls
Config.mk linux-2.6.16.i686 vanilla xen xen-vanilla
[root@lee-linuxOS kernel-2.6.16]# cd linux*
[root@lee-linuxOS linux-2.6.16.i686]# ls -a
. include README .tmp_kallsyms3.S
.. init REPORTING-BUGS .tmp_System.map
arch ipc scripts .tmp_versions
block Kbuild security .tmp_vmlinux1
.config .kconfig.d sound ..tmp_vmlinux1.cmd
.config.old kernel System.map .tmp_vmlinux2
configs .kernelrelease .tmp_kallsyms1.o ..tmp_vmlinux2.cmd
COPYING lib ..tmp_kallsyms1.o.cmd .tmp_vmlinux3
CREDITS MAINTAINERS .tmp_kallsyms1.S ..tmp_vmlinux3.cmd
crypto Makefile .tmp_kallsyms2.o usr
Documentation Makefile.orig ..tmp_kallsyms2.o.cmd .version
drivers mm .tmp_kallsyms2.S vmlinux
fs Module.symvers .tmp_kallsyms3.o .vmlinux.cmd
.gitignore net ..tmp_kallsyms3.o.cmd
[root@lee-linuxOS linux-2.6.16.i686]#
现在就是你将要编译的内核的代码所在的目录,呵呵! 当然你也可以直接从kernel.org下载原代码进行编译,但是我还是建议使用FC5改进的代码哦! 呵呵!! 个人爱好拉!
3.开始最重要的,配置内核:
[root@lee-linuxOS linux-2.6.16.i686]# make menuconfig
呵呵!! 接下了就是深奥的东西了,我是莱鸟,暂时还不懂。我是网上找的,我转载到后面,你们自己看!
4.编译内核:[root@lee-linuxOS linux-2.6.16.i686]# make
慢慢等待把。很久之后你就看到结果了!! 呵呵!
5.安装内核模块
[root@lee-linuxOS linux-2.6.16.i686]#
make modules_install
安装之后,
[root@lee-linuxOS linux-2.6.16.i686]# ls /lib/mo*2.6.16-1.2080_FC5 2.6.16-1.2096_FC5 2.6.16-prep
上面的2.6.16-prep就是刚才编译的东东!!!
6。安装内核:[root@lee-linuxOS linux-2.6.16.i686]# make install
这样有个好处就是,你可以什么都不用干,自动完成。
[root@lee-linuxOS linux-2.6.16.i686]# cd /boot/
[root@lee-linuxOS boot]# ls
initrd-2.6.16-1.2080_FC5.img
System.map-2.6.16-1.2080_FC5
vmlinuz-2.6.16-1.2080_FC5
config-2.6.16-1.2080_FC5
initrd-2.6.16-1.2096_FC5.img
System.map-2.6.16-1.2096_FC5
vmlinuz-2.6.16-1.2096_FC5
config-2.6.16-1.2096_FC5
initrd-2.6.16-prep.img
System.map-2.6.16-prep
vmlinuz-2.6.16-prep
grub
System.map
vmlinuz[root@lee-linuxOS boot]#
在看一下grub.conf
[root@lee-linuxOS boot]# vi /etc/grub.conf
===================================================================
default=1
timeout=10
splashimage=(hd0,3)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.16-prep)
root (hd0,3)
kernel /boot/vmlinuz-2.6.16-prep ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.16-prep.img
title Fedora Core (2.6.16-1.2096_FC5)
root (hd0,3)
kernel /boot/vmlinuz-2.6.16-1.2096_FC5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.16-1.2096_FC5.img
title Fedora Core (2.6.16-1.2080_FC5)
root (hd0,3)
kernel /boot/vmlinuz-2.6.16-1.2080_FC5 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.16-1.2080_FC5.img
title Windows Xp
rootnoverify (hd0,0)
chainloader +1
=====================================================================
End,reboot,看看效果何如?? 呵呵!!
沒有留言:
張貼留言