就這樣吧! | 【心得分享】Linux編譯核心 [說明] 由於gaga0625這個版本的kernel對USB裝置支援不完整, 須重新編譯核心來解決 0. 寫在前面 當您對系統操作並不熟悉時, 建立安全回復的觀念是很重要的, 安裝光碟(RH7.3 CD1) 可以提供您最嚴重的系統救援, 從CD-ROM boot後, 您會先看到安裝畫面, 然後輸入 (就是不要按Enter, 不然它又重新安裝了) boot : linux rescue 依其指示會進入免password的命令列, 然後鍵入 chroot /mnt/sysimage 你就可以進入系統裡, 對你先前的修改進行回復的動作了, 當然您最好具備像 vi, cp, mv, cd, pwd, chmod ..... 等基本指令的使用方法 1. 確定當前kernel版本 # uname -r 2.4.18-5 <主版本>.<次版本>.<修訂版本>-<副版本> 2. 取得kernel 的source code(不是binary喲!) 2-1. 直接在 /usr/src/linux-2.4.18-5就可以找到 source code 2-2. 使用安裝光碟上的核心版本 (RH7.3 是在 Disk2 裡面)。 /mnt/cdrom/RedHat/RMPS/kernel-source-2.4.18-5.i386.rpm 並且執行安裝, 安裝完成後可在 /usr/src/linux-2.4.18-5找到原始檔 2-3. 從網路上取得kernel source *建議您在/usr/scr/下建立一個 link(你也可以嘗試使用不同路徑)﹕ ln -sf linux-2.4.18-5 linux (以下的說明如無特別標註皆以/usr/scr/linux為預設路徑, 你也可以嘗試使用不同路徑) 3. 編譯前的安全備份 3-1. 準備開機片(如果你先前做過,則不必重複) mkbootdisk --device /dev/fd0 `uname -r` (用 uname -r 命令是找出您當前的核心版本﹐如果您確定是 2.4.18-5 ﹐ 那可以直接用版本號碼來代替。) 3-2. 備份 lib modules 執行 ls /lib/modules 看看裡面有沒有一個目錄和編譯版本相同名字﹐如果有﹐ 用 ‘mv’命令將之改名﹐如﹕ mv /lib/modules/2.4.18-5 /lib/modules/2.4.18-5.bak 3-3. 然後再為 /lib/modules 、 /boot、和 lilo.conf 做一個備份 (因為這些是將要被變更的部份)﹕ cp -af /lib/modules /lib/modules.bak cp -af /boot /boot.bak cp -af /etc/lilo.conf /etc/lilo.conf.bak 4. 設定 ./config檔 設定 ./config檔的工具很多, 在RH7.3裡也內建了至少兩種的圖形介面設定程式 make xconfig 詳情請參考 : http://www.study-area.net/linux/system/linux_kernel.htm 5. 開始編譯 請按順序輸入﹕ make dep # 建立相依關係 make clean # 清除舊有的object檔 make bzImage # 建立核心檔 ( arch/i386/boot/bzImage) make modules # 建立模組 ( drivers, net, fs, kernel, ... etc.) make modules_install # 將模組安裝至系統 (/lib/modules/2.4.18-5) 當您 make bzImage 順利完成之後﹐您應該會看到幾行信息﹐告訴您核心的大小﹕ Root device is (3, 5) Boot sector 512 bytes. Setup is 2520 butes. System is 789 kB 假如您碰到 warning: kernel is too big for standalone boot from floppy 的話﹐ 那就要考慮回去將內建的選項改為模組﹐或儘量減少。 否則﹐您將不能為這個核心製作開機磁片﹐也不能運用下面提到的核心安裝測試程序。 6. 測試核心 先將一張空白磁片放進軟碟機﹐然後輸入﹕ make bzdisk 這可能需要一點時間﹐等完成之後﹐輸入﹕ reboot 7. 某些時候因為外掛模組的關係, 必須重新建立initrd檔案, 請執行 mkinitrd /boot/initrd-2.4.18-5 8. 安裝核心(當測試都沒問題時) 8-1. 如果新的核心是沒問題﹐也就是能用新核心的 floppy 開機的話, 等我們重新登入系統後﹐再回到 /usr/src/linux 目錄裡面﹐然後執行﹕ make install 這個動作和 make bzdisk一樣﹐只不過將核心安裝到硬碟而已。 它會將核心裝在 /boot 目錄去 8-2. 請檢查那裡﹐如果您發現﹕vmlinuz-2.4.18-5 這個檔案﹐那就是核心了﹗ 除了核心檔之外﹐您應該還會看到 System.map-2.4.18-5 這樣的檔案﹕ # ls -l /boot/vmlinuz* /boot/vmlinuz -> vmlinuz-2.4.18-5 /boot/vmlinuz-2.4.18-5 # ls -l /boot/System.map* /boot/System.map -> System.map-2.4.18-5 /boot/System.map-2.4.18-5 如果您不執行 make install 的話﹐可以手工的直接從 /usr/src/linux 目錄下面將相關檔案複製到 /boot 裡面去﹕ cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.18-5 cp /usr/src/linux/System.map /boot/System.map-2.4.18-5 ln -sf /boot/vmlinuz-2.4.18-5 /boot/vmlinuz ln -sf /boot/System.map-2.4.18-5 /boot/System.map 9.修改grub.conf的開機選項 (因為我用grub做開機管理, 如果用lilo就請修改lilo.conf) 然後重新啟動系統,這樣就大功告成了! [後記] 如果你要了解開機程序是如何進行的 請檢視 /var/log/messages 檔案 |
回覆 |
會員 | 感謝您的賜教! 順便請問一下您的頭像好像是中山高的標誌吧?國道一號 |
回覆 |
|
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。