開心生活站

位置:首頁 > IT科技 > 

linux,module命令

IT科技1.08W

1、module命令簡介:

modules的字面意思是模組,模組化有兩個方法解決:設計者可以把各項功能分離到單獨的叫做執行緒的處理中去,或者是將核心以包含/排除一些功能的方式重新編譯。如果把功能分離到執行緒中去,那麼核心就叫做“微核心”(micro-kernel),這種解決方法增加了執行緒間協調工作的通訊開銷,這種解決方案的優點在於核心的大小。
Linux的解決方案是包含核心模組,這些模組是可以按需要隨時裝入和卸下的。這樣做可以使得核心的大小和通訊量都達到最小。將模組從核心中獨立出來,不必預先『綁』在 kernel codes 中。

這樣做有三種優點: 一, 將來修改 kernel 時,不必全部重新compile,可節省不少時間;二, 若需要安裝新的 modules ,不必重新 compile kernel,只要插入 (通過insmode指令) 對應的 modules 即可;三,減少核心對系統資源的佔用,核心可以集中精力做最基本的事情,把一些擴充套件功能都交由modules實現。
模組也可以用來嘗試新的核心程式碼而不需要每次都建立和重啟用核心。但是,這樣做帶來的問題是:使用核心模組通常會輕微的增加效能和記憶體開支。一個可載入模組肯定會產生更多的程式碼,這種程式碼和額外的資料結構會佔用更多一點的記憶體。另外因為間接訪問核心資源也讓模組的效率輕微降低。
2、載入模組方法:
載入核心模組的方法有兩種。

一是使用insmod命令手工把它插入到核心。

二是在需要的時候載入這個模組,叫做按需載入(demand loading)。當核心發現需要一個模組的時候,例如當用戶安裝一個不在核心的檔案系統的時候,核心會請求核心守護程序(kerneld)試圖載入合適的模組。

3、與modules有關的命令:
lsmode :列出已經被核心調入的模組
insmode:將某個module插入到核心中
rmmod:將某個module從核心中解除安裝
depmod: 生成依賴檔案,告訴將來的 insmod 要從哪兒調入 modules。這個依賴檔案就在/lib/modules/[您的kernel版本]/modules.dep。
Kerneld:負責自動的將模組調入核心和把模組從核心中解除安裝。
舉例:

編譯一個最小的Linux核心

必須要編譯到核心中的內容:

1、root所在的硬碟配置。哪果您的硬碟是IDE介面,就把 ide 的選項標記下來。如果是SCSI介面,請把您的介面引數及 SCSI id 記標下來。

2、選擇使用哪一個檔案系統。Linux的預設檔案系統是是 ext2 ,那麼就一定要把它標記下來。如果機器中還其它的作業系統,如win98或windows NT,您還會可能選擇FAT32或NTFS的支援,不過後面你可以通過手工載入的方式來加入新的模組支援。
3、選擇Linux所支援的可執行檔案格式。這裡有兩種格式可供選擇:elf:這是當前Linux普遍支援的可執行檔案格式,必須編譯到核心中 。
a.out: 這是舊版的Linux的可執行檔案各函式庫的格式,如果你確認肯定用不到這種格式的可執行檔案,那麼就可以不把它編譯到核心當中。
其它內容凡是所有選項中m提示的,都選擇m,這樣可以通過手工的方式新增該模組。
** Loadable module support*Enable loadable module support (CONFIG_MODULES) [Y/n/?]Set version
information on all symbols for modules (CONFIG_MODVERSIONS) [N/y/?]Kernel daemon support (e.g.
autoload of modules) (CONFIG_KERNELD) [Y/n/?]

分別回答 Y,N,Y 。其中 CONFIG_KERNELD 的 default 值是 N, 所以要注意選擇Y。
make config 完後,仍舊是 make dep; make clean。接下來要 make zlilo 或 make zImage。然後 make modules ; make modules_install 。完成之後,就編譯出一個沒有調入多餘模組的一個“乾淨的”核心映像檔案了。

linux module命令

標籤:module linux 命令