星期一, 7月 09, 2007

核心編譯

Debian標準方式

關心一下有關kernel-packagegccbinutilsmodutils的錯誤報告。請按有關要求使用較新的版本。 Watch out for bug reports on kernel-package, gcc, binutils, and modutils. Use new versions of them as needed.

在Debian系統中用源碼編譯自定義內核要特別小心。用make-kpkg的 --append_to_version 選項來創建多重內核鏡像比較安全。 Compiling a custom kernel from source under a Debian system requires special care. Use the new --append_to_version with make-kpkg to build multiple kernel-images.

     # apt-get install debhelper modutils kernel-package libncurses5-dev
# apt-get install kernel-source- 2.4.18 # 使用最新的版本
# apt-get install fakeroot
# vi /etc/kernel-pkg.conf # 輸入姓名和 E-mail
$ cd /usr/src # 編譯目錄
$ tar --bzip2 -xvf kernel-source- 2.4.18 .tar.bz2
$ cd kernel-source- 2.4.18 # 如果這是妳的 kernel 源碼
$ cp /boot/config- 2.4.18-386 .config # 預設是取得現有的 config 檔案
$ make menuconfig # 自訂我們需要的項目
$ make-kpkg clean # 必須執行 (man make-kpkg)
$ fakeroot make-kpkg --append_to_version - 486 --initrd \
--revision= rev.01 kernel_image \
modules_image # modules_image is for pcmcia-cs* etc.
$ cd ..
# dpkg -i kernel-image*.deb pcmcia-cs*.deb # 安裝

make-kpkg kernel_image 實際上執行了 make oldconfig 和 make dep 。如果沒使用initrd就不要使用 --initrd 選項。

如果想加入pcmcia-cs模組或沒有pcmcia,應該在 make menuconfig 後選 "Generalsetup —>" 進入 "PCMCIA/CardBus support —>",設定 "< > PCMCIA/CardBus support" 選項(例如,取消復選項)。

對於SMP機器,參照kernel-pkg.conf(5)的說明設置CONCURRENCY_LEVEL。

經典方式

從下列位置取得乾淨的原始碼:

或使用Debian所附的等價的原始碼:

     # cd /usr/src
# tar xfvz linux- whatever .tar.gz
# rm -rf linux
# ln -s linux- whatever linux
# tar xfvz pcmcia-cs- whatever .tar.gz
# ln -s pcmcia-cs- whatever pcmcia
# cd linux
# make menuconfig
... 配置核心選項 ...
# make dep
# make bzImage
... 編輯lilo/grub ...
... 移動/usr/src/linux/arch/i386/boot/bzImage到boot ...
... /sbin/lilo or whatever you do for grub
# make modules; make modules_install
# cd ../pcmcia
# make config
# make all
# make install
... 添加需要的模組名稱到/etc/modules
... add needed module names to /etc/modules
# shutdown -r now

沒有留言: