2010年12月21日

SRPM編譯Kernel注意事項

通常我會下載SRPM來編譯KERNEL的時機是因為主機採用RHEL,而且更新服務已經過期的狀況又要修補套件。從redhat.com下載來的SRPM其實包含了很多種不同應用類型的KERNEL,例如smp, pae, debug, doc, xen等等..編譯好之後會產生以下的核心套件
kernel-2.6.18-194.26.1.el5.x86_64.rpm
kernel-devel-2.6.18-194.26.1.el5.x86_64.rpm
kernel-headers-2.6.18-194.26.1.el5.x86_64.rpm
kernel-debug-2.6.18-194.26.1.el5.x86_64.rpm
kernel-debug-debuginfo-2.6.18-194.26.1.el5.x86_64.rpm
kernel-debug-devel-2.6.18-194.26.1.el5.x86_64.rpm
kernel-debuginfo-common-2.6.18-194.26.1.el5.x86_64.rpm
kernel-debuginfo-2.6.18-194.26.1.el5.x86_64.rpm


若你不想要編譯這麼多版的KERNEL(你應該也用不到這麼多),其實可以查一下kernel-2.6.xx.spec的設定,然後將他關閉,如此可以節省編譯的時間(若全編譯的話至少會花上1小時)。

shell># vim /usr/src/redhat/SPECS/kernel-2.6.spec
可以在這個區段強制將你不想編譯的改為0,例如我不需要xen和debuginfo,我就把後面的參數由1改為0

# standard kernel
%define with_up %{?_without_up: 0} %{?!_without_up: 1}
# kernel-smp (only valid for ppc 32-bit, sparc64)
%define with_smp %{?_without_smp: 0} %{?!_without_smp: 1}
# kernel-PAE (only valid for i686)
%define with_pae %{?_without_pae: 0} %{?!_without_pae: 1}
# kernel-xen (only valid for i686, x86_64 and ia64)
%define with_xen %{?_without_xen: 0} %{?!_without_xen: 0}
# kernel-kdump (only valid for ppc64)
%define with_kdump %{?_without_kdump: 0} %{?!_without_kdump: 1}
# kernel-debug
%define with_debug %{?_without_debug: 0} %{?!_without_debug: 1}
# kernel-doc
%define with_doc %{?_without_doc: 0} %{?!_without_doc: 1}
# kernel-headers
%define with_headers %{?_without_headers: 0} %{?!_without_headers: 1}
# kernel-debuginfo
%define with_debuginfo %{?_without_debuginfo: 0} %{?!_without_debuginfo: 0}

或者直接將參數丟給rpmbuild
shell># rpmbuild -bb --without xen --without debuginfo kernel-2.6.spec

沒有留言:

張貼留言