开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          Linux系統(tǒng)高手之路 內(nèi)核編譯過程解析

          下載源代碼

          Linux內(nèi)核總是不斷發(fā)展的,最新的內(nèi)核Kernel2.6.0對USB2.0予以正式的支持,以及內(nèi)核模塊文件后綴最顯著的一個變化由*.o到*.ko等等,我們可以從www.kernel.org下載到tarball的源代碼包。

          前期準備

          大家都知道的要先升級“module-init-tools“軟件包,否則的話,等你安裝內(nèi)核模塊文件的時候,系統(tǒng)會提示你:Warning: you may need to install module-init-tools See http://www.codemonkey.org.uk/post-h...4.21-23.src.rpm。

          進入下載目錄下并安裝:

            #rpm -e --nodeps modutils (強行卸載原有的modutilsRPM包)  #rpm -ivh modutils-2.4.21-23.src.rpm (把源代碼包安裝到了    /usr/src/redhat目錄下)  #cd /usr/src/redhat/SPECS (進入規(guī)范文件目錄下)  #rpmbuild --bb modutils.spec (生成二進制的RPM包)  #cd ../RPMS/i386 (轉(zhuǎn)入剛生成的二進制的RPM包所在位置)  #rpm -ivh modutils*.rpm (剛生成兩個[modutils-2.4.21-23.i386.rpm    與modutils-debuginfo-2.4.21.23.i386.rpm]二進制的RPM包,一起安裝吧?。?br> 

          因為是在RedHat9.0的平臺,RedHat的用戶可能還會遇到一些麻煩,我會慢慢說的,除了要以上的升級之外,還有個文件(/etc/rc.d/rc.sysinit)可能有缺陷,因為/proc/ksyms文件在新內(nèi)核(Kernel2.6.0)中已經(jīng)沒有了,打開文件命令如下:

            #vi /etc/rc.d/rc.sysinit  找到:  if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null    && [ -f /proc/ksyms ]; then  USEMODULES=y  fi  替換成:  if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null; then  USEMODULES=y  fi
           

          也就是把“&& [ -f /proc/ksyms ]”去掉,保存文件(操作之前最好做備份以免刪錯,這個文件是系統(tǒng)初始腳本,重要的很),這樣子內(nèi)核才能加載模塊,當然能啟動iptable防火墻了,否則防火墻在新內(nèi)核中啟動時紅色的“failed“非常醒目。(請在新內(nèi)核中核查/proc/sys/kernel/modprobe中的內(nèi)容是不是: /sbin/modprobe,也可手工注入指令:#echo "/sbin/modprobe" > /proc/sys/kernel/modprobe)。下面開始構(gòu)造新內(nèi)核。

          一、準備源代碼

          1、下載到tarball包之后,將內(nèi)核tarball包復制到/usr/src目錄下,假定包在當前目錄中,運行以下命令:

          #cp linux-2.6.0.tar.gz /usr/src

          2、轉(zhuǎn)到/usr/src目錄并解開tarball包。

            #cd /usr/src  #tar xvzf linux-2.6.0.tar.gz
           

          3、如果你還下載了補丁包,則打上補丁,你也可以運行scripts/patch-kernel腳本文件自動打上補?。蕚浜醚a丁包)或 #zcat patch-2.6.0.gz|patch -p1。

          二、定制內(nèi)核

          定制內(nèi)核是門很大的學問,需要大量的硬件知識,特別是2.6.0的內(nèi)核,如果你從 2.4.N配置文件裝載進去的,的確,很多人遇到過麻煩。我是重新配置文件(X窗口服務器進行),配制內(nèi)核之前請清理源代碼樹,如果還沒有進入 /usr/src/linux-2.6.0目錄,請進入此目錄,命令如下:

            #make mrproper (剛解開的tarball包不需此步驟)  #make gconfig (需要Gtk開發(fā)庫的支持)  或make config  或make xconfig(需要Qt開發(fā)庫的支持)
           

          注意:如果你是ext3文件系統(tǒng),則在定制內(nèi)核配置文件時把對Ext3、Ext2文件的支持直接編譯進內(nèi)核,否則,等你啟用新內(nèi)核時機器就會當?shù)簦鲥e信息如下:kernel panic : no init found ,try passing init = option to kernel......或者是:kernel panic:VFS:Unable to mount root fs on unknown-block(0,0),我一開始不知道,編譯了好幾次,系統(tǒng)總給我冷板凳坐,最后把對Ext3、Ext2文件系統(tǒng)的支持直接編譯進內(nèi)核,才解決此問題,還有把對“Module unloading“選項也選上,否則的話,你在新內(nèi)核環(huán)境下無法卸載內(nèi)核模塊(rmmod命令不能用)。

          三、編譯內(nèi)核及模塊

          定制好的內(nèi)核配置文件(/usr/src/linux- 2.6.0/.config)之后,激動的時刻到來了,編譯內(nèi)核及模塊,#make (此命令已完成make bzImage及make modules的工作),bzImage內(nèi)核文件在arch/i386/boot目錄中,你的CPU不同內(nèi)核文件存放位置也不同,我是Intel的 CPU。

          注意:我在RedHat7.2平臺時曾出現(xiàn)無法編譯的出錯信息,出錯信息如下:

            /tmp/cc2Hu7sH.s:3: Error: Unknown pseudo-op: `.incbin'  make[1]: *** [usr/initramfs_data.o] Error 1  make: *** [usr] Error 2,
           

          重新裝了個9.0的才解決此問題。說明:make命令在我的1.6GHz,128MB的機器上跑了足足27分鐘。

          四、安裝模塊及內(nèi)核文件

          #make modules_install install

          以上這個命令可以分解成make modules_install與make install,make modules_install安裝內(nèi)核模塊到/lib/modules/2.6.0下。make install完成mkinitrd命令及內(nèi)核(bzImage)和System.map的拷貝,請查看/boot目錄,文件名是有區(qū)別的,如是GRUB 引導器,make install命令已幫你自動修改了引導選項,對于LILO則要手工修改,重寫引導記錄。

          說明:make modules_install install這個命令在我的1.6GHz,128M的機器上只跑了三十幾秒,很快的哦。

          五、后記

          最后的工作就是重啟系統(tǒng)(#shutdown -r now),檢驗一下你的勞動成果吧。差點忘了還有一點,可能對你很重要,進入新內(nèi)核之后我發(fā)現(xiàn)rpm命令不能用了,原來這是RPM的一個Bug,特別是對于RH9的用戶,請打開/etc/profile文件,命令如下:

            #vi /etc/profile (在文件的末尾加上幾句如下)  if [`uname -r`="2.6.0" ];then  export LD_ASSUME_KERNEL=2.2.5 fi
           

          也就是給系統(tǒng)加上一個全局的環(huán)境變量,也可直接鍵入#export LD_ASSUME_KERNEL=2.2.5。

          使用新內(nèi)核可能出現(xiàn)的問題及對策:

          1、新內(nèi)核根本起不來,解決方法:重新配置內(nèi)核(學問挺大),也許還根引導記錄有關(很少了)。

          2、新內(nèi)核模塊無法加載,會導致很多問題,比如了防火墻沒法工作了,mount不上光盤和vfat及ntfs文件系統(tǒng),其解決方法:升級module- init-tools軟件包(我是modutils-2.4.21- 23.src.rpm包),RedHat的用戶可能還要修改/etc/rc.d/rc.sysinit文件。

          3、RedHat用戶rpm命令不能使用,解決辦法:請把變量在全局配置文件中聲明。

          本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          在VMware5.0環(huán)境下編譯內(nèi)核(kernel2.6.13)全過程 - Linux 高級應用討論區(qū)/保留帖 - - ChinaUnix.net
          升級Red Hat 9.0(Kernel 2.4.20-8) 至 Linux Kernel2.6.18
          linux2.6內(nèi)核編譯方法詳述
          轉(zhuǎn)載)編譯你自己的Linux內(nèi)核(Kernel)
          linux 內(nèi)核頭文件 linux kernel header
          redhat9.0如何升級內(nèi)核? - 紅聯(lián)Linux門戶 - 中國領先的Linux技術網(wǎng)站...
          更多類似文章 >>
          生活服務
          分享 收藏 導長圖 關注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服