1. 程式人生 > >linux模組載入和模組解除安裝時出現的問題

linux模組載入和模組解除安裝時出現的問題

在編寫驅動程式的時候有時候會出現這種情況,模組載入之後不能解除安裝或解除安裝之後不能在載入,cat /proc/devices 後發現裝置還佔用著裝置號,這種情況下,再次載入驅動模組肯定不會成功,必須重新啟動才可以解決。最近仔細看書後發現自己在驅動程式的解除安裝函式中少寫了兩個函式呼叫,以至於在載入模組的時候申請或新增的裝置沒有被釋放或刪除。

解決方案:
第一步、在/lib/modules/目錄中建立與當前核心版本號一致的目錄 如 uname -r 得到 2.6.31.6則mkdir -p /lib/modules/2.6.31.6 否則會出現“rmmod: chdir(2.6.31.6): No such file or directory”類似的錯誤,而模組也沒有被解除安裝;

第二步、在驅動模組解除安裝函式__exit中的cdev_del(struct cdev *)函式呼叫後即登出字元裝置後呼叫 unregister_chrdev_region(dev_t devno,  unsigned count)函式釋放在驅動載入函式__init中通過register_chrdev_region、alloc_chrdev_region,註冊的主裝置號。(cdev_del函式、unregister_chrdev_region函式缺一不可);

經過以上兩步操作後,rmmod 模組名稱 解除安裝模組就不會錯誤了,而且cat /proc/devices也不會再有已經解除安裝的模組的資訊,這樣再次載入模組也不會出錯了!

相關推薦

linux模組載入模組解除安裝出現的問題

在編寫驅動程式的時候有時候會出現這種情況,模組載入之後不能解除安裝或解除安裝之後不能在載入,cat /proc/devices 後發現裝置還佔用著裝置號,這種情況下,再次載入驅動模組肯定不會成功,必須重新啟動才可以解決。最近仔細看書後發現自己在驅動程式的解除安裝函式中少寫了兩個函式呼叫,以至於在載入模組的時候

Python 模組解除安裝__del__的行為

本節我們只討論一種情況:將某模組解除安裝時,如果某全域性變數含有__del__成員函式,其行為是怎樣的。 廢話少說,先上程式碼: #-*- encoding: utf-8 -*- import sys class Test(object): testCount

解除安裝彈出啟動c program出現問題 找不到制定的模組

可以按照如下方法進行解決:點選“開始”----“所有程式”----“附件”----“執行”,鍵入cmd。回車。執行命令:sfc /scannow。  windows會自動對系統檔案進行全面掃描,然後修復受損檔案,完成後重新啟動系統即可,或者也可以自行查詢在c"\progra

odoo快取載入,資料庫,解除安裝模組

odoo能把裝過模組自動載入進快取,所有有些改動沒效果 資料庫名字重複會報找不到模組物件,或者建立表不成功 模組名字重複建立表也會不成功 解除安裝模組不能在後臺直接把模組刪了,odoo資料庫會記錄

Linux動態載入核心模組出現問題

 在linux系統中安裝ko檔案時,系統報錯: altera_cvp:module verification failed : signature and/or required key missing - tainting kernel 一來一去問了幾個在linux上進

Linux(Ubuntu)安裝完美解除安裝PHP7詳細教程

一、安裝 我第一次安裝php的時候沒有安裝apache的php模組,結果apache不能解析php檔案,訪問檔案顯示的是原始碼。 一個命令搞定:安裝php7和apache的php7模組: apt-get install php7.0 libapache2-

[Python模組學習]使用linecache模組載入快取檔案內容

linecache模組 接觸到linecache這個模組是因為前兩天讀attrs原始碼的時候看到內部程式碼引用了這個模組來模擬一個假檔案,帶著一臉疑問順便讀了一下這個模組的原始碼,發現其實也就那麼回事兒,程式碼不多,在這總結一下。 linecache模組可以

SeaJS簡介三:模組載入引用

       之前對模組有過介紹,一個模組對應一個js檔案,而載入模組時一般都是提供一個字串引數告訴載入函式需要的模組,所以就需要有一套從字串標識到實際模組所在檔案路徑的解析演算法。SeaJS支援如下幾

Linux(Ubuntu)安裝完美解除安裝Apache詳細教程配置多域名、埠對映

Linux(Ubuntu)安裝,解除安裝Apache詳細教程 第一種方法–軟體包安裝(簡單便捷) sudo apt-get update sudo apt-get install apache2 這樣安裝的話: apache2的檔案: /e

Linux 自動載入驅動模組(.ko檔案)

以wctdmxxp.ko為例 wctdmxxp.ko需要依賴dahdi_voicebus.ko 一、手動載入: insmod  dahdi_voicebus.ko insmod  wctdmxxp.ko 二、自動載入 1、把wctdmxxp.ko和dahdi_voicebu

Linux載入核心模組(LKM)(轉載)

轉載: 漏天劍 Linux可載入核心模組(LKM) Linux可載入核心模組完全版 --黑客、病毒程式編寫者和系統管理員的概念性指南 作者:pragmatic/THC 版本:1.0 釋出時間:03/1999/ 譯者:[email protected] I.基

Linux載入核心模組(LKM)

轉載自http://blog.csdn.net/zhaqiwen/article/details/8288472 I.基礎知識 1.什麼是LKM  2.什麼是系統呼叫 3.什麼是核心符號表 4.如何進行核心與使用者空間記憶體資料的交換 5.使用使用者空間的

linux mount使用rpm包安裝

linux 虛擬機 工具欄 光盤 光驅 如果是物理真機(非虛擬機),放入光盤後系統會自動加載,可以通過命令“mount”查看系統掛載情況,然後繼續用命令“mount"去實現其它的掛載任務(即 新增掛載);如果是虛擬機,需要情況也差不多,操作示例如下:第一步:加載DVD光盤(相當於把DVD光

Linux下Tclexpect 的安裝

背景介紹:          因搭建遊戲中心的測試環境,需要安裝兩個程式tcl8.4.13-src.tar.gz、expect-5.43.0.tar.gz    安裝方法:    &n

CentOs系統自帶pythonyum解除安裝後的解決辦法

事故背景:前幾天因專案需要,在伺服器上搭建python-mysql模組,結果沒安裝好,於是乎想解除安裝重灌,遂在網上查詢解除安裝python的方法,結果一不小心直接把系統的python刪了個乾淨.......... 現在只能含淚修復,博主在網上搜了一圈辦法,基本上都不是那麼的詳細,現在記下這一方法,希望能幫

ubuntu下apt-get安裝徹底解除安裝mysql

1、安裝mysql: sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install php5-mysql(用於連線php和mysql) 檢視mysql是否執行 ps aux |

在Windows上如何安裝徹底解除安裝Adobe Flash Player教程

很多小夥伴在安裝水晶易表的時候,經常會遇到“Xcelsius2008需要使用Adobe Flash Player(9.151或者更高版本)”報錯問題,如下圖所示。 導致安裝程序受阻,此時就需要安裝高版本的Adobe Flash Player。從網站上下載Adobe Flash Player,然後開始

linux wdcp 雲鎖無法解除安裝Permission denied

執行命令 echo y|/usr/local/yunsuo_agent/uninstall 解除安裝,出現 Permission denied。 通過rm命令也無法刪除,lsattr檢查許可權也正常。 通過https://www.lhbbk.com/archives/96/發

Linux中TomcatJboss的安裝部署

Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 專案中的一個核心專案,由Apache、Sun 和其他一些公司及個人共同開發而成。因為Tomcat 技術先進、效能穩定,而且免費,因而深受Java 愛好者的喜愛並得到

vs2013在解除安裝出現安裝錯誤devenv.exe

  [3DCC:0CD4][2018-10-10T19:23:13]i001: Burn v3.7.2002.0, Windows v6.3 (Build 9600: Service Pack 0), path: C:\ProgramData\Package Cache\{4d78