1. linux怎麼卸載驅動
Linux下大部分驅動都是以模塊方式載入到內核的,所以要刪除一個驅動,主要從模塊下手。所以首先要學會如何查看已經載入的模塊:
lsmod
第一列是模塊的名字,根據模塊名字往往可以猜出哪個模塊是你要刪除的驅動。如果對硬體不熟悉的話就要試著通過其他命令來找相關的信息。
比如我要刪除無線網卡的驅動,那麼我可以用:
lspci | grep less
lspci命令會列出所有PCI設備,而grep會找出返回結果中包含less的行。無線是Wireless,所以返回結果就會包含有我的無線網卡的信息,比如:
02:00.0 Network controller: Realtek Semiconctor Co., Ltd. RTL8192E Wireless LAN Controller (rev 01)
可以看出型號是RTL8192E,這個時候再用lsmod命令,查看有沒有與8192相關的模塊名就可以了。
找到模塊名字後(比如我的無線網卡叫做r8192e_pci)就可以用如下命令卸載模塊:
rmmod 模塊名
對於我的無線網卡就是rmmod r8192e_pci。這時候驅動就已經成功被卸載了,但是是臨時的,重啟又會重新載入,如果要永久卸載這個驅動的話還需要改一點東西。
在Ubuntu下進入/etc/modprobe.d目錄下(其他發行版會有些差別),編輯blacklist.conf文件,加入一行(一般加在最下面):
blacklist 模塊名
這樣就將你要刪的驅動加入了黑名單,以後就再也見不到它啦!: )
2. 如何刪除linux中的服務如web伺服器
使用RedHat光碟啟動,進入時選擇修復系統選項,他會提示你當前系統安裝的一些服務模塊,將這些模塊去掉,再進行修復就可以了,但是你卸載了Apache軟體一些依靠他的服務將被停止。
3. 如何卸載Linux上的snmp模塊
打開騰訊電腦管家——工具箱——軟體卸載
打開騰訊電腦管家——工具箱——清理垃圾
或者是找到文件夾,刪除或粉碎(可以用類似騰訊電腦管家的工具粉碎,打開騰訊電腦管家——工具箱——文件粉碎),同時清理下注冊表
4. linux系統C語言的nm是什麼意思
不是C語言吧?是森笑游系統命令。用來列舉object文件(比如編譯出的a.out)的symbols.
用法是:
nm [-a|--debug-syms] [-g|--extern-only]
[-B] [-C|--demangle[=style]] [-D|--dynamic]
[-S|--print-size] [-s|--print-armap]
[-A|-o|--print-file-name]
[-n|-v|--numeric-sort] [-p|--no-sort]
[-r|--reverse-sort] [--size-sort] [-u|--undefined-only]
[-t radix|--radix=radix] [-P|--portability]
[--target=bfdname] [-fformat|--format=format]
[--defined-only] [-l|--line-numbers] [--no-demangle]
[-V|--version] [-X 32_64] [--help] [objfile...]
具體而言,nm用來列出目標文件的符號清單。
如果沒有為nm命令升唯指出目標文件,則nm假定目標文件是a.out。下面列出該命令的任選項,大部分支持「-」開頭的短格式和「-「開頭的長格式。
-A、-o或--print-file-name:在找到的各個符號的名字前加上文件名,而不是在此文件的所有符號前只出現文件名一次。
例如nmlibtest.a的輸出如下:
CPThread.o:
00000068TMain__8CPThreadPv
00000038TStart__8CPThread
00000014T_._8CPThread
00000000T__8CPThread
00000000?__FRAME_BEGIN__
…………………………………
則nm-A的輸出如下:
libtest.a:CPThread.o:00000068TMain__8CPThreadPv
libtest.a:CPThread.o:00000038TStart__8CPThread
libtest.a:CPThread.o:00000014T_._8CPThread
libtest.a:CPThread.o:00000000T__8CPThread
libtest.a:CPThread.o:00000000?__FRAME_BEGIN__
…………………………………………………………..
-a或--debug-syms:顯示調試符號。
-B:等同於--format=bsd,用來兼容MIPS的nm。
-C或--demangle:將低級符號名解碼(demangle)成用戶級名字。這樣可以使得C 函數名具有可讀性。
-D或--dynamic:顯示動態符號。該任選項僅對於動態目標(例如特定類型的共享庫)有意義。
-fformat:使用format格式輸出。format可以選取bsd、sysv或posix,該選項在GNU的nm中有用。默認為bsd。
-g或--extern-only:僅顯示外部符號。
-n、-v或--numeric-sort:按符號對應地址的順序排序,而非按符號名的字元順序。
-p或--no-sort:按目標此銷文件中遇到的符號順序顯示,不排序。
-P或--portability:使用POSIX.2標准輸出格式代替默認的輸出格式。等同於使用任選項-fposix。
-s或--print-armap:當列出庫中成員的符號時,包含索引。索引的內容包含:哪些模塊包含哪些名字的映射。
-r或--reverse-sort:反轉排序的順序(例如,升序變為降序)。
--size-sort:按大小排列符號順序。該大小是按照一個符號的值與它下一個符號的值進行計算的。
-tradix或--radix=radix:使用radix進制顯示符號值。radix只能為「d」表示十進制、「o」表示八進制或「x」表示十六進制。
--target=bfdname:指定一個目標代碼的格式,而非使用系統的默認格式。
-u或--undefined-only:僅顯示沒有定義的符號(那些外部符號)。
-l或--line-numbers:對每個符號,使用調試信息來試圖找到文件名和行號。對於已定義的符號,查找符號地址的行號。對於未定義符號,查找指向符號重定位入口的行號。如果可以找到行號信息,顯示在符號信息之後。
-V或--version:顯示nm的版本號。
--help:顯示nm的任選項。
ar cs libmy.a//創建一個庫
ar rs libmy.a 1.o//增加一個模塊
ar t libmy.a//顯示庫里的模塊
ar d libmy.a 1.o//刪除一個模塊
5. 怎麼查看linux下的模塊,很多命令的介紹
1、lsmod 列加以掛載的內核模塊;
lsmod 是列出目前系統中已載入的模塊的名稱及大小等;另外我們還可以查看 /proc/moles ,我們一樣可以知道系統已經載入的模塊;
代碼:
[root@localhost beinan]# lsmod
2、modinfo 查看模塊信息;
modinfo 可以查看模塊的信息,通過查看模塊信息來判定這個模塊的用途;
代碼:
[root@localhost beinan]# moinfo 模塊名
舉例:
代碼:
[root@localhost beinan]# modinfo ne2k-pcifilename: /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/ne2k-pci.koauthor: Donald Becker / Paul Gortmakerdescription: PCI NE2000 clone driverlicense: GPLparmtype: debug:intparmtype: options:array of intparmtype: full_plex:array of intparm: debug:debug level (1-2)parm: options:Bit 5: full plexparm: full_plex:full plex setting(s) (1)vermagic: 2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0depends: 8390alias: 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 這個模塊的信息,通過查看,我們知道ne2k-pci 模塊是8029網卡(PCI NE2000 clone driver)的驅動;模塊是位於 /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/ 中ne2k-pci.ko
我們現在常用的網卡也有8139的,8139網卡所用的驅動是 8139too ;查查看?
代碼:
[root@localhost beinan]# modinfo 8139too
我們再查查vfat 和ntfs 的模塊信息;
代碼:
[root@localhost beinan]# modinfo vfat[root@localhost beinan]# modinfo ntfs
自己嘗試一下;
注意: 模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
3、modprobe 掛載新模塊以及新模塊相依賴的模塊
modprobe 我們常用的功能就是掛載模塊,在掛載某個內核模塊的同時,這個模塊所依賴的模塊也被同時掛載;當然modprobe 也有列出內核所有模塊,還有移除模塊的功能;下在我們舉個例子說一說咱們常用的功能和參數;
代碼:
modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ] [parameters...]
modprobe -r [-n] [-i] [-v] ...
modprobe -l -t [ -a ...]
上面是modprobe 的用法,具體更為詳細的幫助,我們可以查看 man modprobe ;
代碼:
[root@localhost beinan]# modprobe -c
modprobe -c 可以查看moles 的配置文件,比如模塊的別名是什麼等;
代碼:
[root@localhost beinan]# modprobe -l
modprobe -l 是列出內核中所有的模塊,包括已掛載和未掛載的;通過modprobe -l ,我們能查看到我們所需要的模塊,然後根據我們的需要來掛載;其實modprobe -l 讀取的模塊列表就位於 /lib/moles/'uname -r' 目錄中;其中uname -r 是內核的版本;
代碼:
[root@localhost beinan]# uname -r2.6.11-1.1369_FC4[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/
通過上面的命令,自己試試看?
代碼:
[root@localhost beinan]# modprobe 模塊名 註:掛載一個模塊;
舉例:
代碼:
[root@localhost beinan]# modprobe ne2k-pci 註:掛載 ne2k-pci 模塊;[root@localhost beinan]# modprobe vfat 註:掛載vfat 模塊[root@localhost beinan]# modprobe ntfs 註:掛載ntfs 模塊[root@localhost beinan]# lsmod 註:列出已掛載模塊, 我們會看到ne2k-pci ,vfat ,ntfs的模塊 ;
注意: 模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
代碼:
[root@localhost beinan]# modprobe -r 模塊名 註:移除已載入的模塊,和rmmod 功能相同;
注意:模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
代碼:
[root@localhost beinan]# modprobe -r 模塊名
舉例:
代碼:
[root@localhost beinan]# modprobe -r ne2k-pci
就說這么多吧,更為詳細的還是用 man modprobe 來查看和嘗試;
4、rmmod 移除已掛載模塊;
命令格式:
代碼:
rmmod 模塊名
注意: 模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
舉例:
代碼:
[root@localhost beinan]# rmmod vfat 註:移除已掛載的模塊vfat
5、depmod 創建模塊依賴關系的列表
這 個模塊管理工具是創建模塊依賴關系的列表,有幾個參數我們注意一下就行了,目前的的Linux 發行版所用的內核是2.6x版本,是自動解決依賴關系,所以這個命令知道就行了;模塊之前也有依賴關系,比如我們想驅動USB 移動硬碟,目前有兩種驅動,一種是udev ,在內核中有,但目前不太穩定;另一種辦法是用usb-storage驅動,而usb-storage 依賴的模塊是scsi 模塊,所以我們要用usb-storage 的模塊,也得把scsi 編譯安裝;
再 舉個例子:sata的硬碟,在Linux中的設備表示的是/dev/sd* ,比如 /dev/sda,/dev/sdb 等... 系統要驅動 sata硬碟,則需要把sata在內核中選中,或編譯成模塊,或內置於內核之中,在此同時,還需要在內核中選中ide ,scsi 的支持等;
depmod 工具的洋文原意:depmod — program to generate moles.dep and map files.(我譯的:為moles.dep 文件或映射文件創建依賴關系)
代碼:
[root@localhost beinan]# depmod -a 註:為所有列在/etc/modprobe.conf 或/etc/moles.conf 中的所有模塊創建依賴關系,並且寫入到moles.dep文件;[root@localhost beinan]# depmod -e 註:列出已掛載但不可用的模塊;[root@localhost beinan]# depmod -n 註:列出所有模塊的依賴關系,但僅僅是輸出出來 (Write the dependency file on stdout only)
註:moles.dep 位於 /lib/moles/內核版本 目錄
比如 Fedora Core 4.0 中,系統默認的內核:
代碼:
[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/moles.dep/lib/moles/2.6.11-1.1369_FC4/moles.dep
6、insmod 掛載模塊;
insmod 這個工具,和modprobe 有點類似,但功能上沒有modprobe 強,modprobe 在掛載模塊是不用指定模塊文件的路徑,也不用帶文件的後綴.o 或.ko ;而insmod 需要的是模塊的所在目錄的絕對路徑,並且一定要帶有模塊文件名後綴的(molefile.o 或molesfile.ko );
對於這個工具,我們只是介紹一下, 並不推薦使用。因為模塊有依賴關系,對於新手來說,可能不知道這個模塊依賴和哪個模塊依賴;
舉例:
代碼:
[root@localhost beinan]# insmod /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/tg3.ko
我們要到 /lib/moles/內核版本 uname -r 的命令輸出/kernel/drivers 中找相對應的模塊才行,要有絕對路徑,而且必須要用到文件名的全稱,不能把文件名的後綴省略;
四、與內核模塊載入相關的配置文件;
1、模塊的配置文件 moles.conf 或 modprobe.conf
內 核模塊的開機自動掛載模塊一般是位於一個配置文件,一般的Linux發行版本都有 /etc/moles.conf 或 /etc/modprobe.conf 。比如Fedora Core 4.0 內核模塊開機自動載入文件是 /etc/modprobe.conf ;在這個文件中,一般是寫入模塊的載入命令或模塊的別名的定義等;比如我們在moles.conf 中可能會發行類似的一行 ;
代碼:
alias eth0 8139too
而8029的網卡應該是
代碼:
alias eth0 ne2k-pci
這樣系統啟動的時候,首先會modprobe 8139too ,然後再為8139too 指定別名為 eth0,然後我們在登錄的時候,用 ifconfig 就會查看到網卡的IP 等情況,當然您得為網卡設置IP 才行;
一 般的情況下,modproe.conf 或moles.conf的內容 是我們用相應的硬體配置工具而生成的;如果您的硬體驅動是沒有被內核支持,您自己到硬體的廠商下載而來的驅動。一般的情況下都有安裝和幫助文件。他們的驅 動在配置時,他會寫入硬體的支持到moles.conf 或modprobe.conf 文件中。
再比如我們的音效卡在moles.conf 或modprobe.conf 中也有相應的內容,這是由alsaconf 配置工具生成的,明白了吧;同理網卡在modprobe.conf 或moles.conf中的內容也是由網卡的配置工具而來的。
有些硬體是以內核模塊的方式驅動的,模塊一旦載入上就能用,也沒有什麼配置工具,比如vfat 和ntfs 的支持;如果是硬體驅動不以模塊的方式支持,而是直接編入內核,也不會用在modprobe.conf 或 moles.conf 中加入什麼內容;
如果您有些模塊不能開機載入,您想讓一些模塊加機自動載入,就可以把modprobe 模塊 直接寫入配置文件;
2、內核模塊其它配置文件
內核模塊的其它配置文件還是需要了解的,比如 /lib/moles/內核版本目錄下的幾個文件;了解一下就行;比如:
代碼:
[root@localhost beinan]# uname -r2.6.11-1.1369_FC4[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/build misc moles.ccwmap moles.ieee1394map moles.isapnpmap moles.symbols sourcekernel moles.alias moles.dep moles.inputmap moles.pcimap moles.usbmap
五、硬體驅動在系統中的目錄;
硬體驅動在內核中以模塊支持的目錄;
硬 件驅動是必須由內核支持的,無論是我們自己安裝驅動,還是內核自帶的驅動都是如此。硬體驅動如果是以內核模塊支持的,驅動目錄位於: /lib/moles/內核版本/kernel/目錄 或 /lib/moles/內核版本/kernel/drivers 目錄中;
代碼:
[root@localhost beinan]# uname -r2.6.11-1.1369_FC4[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/kernelarch crypto drivers fs lib net sound
註:只有驅動在內核中以模塊的方法支持,驅動才位於 /lib/moles/相應的目錄;如果是直接置入內核的,不會出現在/lib/moles驅動相關的目錄;
六、自己編譯驅動的辦法;
通 過源碼編譯驅動一般是./configure ;make;make install ,有時程序不提供./configure ,我們可以make或make install ,或者執行make;make install ;如果不能make install ,則需要我們自己復制.o或者.ko文件到 /lib/moles/內核版本/kernel/目錄 或 /lib/moles/內核版本/kernel/drivers 目錄中相應的驅動目錄;
這個還是自己嘗試吧,說也說不清楚,遇到問題後就知道怎麼弄了;具體的還是驅動的REAME和INSTALL為准;
現在大多驅動都是在編譯安裝時,都自動復制.o或.ko 文件到內核模塊目錄,大多不用我們自己動手復制過去。如果您嘗試編譯安裝音效卡驅動 alsa-drivers 就會明白我所說的意思。
6. 如何刪除linux舊內核
在刪除舊內核之前,記住最好留有2個最近的內核(最新的和上一個版本),以防主要的版本出錯。現在就讓我們看看如何在Ubuntu上清理舊內核。在Ubuntu內核鏡像包含了以下的包。
linux-image-: 內核鏡像
linux-image-extra-: 額外的內核模塊
linux-headers-: 內核頭文件
首先檢查系統中安裝的內核鏡像。
$ dpkg --list | grep linux-image
$ dpkg --list | grep linux-headers
在列出的內核鏡像中,你可以移除一個特定的版本(比如3.19.0-15)。
$ sudo apt-get purge linux-image-3.19.0-15
$ sudo apt-get purge linux-headers-3.19.0-15
上面的命令會刪除內核鏡像和它相關聯的內核模塊和頭文件。
注意如果你還沒有升級內核那麼刪除舊內核會自動觸發安裝新內核。這樣在刪除舊內核之後,GRUB配置會自動升級來移除GRUB菜單中相關GRUB入口。
如果你有很多沒用的內核,你可以用shell表達式來一次性地刪除多個內核。注意這個括弧表達式只在bash或者兼容的shell中才有效。
$ sudo apt-get purge linux-image-3.19.0-{18,20,21,25}
$ sudo apt-get purge linux-headers-3.19.0-{18,20,21,25}
上面的命令會刪除4個內核鏡像:3.19.0-18、3.19.0-20、3.19.0-21 和 3.19.0-25。
如果GRUB配置由於任何原因在刪除舊內核後沒有正確升級,你可以嘗試手動用update-grub2命令來更新配置。
$ sudo update-grub2
現在就重啟來驗證GRUB菜單是否已經正確清理了。
7. LINUX模塊問題
你先輸入 export LANG=en_US.utf8 之後再編譯,輸出的東西多貼幾行。
你現在的錯誤提示沒有顯示完全,那個 ???????? 應該是中文輸出。但是你的機器沒顯示出來。
------------
還是「 ???? 」???
你怎麼編譯的?開 X 圖形,用支持中文的終端編譯。
要麼試試 export LANG=POSIX 再編譯試試。
另外,你去你的內核代碼目錄看看有沒有 version.h 這個文件,我記得改過一次位置。
或者你的編譯命令行語法有問題。
我用前面的代碼嘗試編譯了一下(我的內核是 i686 + 2.6.25 )
沒有提示 version.h 的錯誤(槐灶當然有別的錯誤……版本差的太大,架構也不一樣)
命令行: gcc gcc -DMODULE -O2 -g -Wall -I /usr/src/linux/include c.c
-------------------
#include 不是這么改的……
而且這個提示不是你的代碼引用的 version.h ,而是你的代碼引用的 header 文件的再引用。
而且這個提示根本就不是找不到你的 /usr/include/linux/version.h 文件而是你的交叉編譯環境自帶的 version.h !(/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../arm-linux/sys-include/linux/mole.h,也就是/usr/local/arm/2.95.3/lib/arm-linux/sys-include/linux/mole.h)
你現在已經把編譯環境搞混亂了。除非你現在用的是一台 arm CPU 的機器不然你這個編譯肯定有錯!
----------------------
看樣子你的系統根本就沒有編譯鉛橡扮 arm 代碼的環境。
請你確定你到底想要干什麼。想怎麼干。有沒有準備基礎環境。
如果你剛開始學,請先補習相關的編譯知識。
----------------------
你的編譯環境有問題,建議干凈安裝一個新的系統。之後重新搭建一個編譯環境。
編寫驅動是一個事情,編譯驅動是另一個事情。
建議你先看看編譯的一些文章。
http://dirac.org/linux/writing/lkmpg/2.6/chinese/lkmpg_chs/#AEN148
這個鏈接是最簡單的一個內核模塊外加編譯的說明,你看看吧。
你可以先在本機針對本機編譯一下試試。
arm 是嵌入式設備的 CPU 架構,他與桌面的 x86 架構不兼容,你如果為這個架構編寫如虧驅動程序,必須使用 arm 編譯架構進行編譯。
交叉編譯需要一套完整的環境,至少有 arm-linux-gcc 編譯器,這個 gcc 可以編譯出來 arm 可以運行的代碼。一個配套的 make 編譯控制環境,有的時候本機自帶的 make 就能用。一個 libc 基礎庫。一般為 glibc ,但也有用 uclibc 的。一個 binutils 工具,還有一個已經為 arm 設置後且預編譯的 kernel 。
8. 如何查看Linux載入內置模塊的信息
一、找出內置模塊列表
要得到內置模塊列表,運行下面的命令。
$
cat
/lib/巧仿moles/$(uname
-r)/moles.builtin
你也可以用下面的命令來查看有哪些內置模塊:
二、找出內置模塊參數
每個內核模塊無論是內置的還是可載入的都有一系列的參數。對於可載入模塊,modinfo命令可以顯示它們的參數信息。然而這廳畢個命令對內置模塊沒有用。你會得到下面的錯誤。
modinfo:
ERROR:
Mole
XXXXXX
not
found.
如果你想要查看內置模塊的參數,以及它們的值,你可以在
/sys/mole
下檢查它們的內容。
在
/sys/mole目錄下,你可以找到內核模塊(包含內置和可載入的孝伏纖)命名的子目錄。進入每個模塊目錄,這里有個「parameters」目錄,列出了這個模塊所有的參數。
比如你要找出tcp_cubic(內核默認的TCP實現)模塊的參數。你可以這么做:
$
ls
/sys/mole/tcp_cubic/parameters
接著閱讀這個文件查看每個參數的值。
$
cat
/sys/mole/tcp_cubic/parameters/tcp_friendliness
以上就是Linux查看內置模塊的信息的方法了,這樣我們就可以知道Linux安裝了哪些內置模塊,還可以把沒用的模塊刪除掉,減輕系統的負擔。
9. linux下的root用戶執行rm -rf /命令會被執行嗎謝謝
不會,因為root雖然御芹賣很大鎮逗權利,首孝但重要文件屬主,是sys和不能寫。你就刪除不了。-f只是不提示而已。
雖然刪除不了,但下次重啟你已經重啟不了了。
10. linux內核模塊那一部分 我用命令cat /proc/devices 看到裡面有個設備號為250的hello結點,現在我想刪除它
rmmod hello就行敗芹
不是每個都有對應的節點文轎枯閉件,如果需要閉裂得自己創建
mknod hello0 c 250 0