- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
核心编译与模组管理
Chap 2_模組的製作與執行Chap11_進階模組化與kmod 核心編譯與模組管理 我們的系統僅認識二進制 ( binary ) 的可執行檔,因此,我們必須要將核心的原始碼編譯成為系統可以認識的執行檔才行 如果想要進行核心編譯,就必須要取得核心的原始碼才行 Linux 的核心相當的具有彈性,支援模組化的,也就是說,只要新硬體可以推出搭配核心的驅動模組,那麼我們只要將該模組掛載入核心,核心就可以支援該硬體 開機的流程 1 BIOS 2 MBR ( 就是 Lilo 或 Grub ) 取得 boot loader; 3 取得核心 kernel 的資料並載入 4 init 5 scripts 6 login 與 shell kernel 其實就是開機管理程式設定檔( lilo.conf 或 menu.lst )裡提到的那個檔案,通常也就是檔名為 vmlinuz 的這個檔案,放置在 /boot 裡頭,我們需要的編譯出來的核心檔案就是這一個東西 由於核心通常是支援模組的,那個外掛模組則是放置在 /lib/modules/`uname -r` 裡面 核心的功能 用來控制系統硬體與相關程序的東西 核心可以使用『模組』的方式來動態的載入與移除所需要的模組 載入與卸載這些模組 核心的驅動程式寫在底下的目錄中: /lib/modules/核心版本/kernel/drivers /lib/modules/`uname –r`/kernel/drivers depmod [root @test /root]# depmod [-aens]? 參數說明:? -a :將 /etc/modules.conf 可以查詢到的模組的相關性都寫入 /lib/modules/`uname -r`/當中? -e :顯示出目前已載入的不可執行的模組名稱? -n :將各模組的相依性直接輸出螢幕上,而不是輸出到 /lib/modules/`uname -r` 當中? -s :將一些訊息結果輸出到 syslog 的登錄檔中!? 範例:? [root @test /root]# depmod -a? [root @test /root]# depmod –n 很多時候,在使用模組時,這些模組基本上是有相關性的,分析這些模組的相關性,則是以 depmod 來執行 lsmod [root @test /root]# lsmod? 範例:? [root @test /root]# lsmod? 目前系統中的模組有哪些呢?就是以 lsmod 來查看 modinfo [root @test /root]# modinfo [-adnp] module_name? 參數說明:? -a :秀出作者? -d :秀出這個模組的基本說明? -n :秀出這個模組的檔案放置路徑與名稱? 範例:? [root @test /root]# modinfo 8139too? 將這個模組的所有訊息都寫出來的意思 modprobe [root @test /root]# modprobe modules_name 參數說明:? -l :列出目前系統所有的模組 ( 在 /lib/modules/`uname -r`/kernel 底下 )? -c :列出目前系統所有的模組!(更詳細的代號對應表)? 範例:? [root @test /root]# modprobe ip_tables? 這個程式與底下的 insmod 有點類似,只是他是依據系統已經建立好的模組相依屬性來載入模組,而 insmod 則是直接手動來載入模組檔案 ? insmod [root @test /root]# insmod [-fkps] module_name 參數說明:? -f :強制將模組載入,要載入不相同版本的模組時候可能會用到的參數? -k :自動在核心沒有使用到該模組的時候,先清除乾淨!? -p :測試模組是否可以被載入,不會直接載入系統中!? -s :將一些執行訊息寫到 syslog 這種登錄檔,而不是寫到 terminal 當中! 範例:? [root @test /root]# insmod -p /usr/local/src/dlink-530/via-rhine.o 可以加上路徑與完整的檔名來載入模組,加上 -p 這個參數可以驗證該模組的可執行性與否 rmmod [root @test /root]# rmmod modules_name? 參數說明:? 範例:? [root @test /root]# rmmod 8139too 輸入『 rmmod 模組名稱』就可以移除模組
文档评论(0)