Next Previous Contents

9. 可載入模組

可載入模組能夠節省記憶體,而且很容易設定. 模組的範圍已經包含了檔案系統,乙太網路卡驅動程式,磁帶機,印表機驅動程式,還有更多.

9.1 安裝模組工具

模組工具可以從你取得核心的地方找到,如 modules-x.y.z.tar.gz; 選擇與你目前核心版本相等或稍低的最接近的 x.y.z. 用 `tar zxvf modules-x.y.z.tar.gz' 解開. cd 到它產生的目錄(modules-x.y.z),看一下 README,然後按照安裝指示執行 (通常很簡單,就像 make install 之類的). 然後你在 /sbin 應該會有這些程式 insmod, rmmod, ksyms, lsmod, genksyms, modprobe, 以及 depmod. 如果你想的話,可以用 insmod 裡的範例驅動程式``hw''來測試這些工具; 參見 INSTALL 檔裡的細節說明.

insmod 指令將一個模組插入運行中的核心.模組通會以 .o 為結尾; 上面提到的範例程式就叫做 drv_hello.o,因此要插入此模組,就用 `insmod drv_hello.o'. 要了解目前核心正在使用的模組,用 lsmod 指令.輸出看起來像這樣:

    blah# lsmod
    Module:        #pages:  Used by:
    drv_hello          1
`drv_hello' 是這模組的名稱,它用了一頁 (4K) 的記憶體,而且目前沒有其它的核心模組依賴於它. 要移除此模組,用 `rmmod drv_hello'.注意 rmmod 需要的是模組名稱,而不是檔案名稱; 就是你從 lsmod 指令列出來的.其餘工具的作用在線上手冊中都有說明.

9.2 與核心發行的模組

在 2.0.30 版中,幾乎所有的東西都可以變成可載入模組. 要使用可載入模組,首先確定你沒有將其配置到正常的核心裡,也就是說,在 `make config' 時不是回答 y. 編譯新核心並用它來開機.然後,再次 cd/usr/src/linux,然後執行 `make modules'. 這將編譯所有你未指定在核心配置裡的模組,並將其連結到 /usr/src/linux/modules. 你可以直接由此目錄使用,或是執行 `make modules_install' 將其安裝到 /lib/modules/x.y.z,其中 x.y.z 是核心版本.

這對處理檔案系統上特別便利.你可能並不經常使用 minix 或 MS-DOS 的檔案系統. 例如,如果我遇到一 MS-DOS 的軟碟片,我會用 insmod /usr/src/linux/modules/msdos.o,並在使用完成後用 rmmod msdos 指令將其去掉. 此過程大約可以節省核心 50K 左右的記憶體.對於 minix 檔案系統有一點要注意的就是, 為了要使用``急救磁片'',你應該總是直接將它配置到核心中.


Next Previous Contents