機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
Linux 網(wǎng)管 123 --- 第10章. 升級(jí) Linux 及其他應(yīng)用軟體 -6.作一個(gè)訂的核心
Linux 網(wǎng)管 123 --- 第10章. 升級(jí) Linux 及其他應(yīng)用軟體 -6.作一個(gè)訂的核心
 更新時(shí)間:2009-8-12 16:59:43  點(diǎn)擊數(shù):0
【字體: 字體顏色

如果您想要在一個(gè)新硬體系統(tǒng)上運(yùn)作 Linux ,或者想要使用一些原本核心沒(méi)有支援的特點(diǎn),也許或
者您想減少核心所占的記憶體使系統(tǒng)記憶體運(yùn)作的更好,您會(huì)發(fā)現(xiàn)必須建立自己所定的核心。 
更新核心包含了組態(tài)所需的模組,編譯核心及模組,最後安裝核心映像檔,隨著重新開(kāi)機(jī)而載入新的
核心。在``README''中這些所有的文件都來(lái)自於每個(gè)核心套件。進(jìn)一步的資訊可以在
 ``Documentation/'' 子目錄中找到。一個(gè)特別有幫助的檔案是``Configure.help'' ,其中包含了有
 關(guān)編譯核心的選項(xiàng)及模組的詳細(xì)資訊。 

下面是一個(gè)例,顯示如何建立自己的 Intel 平臺(tái) 2.0.36 版核心。建立訂的核心常常只是組態(tài),
編譯及安裝上的問(wèn)題。有時(shí)(通常因?yàn)樾碌挠搀w) 需要下載新的驅(qū)動(dòng)程式,因?yàn)樵竞诵木幾g時(shí)該硬體
尚未被支援。 

建立訂核心的第一個(gè)步驟是下載及安裝核心,不論是來(lái)自 RPM (優(yōu)先選擇) 或從 tarball。參考 
第10章,Linux 核心的升級(jí)  一節(jié) 有關(guān)獲得合適檔案的詳細(xì)資料。 

下一步,使用 ``rpm'' 公用程式 (或 ``tar'',也可以) 安裝核心來(lái)源及標(biāo)頭檔。例如,安裝
 2.0.36-3 核心的 RPM 檔: 
  rpm -Uvh kernel-source-2.0.36-3.i386.rpm kernel-headers-2.0.36-3.i386.rpm
rpm -Uvh kernel-ibcs-2.0.36-3.i386.rpm
 


(如果您在筆記型電腦上運(yùn)作Linux,您或許想要安裝 ``kernel-pcmcia-cs-2.0.36-3.i386.rpm'' 這個(gè)
檔,它提供了電源管理的功能) 

在安裝好核心檔之後,您應(yīng)該可以找到新的原始檔,位在 ``/usr/src/linux/'' 目錄。 

下一個(gè)步驟是下載任何附加的驅(qū)動(dòng)程式檔 (如果有的話),并且安裝他們?cè)谛碌暮诵膩?lái)源。例如,要增加
對(duì) Mylex DAC960 硬體 RAID 控制器的支援,我會(huì)從網(wǎng)站上下載驅(qū)動(dòng)軟體。不幸地,像 
http://www.dandelion.com/ 網(wǎng)頁(yè)上的驅(qū)動(dòng)軟體常常只有提供 tarball 而且需要 ``tar'' 公用程式去安
裝它。例如: 
  cd /usr/src/
tar zxvpf DAC960-2.0.0-Beta4.tar.gz
 


可能的話,您應(yīng)該閱讀由您所增加驅(qū)動(dòng)程式軟體所提供的文件。例如 DAC960 驅(qū)動(dòng)程式包括了 ``README'' 
檔案,里面有關(guān)於哪里下載最新的驅(qū)動(dòng)程式,及如何索取核心的修正檔: 
  mv README.DAC960 DAC960.[ch] /usr/src/linux/drivers/block
patch -p0 < DAC960.patch
 


下面步驟是確保您的系統(tǒng)符號(hào)檔案連結(jié)和新的核心相符。事實(shí)上,這個(gè)步驟只需要作一次,所以下面步驟只
有在您從未編譯過(guò)自己的核心情形下才需要: 
  mail:/usr/src# cd /usr/include
mail:/usr/include# rm -rf asm linux scsi
mail:/usr/include# ln -s /usr/src/linux/include/asm-i386 asm
mail:/usr/include# ln -s /usr/src/linux/include/linux linux
mail:/usr/include# ln -s /usr/src/linux/include/scsi scsi
 
 注意: 上述步驟在 2.2.x 或更高版本核心已不再需要。 


下一個(gè)步驟是組態(tài)您的核心。這是建立訂核心的最重要步驟,如果您 disable 錯(cuò)誤的設(shè)定,可能漏
失您所需要的特性或硬體支援。然而,如果您 enable 了錯(cuò)誤的設(shè)定,您會(huì)無(wú)謂地?cái)U(kuò)大核心而且浪費(fèi)珍貴
的系統(tǒng)記憶體 (說(shuō)是這麼說(shuō),但在以後犯錯(cuò)而不是之前可能比較好) 

確保您的核心編譯正常的最好辦法是:了解您所需要使用的特性是什麼,您的系統(tǒng)中哪些硬體需要支援。
在您有幾次訂核心的經(jīng)驗(yàn)後,這些過(guò)程會(huì)變?yōu)?nbsp;“過(guò)時(shí)?而且不具威脅 ! 

鍵入下列各項(xiàng)開(kāi)始進(jìn)行組態(tài)程序: 
  mail:/usr/include# cd /usr/src/linux
mail:/usr/src/linux# make mrproper
mail:/usr/src/linux# make menuconfig
 


(如果您執(zhí)行 X Window 系統(tǒng)可以鍵入 ``make xconfig'' 取代 ``make menuconfig''; 參考 第 5 章 有
關(guān)如何使 X 運(yùn)作的細(xì)節(jié).) 

要組態(tài)您的核心,必須經(jīng)由種種的設(shè)定及選擇 (enable) 哪一些是您需要的,并且剔除 (disable)您所不
需要的。您可以選擇直接經(jīng)由核心支援,或是建立依需求可由核心載入或卸下的模組。(如果您編譯了一個(gè)
事實(shí)上需要重新啟動(dòng)系統(tǒng)的功能,像是 SCSI 驅(qū)動(dòng)程式,如果是模組,您需要建立 RAMdisk 映像檔或系統(tǒng)
必須重新啟動(dòng)。這是使用 ``mkinitrd'' 這個(gè)命令去完成; 這個(gè)程序在下面會(huì)談到) 

當(dāng)進(jìn)行這些組態(tài)設(shè)定時(shí), 您可以選擇  獲得有關(guān)核心各個(gè)選項(xiàng)的描述 

在您完成對(duì)核心的組態(tài)設(shè)定後,鍵入下列命令編譯您的核心: 
  mail:/usr/src/linux# make dep ; make clean
mail:/usr/src/linux# make bzImage
mail:/usr/src/linux# make modules
 


如果您重新編譯和之前相同的核心 (在本例中是 2.0.36-3 ),您或許會(huì)想要用下面的指令將現(xiàn)有的模組移
到備份的目錄下: 
  mail:/usr/src/linux# mv /lib/modules/2.0.36-3 /lib/modules/2.0.36-3-backup
 


現(xiàn)在,鍵入下列指令真正地安裝新的模組: 
  mail:/usr/src/linux# make modules_install
 


下一個(gè)步驟是將核心到 ``/boot/'' 目錄下,并且使用 LILO 更新 boot record ,如此一來(lái)新的核
心就會(huì)被承認(rèn)。下面的指令會(huì)將現(xiàn)有核心作一個(gè)備份,新的核心取代它,然後更新 LILO boot record: 
  mail:/usr/src/linux# cd /boot
mail:/boot# cp vmlinuz vmlinuz.OLD
mail:/boot# cp /usr/src/linux/arch/i386/boot/bzImage vmlinuz-2.0.36
mail:/boot# /sbin/lilo
 


最後,您需要編輯 ``/etc/lilo.conf'' 檔,并且確定 “image”是指向新的核心。您也應(yīng)該加入一個(gè)項(xiàng)目
指向您的備份核心,也許稱作“OldLinux”. 這是一個(gè)例檔: 
  boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz
        label=Linux
        root=/dev/hdb1

        read-only
image=/boot/vmlinuz.OLD
        label=OldLinux
        read-only
 


藉由此種方法備份您的核心資訊,萬(wàn)一您的新核心無(wú)法正常啟動(dòng)(也許因?yàn)槟吃O(shè)備不被承認(rèn),或者一個(gè)
 daemon 應(yīng)該啟動(dòng)而未啟動(dòng)),您可以簡(jiǎn)單地鍵入 ``OldLinux'' 從原來(lái)的核心啟動(dòng)然後檢查系統(tǒng)。 
   注意: 如同前面所提到,如果您已經(jīng)編譯了一個(gè)需要以模組方式啟動(dòng)系統(tǒng)的核心,您需要建立一個(gè)起始 
   RAMdisk 映像檔以便啟動(dòng)系統(tǒng)。(別忘了將您的核心編譯成可支援這樣的映像檔) 


建立及使用起始 RAMdisk 映像檔的程序如下: 


在您的 ``/etc/lilo.conf''加入項(xiàng)目,以便啟動(dòng)起始 RAMdisk 映像檔; 這里是一個(gè)先前已經(jīng)展示過(guò)的組態(tài)
檔增加的例子,: image=/boot/vmlinuz
        label=Linux
        root=/dev/hdb1
        initrd=/boot/initrd-2.2.4-4.img
        read-only
 

在您可以使用 mkinitrd 指令前要先載入loopback 裝置. 確定 loopback 裝置模組已經(jīng)載入: /sbin/insmod loop
 

(如果您得到有關(guān)無(wú)法載入loopback 模組的錯(cuò)誤訊息,您可能需要指定給目前正在運(yùn)作的核心該模組完整路
徑,例如 ``/lib/modules/2.0.35/loop''.) 

使用 ``mkinitrd'' 指令真正地建立映像檔: /sbin/mkinitrd /boot/initrd-2.0.36-3.img 2.0.36-3
 

執(zhí)行 ``/sbin/lilo'' 更新您的 boot loader. 
現(xiàn)在,關(guān)閉系統(tǒng)且啟動(dòng)新的核心! 
  mail:/boot# /sbin/shutdown -r now
 

如果您的核心拒絕完成啟動(dòng),別驚慌。利用在安裝 Linux 時(shí)所作的開(kāi)機(jī)磁片開(kāi)機(jī)。如果您沒(méi)有該磁片,
應(yīng)該可以利用Red Hat CD作。插入磁片然後重新啟動(dòng)電腦。當(dāng)您看到“boot:” 提示時(shí),鍵入: 
  mount root=/dev/hda1
 


上述的指令假設(shè)您的“/” (root) partition 位於 /dev/hda1. 

Linux 應(yīng)該然後正常地啟動(dòng) (既然您是使用開(kāi)機(jī)磁片開(kāi)機(jī),在這期間不是所有的裝置及服務(wù)都能正常動(dòng)作),
然後您可以回存您的舊核心然後重新安裝 LILO boot loader 的資料 
(亦即. ``mv /vmlinuz.old /vmlinuz ; /sbin/lilo'') 然後關(guān)機(jī)/重新啟動(dòng)。然後您可以試著用不同選項(xiàng)重
新編譯核心再試一次。 
  • 上一篇: Linux 網(wǎng)管 123 --- 第10章. 升級(jí) Linux 及其他應(yīng)用軟體 -7.升級(jí)到 2.2.x 版的核心
  • 下一篇: Linux常見(jiàn)緊急情況處理方法
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1