91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux內核編譯的示例分析

發布時間:2021-12-08 11:26:32 來源:億速云 閱讀:170 作者:小新 欄目:系統運維

小編給大家分享一下Linux內核編譯的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

   下載源代碼

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

前期準備

大家都知道的要先升級“module-init-tools“軟件包,否則的話,等你安裝內核模塊文件的時候,系統會提示你: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 (進入規范文件目錄下)  #rpmbuild --bb modutils.spec (生成二進制的RPM包)  #cd ../RPMS/i386 (轉入剛生成的二進制的RPM包所在位置)  #rpm -ivh modutils*.rpm (剛生成兩個[modutils-2.4.21-  23.i386.rpm    與modutils-debuginfo-  2.4.21.23.i386.rpm]二進制的RPM包,一起安裝吧!)

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

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

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

一、準備源代碼

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

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

2、轉到/usr/src目錄并解開tarball包。

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

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

二、定制內核

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

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

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

三、編譯內核及模塊

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

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

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

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

四、安裝模塊及內核文件

#make modules_install install

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

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

五、后記

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

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

也就是給系統加上一個全局的環境變量,也可直接鍵入#export LD_ASSUME_KERNEL=2.2.5。

使用新內核可能出現的問題及對策:

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

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

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

以上是“Linux內核編譯的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新巴尔虎右旗| 康马县| 塘沽区| 阳信县| 郎溪县| 天门市| 托克托县| 辽阳县| 河池市| 锡林浩特市| 巢湖市| 加查县| 赣州市| 肃宁县| 饶平县| 巨鹿县| 长泰县| 普兰县| 和顺县| 井冈山市| 得荣县| 中卫市| 商都县| 抚远县| 清丰县| 沾益县| 古蔺县| 浦城县| 辽中县| 鲜城| 屏山县| 平顶山市| 宁安市| 长春市| 伊金霍洛旗| 沙田区| 湘潭县| 和林格尔县| 武宣县| 喀喇沁旗| 涪陵区|