亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 666 | 回復(fù): 0
打印 上一主題 下一主題

內(nèi)核管理概述 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-07-28 19:02 |只看該作者 |倒序?yàn)g覽

作者:北南南北
來(lái)自:LinuxSir.Org
摘要:本文講述與內(nèi)核操作有關(guān)的基礎(chǔ)知識(shí);比如編譯內(nèi)核,裝載、移除內(nèi)核模塊,查看模塊信息等;本文涉及相關(guān)的命令有modprobe、insmod、depmod、rmmod、modinfo等;
++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++
一、什么是內(nèi)核;
內(nèi)核官方:http://www.kernel.org
內(nèi)核洋文用 kernel,我剛才翻了一下詞典,kernel 中文意思是內(nèi)核、核心、中心、精髓的意思;也是果仁、果核的意思。從字面理解,kernel 是一事物的中心,植物的果實(shí)最重要的也是果仁和果核;:) 由此我們可以推斷內(nèi)核是操作系統(tǒng)的中心。
我們知道Linus Torvalds 開(kāi)發(fā)了Linux ,其實(shí)他開(kāi)發(fā)的就是內(nèi)核,按內(nèi)核官方主頁(yè)的理解,這個(gè)內(nèi)核就是Linux ;其它的擴(kuò)展和應(yīng)用都是圍繞內(nèi)核而展開(kāi)的。所有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ǔ)能說(shuō)的清楚的,更不是應(yīng)用者能說(shuō)的清楚的。
二、為什么需要編譯內(nèi)核和管理內(nèi)核
硬件是需要內(nèi)核支持才行,有些硬件的支持沒(mé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)容沒(méi)有被編入,iptables 相關(guān)的功能就無(wú)法實(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)加載的模塊;
[root@localhost beinan]# lsmod
2、modinfo 查看模塊信息;
modinfo 可以查看模塊的信息,通過(guò)查看模塊信息來(lái)判定這個(gè)模塊的用途;
[root@localhost beinan]# moinfo 模塊名
舉例:
[root@localhost beinan]# modinfo ne2k-pci
filename: /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/ne2k-pci.ko
author: Donald Becker / Paul Gortmaker
description: PCI NE2000 clone driver
license: GPL
parmtype: debug:int
parmtype: options:array of int
parmtype: full_duplex:array of int
parm: debug:debug level (1-2)
parm: options:Bit 5: full duplex
parm: full_duplex:full duplex setting(s) (1)
vermagic: 2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0
depends: 8390
alias: pci:v000010ECd00008029sv*sd*bc*sc*i*
alias: pci:v00001050d00000940sv*sd*bc*sc*i*
alias: pci:v000011F6d00001401sv*sd*bc*sc*i*
alias: pci:v00008E2Ed00003000sv*sd*bc*sc*i*
alias: pci:v00004A14d00005000sv*sd*bc*sc*i*
alias: pci:v00001106d00000926sv*sd*bc*sc*i*
alias: pci:v000010BDd00000E34sv*sd*bc*sc*i*
alias: pci:v00001050d00005A5Asv*sd*bc*sc*i*
alias: pci:v000012C3d00000058sv*sd*bc*sc*i*
alias: pci:v000012C3d00005598sv*sd*bc*sc*i*
alias: pci:v00008C4Ad00001980sv*sd*bc*sc*i*
srcversion: 6ACE95F441CD26DF9DC31C2
上面的例子是我們查看 ne2k-pci 這個(gè)模塊的信息,通過(guò)查看,我們知道ne2k-pci 模塊是8029網(wǎng)卡(PCI NE2000 clone driver)的驅(qū)動(dòng);模塊是位于 /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/ 中ne2k-pci.ko
我們現(xiàn)在常用的網(wǎng)卡也有8139的,8139網(wǎng)卡所用的驅(qū)動(dòng)是 8139too ;查查看?
[root@localhost beinan]# modinfo 8139too
我們?cè)俨椴関fat 和ntfs 的模塊信息;
[root@localhost beinan]# modinfo vfat
[root@localhost beinan]# modinfo ntfs
自己嘗試一下;
注意: 模塊名是不能帶有后綴的,我們通過(guò)modprobe -l 所看到的模塊,都是帶有.ko 或.o后綴;
3、modprobe 掛載新模塊以及新模塊相依賴的模塊
modprobe 我們常用的功能就是掛載模塊,在掛載某個(gè)內(nèi)核模塊的同時(shí),這個(gè)模塊所依賴的模塊也被同時(shí)掛載;當(dāng)然modprobe 也有列出內(nèi)核所有模塊,還有移除模塊的功能;下在我們舉個(gè)例子說(shuō)一說(shuō)咱們常用的功能和參數(shù);
modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ]  [parameters...]
modprobe -r [-n] [-i] [-v]  ...
modprobe -l -t  [ -a  ...]
上面是modprobe 的用法,具體更為詳細(xì)的幫助,我們可以查看 man modprobe ;
[root@localhost beinan]# modprobe -c
modprobe -c 可以查看modules 的配置文件,比如模塊的別名是什么等;
[root@localhost beinan]# modprobe -l
modprobe -l 是列出內(nèi)核中所有的模塊,包括已掛載和未掛載的;通過(guò)modprobe -l ,我們能查看到我們所需要的模塊,然后根據(jù)我們的需要來(lái)掛載;其實(shí)modprobe -l 讀取的模塊列表就位于 /lib/modules/'uname -r' 目錄中;其中uname -r 是內(nèi)核的版本;
[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/
通過(guò)上面的命令,自己試試看?
[root@localhost beinan]# modprobe 模塊名 注:掛載一個(gè)模塊;
舉例:
[root@localhost beinan]# modprobe ne2k-pci 注:掛載 ne2k-pci 模塊;
[root@localhost beinan]# modprobe vfat 注:掛載vfat 模塊
[root@localhost beinan]# modprobe ntfs 注:掛載ntfs 模塊
[root@localhost beinan]# lsmod 注:列出已掛載模塊, 我們會(huì)看到ne2k-pci ,vfat ,ntfs的模塊 ;
注意: 模塊名是不能帶有后綴的,我們通過(guò)modprobe -l 所看到的模塊,都是帶有.ko 或.o后綴;
[root@localhost beinan]# modprobe -r 模塊名 注:移除已加載的模塊,和rmmod 功能相同;
注意: 模塊名是不能帶有后綴的,我們通過(guò)modprobe -l 所看到的模塊,都是帶有.ko 或.o后綴;
[root@localhost beinan]# modprobe -r 模塊名
舉例:
[root@localhost beinan]# modprobe -r ne2k-pci
就說(shuō)這么多吧,更為詳細(xì)的還是用 man modprobe 來(lái)查看和嘗試;
4、rmmod 移除已掛載模塊;
命令格式:
rmmod 模塊名
注意: 模塊名是不能帶有后綴的,我們通過(guò)modprobe -l 所看到的模塊,都是帶有.ko 或.o后綴;
舉例:
[root@localhost 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 的模塊,也得把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)系)
[root@localhost beinan]# depmod -a 注:為所有列在/etc/modprobe.conf 或/etc/modules.conf 中的所有模塊創(chuàng)建依賴關(guān)系,并且寫入到modules.dep文件;
[root@localhost beinan]# depmod -e 注:列出已掛載但不可用的模塊;
[root@localhost beinan]# depmod -n 注:列出所有模塊的依賴關(guān)系,但僅僅是輸出出來(lái) (Write the dependency file on stdout only)
注:modules.dep 位于 /lib/modules/內(nèi)核版本 目錄
比如 Fedora Core 4.0 中,系統(tǒng)默認(rèn)的內(nèi)核:
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/modules.dep
/lib/modules/2.6.11-1.1369_FC4/modules.dep
6、insmod 掛載模塊;
insmod 這個(gè)工具,和modprobe 有點(diǎn)類似,但功能上沒(méi)有modprobe 強(qiáng),modprobe 在掛載模塊是不用指定模塊文件的路徑,也不用帶文件的后綴.o 或.ko ;而insmod 需要的是模塊的所在目錄的絕對(duì)路徑,并且一定要帶有模塊文件名后綴的(modulefile.o 或modulesfile.ko );
對(duì)于這個(gè)工具,我們只是介紹一下, 并不推薦使用。因?yàn)槟K有依賴關(guān)系,對(duì)于新手來(lái)說(shuō),可能不知道這個(gè)模塊依賴和哪個(gè)模塊依賴;
舉例:
[root@localhost beinan]# insmod /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/tg3.ko
我們要到 /lib/modules/內(nèi)核版本 uname -r 的命令輸出/kernel/drivers 中找相對(duì)應(yīng)的模塊才行,要有絕對(duì)路徑,而且必須要用到文件名的全稱,不能把文件名的后綴省略;
五、與內(nèi)核模塊加載相關(guān)的配置文件;
1、模塊的配置文件 modules.conf 或 modprobe.conf
內(nèi)核模塊的開(kāi)機(jī)自動(dòng)掛載模塊一般是位于一個(gè)配置文件,一般的Linux發(fā)行版本都有 /etc/modules.conf 或 /etc/modprobe.conf 。比如Fedora Core 4.0 內(nèi)核模塊開(kā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 或modules.conf的內(nèi)容 是我們用相應(yīng)的硬件配置工具而生成的;如果您的硬件驅(qū)動(dòng)是沒(méi)有被內(nèi)核支持,您自己到硬件的廠商下載而來(lái)的驅(qū)動(dòng)。一般的情況下都有安裝和幫助文件。他們的驅(qū)動(dòng)在配置時(shí),他會(huì)寫入硬件的支持到modules.conf 或modprobe.conf 文件中。
再比如我們的聲卡在modules.conf 或modprobe.conf 中也有相應(yīng)的內(nèi)容,這是由alsaconf 配置工具生成的,明白了吧;同理網(wǎng)卡在modprobe.conf 或modules.conf中的內(nèi)容也是由網(wǎng)卡的配置工具而來(lái)的。
有些硬件是以內(nèi)核模塊的方式驅(qū)動(dòng)的,模塊一旦加載上就能用,也沒(méi)有什么配置工具,比如vfat 和ntfs 的支持;如果是硬件驅(qū)動(dòng)不以模塊的方式支持,而是直接編入內(nèi)核,也不會(huì)用在modprobe.conf 或 modules.conf 中加入什么內(nèi)容;
如果您有些模塊不能開(kāi)機(jī)加載,您想讓一些模塊加機(jī)自動(dòng)加載,就可以把modprobe 模塊 直接寫入配置文件;
2、內(nèi)核模塊其它配置文件
內(nèi)核模塊的其它配置文件還是需要了解的,比如 /lib/modules/內(nèi)核版本目錄下的幾個(gè)文件;了解一下就行;比如:
[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/
build misc modules.ccwmap modules.ieee1394map modules.isapnpmap modules.symbols source
kernel modules.alias modules.dep modules.inputmap modules.pcimap modules.usbmap
六、硬件驅(qū)動(dòng)在系統(tǒng)中的目錄;
硬件驅(qū)動(dòng)在內(nèi)核中以模塊支持的目錄;
硬件驅(qū)動(dòng)是必須由內(nèi)核支持的,無(wú)論是我們自己安裝驅(qū)動(dòng),還是內(nèi)核自帶的驅(qū)動(dòng)都是如此。硬件驅(qū)動(dòng)如果是以內(nèi)核模塊支持的,驅(qū)動(dòng)目錄位于: /lib/modules/內(nèi)核版本/kernel/目錄 或 /lib/modules/內(nèi)核版本/kernel/drivers 目錄中;
[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/kernel
arch crypto drivers fs lib net sound
注:只有驅(qū)動(dòng)在內(nèi)核中以模塊的方法支持,驅(qū)動(dòng)才位于 /lib/modules/相應(yīng)的目錄;如果是直接置入內(nèi)核的,不會(huì)出現(xiàn)在/lib/modules驅(qū)動(dòng)相關(guān)的目錄;
七、自己編譯驅(qū)動(dòng)的辦法;
如果是硬件廠商或者開(kāi)源社區(qū)提供的驅(qū)動(dòng)(沒(méi)有集成在內(nèi)核源碼中的),編譯驅(qū)動(dòng)過(guò)程一般是./configure ;make;make install ,有時(shí)程序不提供./configure ,我們可以make或make install ,或者執(zhí)行make;make install ;如果不能make install ,則需要我們自己復(fù)制.o或者.ko文件到 /lib/modules/內(nèi)核版本/kernel/目錄 或 /lib/modules/內(nèi)核版本/kernel/drivers 目錄中相應(yīng)的驅(qū)動(dòng)目錄;
這個(gè)還是自己嘗試吧,說(shuō)也說(shuō)不清楚,遇到問(wèn)題后就知道怎么弄了;具體的還是驅(qū)動(dòng)的REAME和INSTALL為準(zhǔn);
現(xiàn)在大多驅(qū)動(dòng)都是在編譯安裝時(shí),都自動(dòng)復(fù)制.o或.ko 文件到內(nèi)核模塊目錄,大多不用我們自己動(dòng)手復(fù)制過(guò)去。如果您嘗試編譯安裝聲卡驅(qū)動(dòng) alsa-drivers 就會(huì)明白我所說(shuō)的意思;
如果是我們通過(guò)重編內(nèi)核來(lái)解決驅(qū)動(dòng)問(wèn)題,可以查看/usr/src/目錄中的內(nèi)核源碼目錄中的 Documentation 的REAME ;所有的幫助文件都在那里;
后記:
內(nèi)核編譯對(duì)新手來(lái)說(shuō)是有點(diǎn)困難,我寫過(guò)類似的文檔也有好多篇,但是不是新手弟兄從中能學(xué)到點(diǎn)什么,我不太知道;畢竟我寫的文檔在內(nèi)核文件告訴一些基本的流程和注意的事項(xiàng);內(nèi)核的配置只有多實(shí)踐才能學(xué)會(huì),在配置內(nèi)核時(shí),要多看看幫助;
內(nèi)核模塊管理方面我在本文中已經(jīng)寫了一些,大體上就這些,如果想要知道更為詳細(xì)的,只能是自己看man 和--help了,我寫文檔也無(wú)非是查看這些東西,然后實(shí)踐再寫給大家;我能寫出來(lái),我想您的能力并不一定比我差,應(yīng)該超出我才對(duì);
相關(guān)文檔:
1、
《編譯內(nèi)核操作流程 ──為新手指南》
2、
《內(nèi)核管理概述》
3、
《用ALSA驅(qū)動(dòng)聲卡流程詳解》
4、
《Fedora / Redhat 軟件包管理指南》
5、
內(nèi)核主站:http://kernel.org


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/40529/showart_349105.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP