新手指南 Linux編譯內(nèi)核操作流程_第1頁
新手指南 Linux編譯內(nèi)核操作流程_第2頁
新手指南 Linux編譯內(nèi)核操作流程_第3頁
新手指南 Linux編譯內(nèi)核操作流程_第4頁
新手指南 Linux編譯內(nèi)核操作流程_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、新手指南 Linux編譯內(nèi)核操作流程日期:2009-12-07來源:LinuxSir.Org   作者:北南南北 提要: 編譯內(nèi)核主要是通過內(nèi)核實(shí)現(xiàn)某些功能,比如iptables 需要內(nèi)支持;所有的硬件的支持也是通過內(nèi)核實(shí)現(xiàn)的;本文只是簡(jiǎn)單的給初學(xué)者講一下編譯內(nèi)核的流程; + 正文 + 一、為什么要編譯內(nèi)核; 有時(shí)我們?yōu)榱藢?shí)現(xiàn)某些功能,比如對(duì)iptables的防火墻有些需要內(nèi)核支持;還有實(shí)現(xiàn)一些硬件的支持等,這時(shí)我們需要重編內(nèi)核; 二、內(nèi)核源碼版本的選擇; 如果發(fā)行版本提供內(nèi)核源碼,最好還是用發(fā)行版本提供的;比如Fedora 4.0 提供了很多版本的內(nèi)核源碼;我們安裝好后,他自帶的配

2、置文件大多能滿足我們的需要,對(duì)于新手來說,根據(jù)自帶的內(nèi)核的配置文件.config ,我們也能學(xué)到一點(diǎn)如何配置內(nèi)核。也沒有什么難的,熟能生巧罷了; 如果從 下載最新穩(wěn)定版本的內(nèi)核也是可以的; 三、內(nèi)核源碼安裝或解壓; 對(duì)于Fedora Core 4.0 來說,內(nèi)核源碼是放在 /usr/src/kernels 目錄中;如果通過在線升級(jí)內(nèi)核,也是放在這個(gè)目錄中;如果您的系統(tǒng)中的 /usr/src/kernels/ 中沒有內(nèi)容,說明您沒有安裝內(nèi)核的源碼包 kernel-devel 軟件包; 您可以通過軟件包管理器來補(bǔ)裝 ,請(qǐng)參考 Fedora / RedHat 軟件包管理指南 如

3、果您用Fedora Core 4.0 ,我建議您在保留老內(nèi)核的基礎(chǔ)上,在線下載最新版本的內(nèi)核 kerenl-devel 和對(duì)應(yīng)版本的 kernel 或者從 下載,有時(shí)可能新的kerenl 已經(jīng)解決了您所面對(duì)的問題,這時(shí)就沒有必要編譯內(nèi)核了; 如果您是通過在線安裝的內(nèi)核源碼包 ,比如通過 apt+synaptic 或者yum 安裝的,內(nèi)核源碼會(huì)被放到/usr/src/kernel 下的目錄中,您要進(jìn)入相對(duì)應(yīng)的目錄進(jìn)行編譯; 在線更新軟件包,請(qǐng)參考 Fedora / RedHat 軟件包管理指南,推薦 apt+synaptic 工具; 如果您是是下載kernel 和kerne

4、l-devel 的rpm 包,可以通過來安裝; rootlocalhost beinan# rpm -ivh kernel*.rpm 如果您是從 下載的類似 linux-提示:本文以linux-.3為例,其實(shí)通過發(fā)行版的升級(jí)版的kernel-devel 和從 下載下來的差不多,大同小異;不同的是通過在線升級(jí)的rpm格式的內(nèi)核源碼包,有配置文件.config 可以參考;安裝到的目的地是/usr/src/kernel 對(duì)FC 4.0來說;如果您要高編譯和配置內(nèi)核, 四、內(nèi)核的配置; 1、進(jìn)入目錄執(zhí)行 make mrproper ,對(duì)于從

5、 下載而來的tar.bz格式的源碼包; rootlocalhost src# cd linux-對(duì)于Fedora Core 4.0 ,如果您是通過在線安裝的 kernel和kernel-devel 新版本的包,比如是-1.1398_FC4-i686,你可以直進(jìn)入 /usr/src/kernel/相應(yīng)的目錄中直接執(zhí)行 make menuconfig ;利用發(fā)行版本提供的 .config 來配置,這樣方便點(diǎn)。不要make mrproper ,否則.config 就沒有了;這也是為什么要用發(fā)行版本提供的內(nèi)核源碼升級(jí)包的原因; 其它配置和安裝大同小異;模仿總可以吧; 2.簡(jiǎn)要的配置內(nèi)核; 進(jìn)入配置內(nèi)核

6、的配置模式后,我們可能一無所知,看下面; 內(nèi)核配置有兩種方法,一種是直接置入內(nèi)核 * ;另一種是編成模塊 M ;兩種方法各有優(yōu)點(diǎn);直接編入內(nèi)核的,比如設(shè)備的啟動(dòng),不再需要加載模塊的這一過程了;而編譯成模塊,則需要加載設(shè)備的內(nèi)核支持的模塊;但直接把所有的東西都編入內(nèi)核也不是可行的,內(nèi)核體積會(huì)變大,系統(tǒng)負(fù)載也會(huì)過重。我們編內(nèi)核時(shí)最好把極為重要的編入內(nèi)核;其它的如果您不明白的,最好用默認(rèn)。 新手指南 Linux編譯內(nèi)核操作流程日期:2009-12-07來源:LinuxSir.Org   作者:北南南北 1)移動(dòng)鍵盤上下左右鍵,按Enter 進(jìn)入一個(gè)目錄。把指針移動(dòng)到Exit就退出

7、當(dāng)前目錄到上級(jí)目錄; 2)針對(duì)自己機(jī)器存在的問題進(jìn)行修改,比如大內(nèi)存的支持; 選擇自己機(jī)器的CPU; 移動(dòng)鍵盤到 Processor type and features -> ,然后按ENTER進(jìn)入; 新手指南 Linux編譯內(nèi)核操作流程日期:2009-12-07來源:LinuxSir.Org   作者:北南南北 比如我的Fedora core 4.0 所采用的文件系統(tǒng)用的是ext3 ,所以我要把它直接編入內(nèi)核;好處是不受模塊丟失或者損壞而不能啟動(dòng)系統(tǒng);而有時(shí)您把系統(tǒng)所采用的文件系統(tǒng)編譯成模塊,出現(xiàn)VFS錯(cuò)誤,也有這方

8、面的事,可能是您沒有把ext3加入到相應(yīng)的加載模塊的配置文件中,所以我們?yōu)榱藴p少麻煩,把風(fēng)險(xiǎn)降到最低,還是要直接置入內(nèi)模的好; File systems -> <*> Ext3 journalling file system support * Ext3 extended attributes * Ext3 POSIX Access Control Lists * Ext3 Security Labels 如果您還有其它的硬盤分區(qū)要讀取,比如是reiserfs、ext2、fat、fat32、ntfs等,這樣的可以編成模塊來支持; 再舉一例:如果您的的操作系統(tǒng)用的是reiser

9、fs的文件系統(tǒng),當(dāng)然就要把reiserfs的直接編入內(nèi)核,其它的可以編成模塊來支持了; 4)對(duì)于硬盤及RAID的支持,要直接編入內(nèi)核; 比如ATA、SATA、SCSI及RAID的支持直接內(nèi)核支持;有時(shí)編完內(nèi)核后,啟動(dòng)時(shí)不能識(shí)別硬盤和RAID,大多事情出在這里;Slackware中在這方面有的是模塊支持,我們可以把它由模塊M改成內(nèi)核*來支持;如果您不明白,就按默認(rèn)進(jìn)行;SATA的硬盤的支持除了選中SATA的支持、IDE設(shè)備的支持以外,還要選中SCSI的支持; 5)對(duì)于咱們所沒有的設(shè)備,可以在內(nèi)核中不選,熟能生巧罷了; 比如我沒有ISDN設(shè)備 ,所以就把ISDN去掉; ISDN subsystem

10、 -> < > Linux telephony support 如果您沒有1394的設(shè)備 ,當(dāng)然可以把1394的支持也去掉;等等。 如果您有USB的設(shè)備,要把USB方面好好看看;比如大家常用的移動(dòng)硬盤;USB貓等,還有掃描儀等; 內(nèi)核配置就說這么多吧,太多了,我也說不清楚,水平有限?。?配置好后先要保存 Save Configuration to an Alternate File 出來一個(gè) Enter a filename to which this configuration ,should be saved as an alternate. Leave blank to

11、 abort. .config 按回車就行了,這樣就保存住了; 然后退出 Exit ,這時(shí)也會(huì)出現(xiàn)保存 ; 如果你想把.config保存起來,可以再復(fù)制一份到安全一點(diǎn)的目錄,以備后用; 五、編譯內(nèi)核; rootlocalhost linux-這樣就編譯好了,并把模塊也安裝在了 /lib/modules目錄中了,請(qǐng)看: rootlocalhost linux-六、安裝內(nèi)核及配置grub或lilo ; 1、復(fù)制bzImage等相關(guān)文件,并創(chuàng)建initrd文件; rootlocalhost linux-我們把 編譯出來的bzImage,拷入到/boot目錄,拷貝成 vmlinuz-2、查看系統(tǒng)引導(dǎo)管

12、理器grub或者lilo的配置文件。 我只說grub的,我沒有l(wèi)ilo,也不會(huì)用。所以咱們還是GRUB吧,F(xiàn)C 4 系統(tǒng)引導(dǎo)管理器是 GRUB,所以我們談?wù)凣RUB的設(shè)置; 查看 /etc/grub.conf; 比如我的grub.conf的內(nèi)容是這樣的; Fedora Core (我們要把老內(nèi)核的啟動(dòng)保留下來,以防不測(cè),我們只加入新的內(nèi)核的啟動(dòng);所以我加上這樣一段; title Fedora Core (咱們?cè)賮砜匆幌赂倪^后的配置文件; Fedora Core (Fedora然后重新啟動(dòng)機(jī)器,如果出現(xiàn)VFS錯(cuò)誤,可能就是我寫重要的那個(gè)地方出了錯(cuò)誤; 注意:如果重新啟用內(nèi)核后,原來安裝的顯示卡驅(qū)

13、動(dòng),比如 NVIDIA和ATI的驅(qū)動(dòng)還要重新安裝新手指南 Linux編譯內(nèi)核操作流程日期:2009-12-07來源:LinuxSir.Org   作者:北南南北 一、什么是內(nèi)核; 內(nèi)核官方: 內(nèi)核洋文用 kernel,我剛才翻了一下詞典,kernel 中文意思是內(nèi)核、核心、中心、精髓的意思;也是果仁、果核的意思。從字面理解,kernel 是一事物的中心,植物的果實(shí)最重要的也是果仁和果核;:) 由此我們可以推斷內(nèi)核是操作系統(tǒng)的中心。 我們知道Linus Torvalds 開發(fā)了Linux ,其實(shí)他開發(fā)的就是內(nèi)核,按內(nèi)核官方主頁的理解,這個(gè)內(nèi)核就是Linux ;其它的擴(kuò)展和應(yīng)用都是圍繞內(nèi)

14、核而展開的。所有Linux應(yīng)用程序都會(huì)和內(nèi)核發(fā)生直接或者間接的接觸;比如硬件需要內(nèi)核支持,網(wǎng)絡(luò)的通信也需要內(nèi)核支持;文件系統(tǒng)更需要內(nèi)核支持. . 直言我的能力的不行,如果您想了解和學(xué)習(xí)解操作系統(tǒng),我寫的教程只是初級(jí)應(yīng)用,理論性的東西不是一言兩語能說的清楚的,更不是應(yīng)用者能說的清楚的。 二、為什么需要編譯內(nèi)核和管理內(nèi)核 硬件是需要內(nèi)核支持才行,有些硬件的支持沒有被編入內(nèi)核,這也需要我們重編內(nèi)核;內(nèi)核的包含的不僅僅是設(shè)備的驅(qū)動(dòng),還有其它的內(nèi)容,比如網(wǎng)絡(luò)協(xié)議的支持,防火墻的支持. . 比如iptables的實(shí)現(xiàn),有些功能是需要內(nèi)核支持的,如果內(nèi)核與iptables相關(guān)的內(nèi)容沒有被編入,iptable

15、s 相關(guān)的功能就無法實(shí)現(xiàn); 三、內(nèi)核編譯方法 請(qǐng)參考:編譯內(nèi)核操作流程 為新手指南 四、管理內(nèi)核模塊的相關(guān)命令 1、lsmod 列加以掛載的內(nèi)核模塊; lsmod 是列出目前系統(tǒng)中已加載的模塊的名稱及大小等;另外我們還可以查看 /proc/modules ,我們一樣可以知道系統(tǒng)已經(jīng)加載的模塊; rootlocalhost beinan# lsmod 2、modinfo 查看模塊信息; modinfo 可以查看模塊的信息,通過查看模塊信息來判定這個(gè)模塊的用途; rootlocalhost beinan# moinfo 模塊名 舉例: rootlocalhost beinan# modinfo n

16、e2k-pci filename: /lib/modules/上面的例子是我們查看 ne2k-pci 這個(gè)模塊的信息,通過查看,我們知道ne2k-pci 模塊是8029網(wǎng)卡(PCI NE2000 clone driver)的驅(qū)動(dòng);模塊是位于 /lib/modules/-1.1369_FC4/kernel/drivers/net/ 中ne2k-pci.ko 我們現(xiàn)在常用的網(wǎng)卡也有8139的,8139網(wǎng)卡所用的驅(qū)動(dòng)是 8139too ;查查看? rootlocalhost beinan# modinfo 8139too 我們?cè)俨椴関fat 和ntfs 的模塊信息; rootlocalhost be

17、inan# modinfo vfat rootlocalhost beinan# modinfo ntfs 自己嘗試一下; 注意: 模塊名是不能帶有后綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o后綴; 3、modprobe 掛載新模塊以及新模塊相依賴的模塊 modprobe 我們常用的功能就是掛載模塊,在掛載某個(gè)內(nèi)核模塊的同時(shí),這個(gè)模塊所依賴的模塊也被同時(shí)掛載;當(dāng)然modprobe 也有列出內(nèi)核所有模塊,還有移除模塊的功能;下在我們舉個(gè)例子說一說咱們常用的功能和參數(shù); 新手指南 Linux編譯內(nèi)核操作流程日期:2009-12-07來源:LinuxSir.Org &

18、#160; 作者:北南南北 modprobe -v -V -C config-file -n -i -q -o <modname> <modname> parameters. modprobe -r -n -i -v <modulename> . modprobe -l -t <dirname> -a <modulename> . 上面是modprobe 的用法,具體更為詳細(xì)的幫助,我們可以查看 man modprobe ; rootlocalhost beinan# modprobe -c modprobe -c 可以查看modul

19、es 的配置文件,比如模塊的別名是什么等; rootlocalhost beinan# modprobe -l modprobe -l 是列出內(nèi)核中所有的模塊,包括已掛載和未掛載的;通過modprobe -l ,我們能查看到我們所需要的模塊,然后根據(jù)我們的需要來掛載;其實(shí)modprobe -l 讀取的模塊列表就位于 /lib/modules/'uname -r' 目錄中;其中uname -r 是內(nèi)核的版本; rootlocalhost beinan# uname -r 通過上面的命令,自己試試看? rootlocalhost beinan# modprobe 模塊名 注:掛載一

20、個(gè)模塊; 舉例: rootlocalhost beinan# modprobe ne2k-pci 注:掛載 ne2k-pci 模塊; rootlocalhost beinan# modprobe vfat 注:掛載vfat 模塊 rootlocalhost beinan# modprobe ntfs 注:掛載ntfs 模塊 rootlocalhost beinan# lsmod 注:列出已掛載模塊, 我們會(huì)看到ne2k-pci ,vfat ,ntfs的模塊 ; 注意: 模塊名是不能帶有后綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o后綴; rootlocalhost

21、 beinan# modprobe -r 模塊名 注:移除已加載的模塊,和rmmod 功能相同; 注意: 模塊名是不能帶有后綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o后綴; rootlocalhost beinan# modprobe -r 模塊名 舉例: rootlocalhost beinan# modprobe -r ne2k-pci 就說這么多吧,更為詳細(xì)的還是用 man modprobe 來查看和嘗試; 4、rmmod 移除已掛載模塊; 命令格式: rmmod 模塊名 注意: 模塊名是不能帶有后綴的,我們通過modprobe -l 所看到的模塊,都是帶

22、有.ko 或.o后綴; 舉例: rootlocalhost beinan# rmmod vfat 注:移除已掛載的模塊vfat 5、depmod 創(chuàng)建模塊依賴關(guān)系的列表 這個(gè)模塊管理工具是創(chuàng)建模塊依賴關(guān)系的列表,有幾個(gè)參數(shù)我們注意一下就行了,目前的的Linux 發(fā)行版所用的內(nèi)核是2.6x版本,是自動(dòng)解決依賴關(guān)系,所以這個(gè)命令知道就行了;模塊之前也有依賴關(guān)系,比如我們想驅(qū)動(dòng)USB 移動(dòng)硬盤,目前有兩種驅(qū)動(dòng),一種是udev ,在內(nèi)核中有,但目前不太穩(wěn)定;另一種辦法是用usb-storage驅(qū)動(dòng),而usb-storage 依賴的模塊是scsi 模塊,所以我們要用usb-storage 的模塊,也得把

23、scsi 編譯安裝; 再舉個(gè)例子:sata的硬盤,在Linux中的設(shè)備表示的是/dev/sd* ,比如 /dev/sda,/dev/sdb 等. 系統(tǒng)要驅(qū)動(dòng) sata硬盤,則需要把sata在內(nèi)核中選中,或編譯成模塊,或內(nèi)置于內(nèi)核之中,在此同時(shí),還需要在內(nèi)核中選中ide ,scsi 的支持等; depmod 工具的洋文原意:depmod program to generate modules.dep and map files.(我譯的:為modules.dep 文件或映射文件創(chuàng)建依賴關(guān)系) rootlocalhost beinan# depmod -a 注:為所有列在/etc/modprobe

24、.conf 或/etc/modules.conf 中的所有模塊創(chuàng)建依賴關(guān)系,并且寫入到modules.dep文件; rootlocalhost beinan# depmod -e 注:列出已掛載但不可用的模塊; rootlocalhost beinan# depmod -n 注:列出所有模塊的依賴關(guān)系,但僅僅是輸出出來 (Write the dependency file on stdout only) 注:modules.dep 位于 /lib/modules/內(nèi)核版本 目錄 比如 Fedora Core 4.0 中,系統(tǒng)默認(rèn)的內(nèi)核: rootlocalhost beinan# ls /li

25、b/modules/-1.1369_FC4/modules.dep 新手指南 Linux編譯內(nèi)核操作流程日期:2009-12-07來源:LinuxSir.Org   作者:北南南北 /lib/modules/-1.1369_FC4/modules.dep 6、insmod 掛載模塊; insmod 這個(gè)工具,和modprobe 有點(diǎn)類似,但功能上沒有modprobe 強(qiáng),modprobe 在掛載模塊是不用指定模塊文件的路徑,也不用帶文件的后綴.o 或.ko ;而insmod 需要的是模塊的所在目錄的絕對(duì)路徑,并且一定要帶有模塊文件名后綴的(modulefile.o 或modulesf

26、ile.ko ); 對(duì)于這個(gè)工具,我們只是介紹一下, 并不推薦使用。因?yàn)槟K有依賴關(guān)系,對(duì)于新手來說,可能不知道這個(gè)模塊依賴和哪個(gè)模塊依賴; 舉例: 我們要到 /lib/modules/內(nèi)核版本 uname -r 的命令輸出/kernel/drivers 中找相對(duì)應(yīng)的模塊才行,要有絕對(duì)路徑,而且必須要用到文件名的全稱,不能把文件名的后綴省略; 五、與內(nèi)核模塊加載相關(guān)的配置文件; 1、模塊的配置文件 modules.conf 或 modprobe.conf 內(nèi)核模塊的開機(jī)自動(dòng)掛載模塊一般是位于一個(gè)配置文件,一般的Linux發(fā)行版本都有 /etc/modules.conf 或 /etc/modpr

27、obe.conf 。比如Fedora Core 4.0 內(nèi)核模塊開機(jī)自動(dòng)加載文件是 /etc/modprobe.conf ;在這個(gè)文件中,一般是寫入模塊的加載命令或模塊的別名的定義等;比如我們?cè)趍odules.conf 中可能會(huì)發(fā)行類似的一行 ; alias eth0 8139too 而8029的網(wǎng)卡應(yīng)該是 alias eth0 ne2k-pci 這樣系統(tǒng)啟動(dòng)的時(shí)候,首先會(huì)modprobe 8139too ,然后再為8139too 指定別名為 eth0,然后我們?cè)诘卿浀臅r(shí)候,用 ifconfig 就會(huì)查看到網(wǎng)卡的IP 等情況,當(dāng)然您得為網(wǎng)卡設(shè)置IP 才行; 一般的情況下,modproe.conf 或m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論