甲板人的腦晶片測試場

關於甲板人的電腦及GNU/Linux測試報告。

星期六, 6月 24, 2006

[記事]編譯Kernel 2.6.17問題與解決

1.正文

系統:Debian GNU/Linux 3.1 testing
現有核心:Linux 2.4.27
編譯前須安裝套件
  • libncurses5-dev
  • make
  • gcc

編譯指令(純文字操作狀態)
  1. (ncftp或w3m下載新的kernel*.tar.bz)->/usr/src
  2. /usr/src# tar jxvf ./linux-2.6.17.1.tar.bz (解開壓縮檔)
  3. /usr/src# cd ./linux-2.6.17.1
  4. /usr/src/linux-2.6.17.1# make menuconfig
進入選單後,有幾個注意事項
  • 預設的config下Processor一律當成386,如果要指定CPU型號的要注意手動選擇。
  • 這非常重要:在File System選項裡,EXT2、EXT3與Reiserfs(如果你要用的話)一定不要編成模組,否則開機會出問題。其它JFS或XFS則是需要決定。
  • 預設的config會自動將Old CD Rom Device (Not ATA or SCSI )全部選上。這通常是不需要的。當然個人硬體狀況不同。
  • 同樣被預設,但我不需要的選項還有ISDN、Wireless整個裝置選項,與部份Graphic裝置選項。
  • 在Sound部分,ALSA並沒有被預設值選取,這個其實關係到系統能不能使用音效,請將之選取,並選擇自己硬體所使用的音效裝置。
  • 如果需要,可以將Frambuff選上。
選完後存檔,依序下指令
  1. make bzImage
  2. make modules
  3. make modules_install
  4. make install
  5. (調整grub或lilo的選單以使用新核心開機)
這邊要注意的是,make modules有時會出問題。所以當編譯過程出現 "depmod ......."等訊息,而不是正常的編譯過程時,就算成功回到shell底下,編出來的東西也不能用。這時,由於我沒有辦法一一研究整個核心原始碼(不知有多少人有能耐...),只能夠重新 make menuconfig ,把一些之前去除或改編成模組的選項編入核心,然後再次 make modules。

最後是調整開機時所用到的initrd.img,這非常重要,因為沒有這一步,核心會找不到模組而無法開機。
  1. mkinitrd -k -o /boot/initrd.img-2.6.17.1 /dev/hdX 2.6.17.1 (hdX->你的系統分區;2.6.17->核心版號)
大致上就是這樣。今天運氣不好,ftp.debian.org與www.kernel.org都有陣子連不上...

0 Comments:

張貼留言

<< Home