天天看點

linux核心主要功能子產品不包括,Linux核心子產品使用指南

該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓

rmmod rtl8139

指令将其從系統中解除安裝出去。

标志為autoclean(見有關lsmod的介紹)的子產品可以自動解除安裝。前面我們已經提到,子產品之間可能會有引用關系。如果A子產品引用了B子產品的内容,那麼必須先裝載B子產品之後才能成功裝載A子產品;在解除安裝B子產品之前也要首先解除安裝A子產品,否則就會導緻系統的崩潰(當然,如果子產品源程式編寫的正确,在解除安裝A子產品之前,B子產品是無法解除安裝的)。

4、子產品實用工具

以上我們介紹的lsmod、insmod、rmmod是一組實用工具所提供的三個指令,這組實用工具一般是和核心版本對應的,其1.3.57版本名為modules(modules-1.3.57.tar.gz),高一點的版本名為modutils(例如modutils-2.4.2.tar.gz)。最好保證你的系統中的子產品實用工具的版本号(可以使用modinfo -V指令來檢視)不低于核心版本号(可以使用uname -r來檢視)。1.3.57版本的modules内容包括modprobe、depmod、genksyms、makecrc32、insmod、rmmod、lsmod、ksyms、kerneld等指令。其中modprobe和insmod指令類似,不過它要依賴于相關的配置檔案;depmod用于生成子產品依賴檔案/lib/modules/kernel-version/modules.dep;genksyms和ksyms與核心函數的版本号有關(由于核心的不斷更新,各個版本的核心函數各有不同,為了不會引起系統的崩潰,核心源程式中要對核心函數的版本号進行嚴格地控制)。在以後版本的實用工具中,使用kmod來取代了kerneld。kmod的功能和kerneld類似,但是它不能自動解除安裝子產品。之是以采用kmod的原因在于kerneld是使用IPC通道實作的,相當于多經過了一層處理,另外kerneld的代碼也比較複雜,kmod的代碼數量也比kerneld少得多。

5、與子產品有關的核心編譯選項和過程

在使用make confing / make menuconfig / make xconfig對核心進行配置時,和子產品有關的選項有:

Code maturity level options -->

Prompt for development and/or incomplete code/drivers

此選項為代碼的成熟程度。所有新的設計與改進都首先在開發版(版本号為x.y.z,其中y是奇數)中試用,經過驗證技術可行之後再在穩定版(版本号為x.y.z,其中y是偶數)中正式引入。尚不成熟或不完善的技術在預設的情況中是不會編譯到核心中的,如果你希望試驗這些内容(例如2.4.*版本中的khttpd、IPV6等),就要選中這個選項。

>

Loadable module support -->

Enable module support

Set version information on all module symbols

Kernel module loader

此選項是對可裝載核心的支援以及對子產品符号的版本号、核心子產品裝載程式支援的選項。對于其他大部分選項來說,你可以将相應的代碼編譯到核心中(使用build-in方式),也可以将他們編譯成子產品(使用module)方式。

如果你選用了子產品方式,那麼在編譯核心的過程中,你除了要使用

make; make install

指令來編譯/安裝核心之外,還要使用

make modules; make modules_install

來編譯/安裝核心子產品。編譯好的子產品被安裝到/lib/modules/kernel-version/目錄中。

編譯過程中還要運作一個

depmod -a

指令。這個指令生成子產品依賴檔案,也就是/lib/modules/kernel-version/modules.dep,該檔案格式為:

/lib/modules/2.2.14-5.0/fs/autofs.o:

/lib/modules/2.2.14-5.0/fs/binfmt_aout.o:

/lib/modules/2.2.14-5.0/fs/binfmt_java.o:

/lib/modules/2.2.14-5.0/fs/binfmt_misc.o:

/lib/modules/2.2.14-5.0/fs/coda.o:

/lib/modules/2.2.14-5.0/fs/fa