2007年12月16日 星期日

核心編譯 II(適用 RHEL4)

 先前曾發表過一次有關核心編譯的文章,這次也是關於核心編譯的內容,但這次針對 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

呵呵!! 接下了就是深奥的东西了,我是莱鸟,暂时还不懂。我是网上找的,我转载到后面,你们自己看!

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,看看效果何如?? 呵呵!!

沒有留言:

張貼留言