精华内容
下载资源
问答
  • 今天记录一下简单的Linux驱动程序怎么写以及如何加载/卸载驱动以hello.c为例:hello.c#ifndef __KERNEL__# define __KERNEL__#endif#ifndef MODULE# define MODULE#endif#include #include #include MODULE_LICENSE...

    今天记录一下简单的Linux驱动程序怎么写以及如何加载/卸载驱动

    以hello.c为例:

    hello.c

    #ifndef __KERNEL__

    # define __KERNEL__

    #endif

    #ifndef MODULE

    # define MODULE

    #endif

    #include

    #include

    #include

    MODULE_LICENSE("Dual BSD/GPL");

    static int hello_init(void){

    printk(KERN_ALERT "HELLO WORLD\n");

    return 0;

    }

    static void hello_exit(void){

    printk(KERN_ALERT "GOODBYE CRUEL WORLD\n");

    }

    module_init(hello_init);

    module_exit(hello_exit);

    /*

    3.5.0-23-generic

    make -C /lib/modules/3.5.0-23-generic/build M=`pwd` modules

    */

    用Makefile来编译:

    Makefile

    obj-m :=hello.o

    all :

    $(MAKE)-C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

    clean:

    $(MAKE)-C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

    以下终端是编译命令,下图所示编译成功:

    加载和移除驱动:

    sudo insmod ./hello.ko

    sudo rmmod hello

    查看日志

    tail /var/log/kern.log

    参考博客https://www.cnblogs.com/QuLory/archive/2012/10/23/2736339.html

    展开全文
  • linux加载/卸载驱动有两种方法。1.modprobe注:在使用这个命令加载模块前先使用depmod -a命令生成modules.dep文件,该文件位于/lib/modules/$(uname -r)目录下;modprobe命令智能地向内核中加载模块或者从内核中移除...

    linux加载/卸载驱动有两种方法。

    1.modprobe

    注:在使用这个命令加载模块前先使用depmod -a命令生成modules.dep文件,该文件位于/lib/modules/$(uname -r)目录下;

    modprobe命令智能地向内核中加载模块或者从内核中移除模块,可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的依赖关系,决定要载入哪些模块。若在载入过程中出错,modprobe会卸载整组的模块。

    载入模块的命令:

    (1) 载入指定的模块:modprobe drv.ko

    (2) 载入全部模块:modprobe -a

    卸载模块的命令:modprobe -r drv.ko

    modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。

    modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

    选项

    -a或--all:载入全部的模块;

    -c或--show-conf:显示所有模块的设置信息;

    -d或--debug:使用排错模式;

    -l或--list:显示可用的模块;

    -r或--remove:模块闲置不用时,即自动卸载模块;

    -t或--type:指定模块类型;

    -v或--verbose:执行时显示详细的信息;

    -V或--version:显示版本信息;

    -help:显示帮助。

    参数                模块名:要加载或移除的模块名称。

    实例

    查看modules的配置文件:

    modprobe -c

    这里,可以查看modules的配置文件,比如模块的alias别名是什么等。会打印许多行信息,例如其中的一行会类似如下:

    alias symbol:ip_conntrack_unregister_notifier ip_conntrack

    列出内核中所有已经或者未挂载的所有模块:

    modprobe -l

    这里,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;其实modprobe -l读取的模块列表就位于/lib/modules/`uname -r`目录中;其中uname -r是内核的版本,例如输出结果的其中一行是:

    /lib/modules/2.6.18-348.6.1.el5/kernel/net/netfilter/xt_statistic.ko

    挂载vfat模块:

    modprobe vfat

    这里,使用格式modprobe 模块名来挂载一个模块。挂载之后,用lsmod可以查看已经挂载的模块。模块名是不能带有后缀的,我们通过modprobe -l所看到的模块,都是带有.ko或.o后缀。

    移除已经加载的模块:

    modprobe -r 模块名

    这里,移除已加载的模块,和rmmod功能相同。

    2. insmod/rmmod

    insmod需要指定模块的绝对路径,和modprobe不同,insmod并且不会把载入模块的依赖模块也载入进来。

    用法:insmod drv.ko

    rmmod只需要模块的名字即可实现模块的卸载,同样也不会把待卸载模块的依赖模块进行卸载。

    用法:rmmod drv.ko

    lsmod:显示已载入系统的模块

    insmod(install module)

    功能说明:载入模块 install loadable kernel module

    语法:insmod [-fkmpsvxX][-o ][模块文件][符号名称 = 符号值]

    参数:

    -f  不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。

    -k  将模块设置为自动卸除。

    -m  输出模块的载入信息。

    -o    指定模块的名称,可使用模块文件的文件名。

    -p  测试模块是否能正确地载入kernel。

    -s  将所有信息记录在系统记录文件中。

    -v  执行时显示详细的信息。

    -x  不要汇出模块的外部符号。

    -X  汇出模块所有的外部符号,此为预设置。

    使用说明:Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。

    insmod命令主要用于在Linux 2.4内核之前加载Linux内核模块命令。对于通过此命令加载的Linux内核模块,系统不仅不会自动解决内核模块之间的依赖关系,而且还要求将模块路径写详细。所以在Linux 2.6内核出现时,此命令已渐渐被遗忘。

    加载RAID1阵列级别模块,如下所示:

    [root@rhel5 boot]# insmod /lib/modules/2.6.

    18-8.el5/kernel/drivers/md/raid1.ko

    [root@rhel5 boot]# lsmod |grep raid1

    raid1                  25153  0

    从以上显示结果可知,RAID1模块已加载成功。只是在使用insmod命令加载模块时,需要使用绝对路径方能加载,且加载时无法自动解决依赖关系。

    扩展阅读:insmod 和modprobe的区别

    insmod 与 modprobe 都是载入 kernel module,不过一般差别于 modprobe 能够处理 module 载入的相依问题。

    比方你要载入 a module,但是 a module 要求系统先载入 b module 时,直接用 insmod 挂入通常都会出现错误讯息,不过 modprobe 倒是能够知道先载入 b module  后才载入 a module,如此相依性就会满足。

    不过 modprobe 并不是大神,不会厉害到知道 module 之间的相依性为何,该程式是读取 /lib/modules/2.6.xx/modules.dep 档案得知相依性的。而该档案是透过 depmod 程式所建立。

    展开全文
  • UOS卸载核显驱动

    2021-09-06 18:33:57
    UOS卸载核显驱动 用modinfo smifb命令列出集显模块的路径,第一行为模块的路径 modinfo smifb 删除模块的路径 sudo rm /lib/modules/4.19.0-arm64-desktop/kernel/drivers/gpu/drm/smi/smifb.ko sudo update-...

    UOS卸载核显驱动

    modinfo smifb命令列出集显模块的路径,第一行为模块的路径

    modinfo smifb
    

    在这里插入图片描述
    删除模块的路径

    sudo rm /lib/modules/4.19.0-arm64-desktop/kernel/drivers/gpu/drm/smi/smifb.ko
    sudo update-initramfs -uk all
    

    重启系统完成卸载

    展开全文
  • 原标题:如何在Linux上安装设备驱动程序 学习 Linux 设备驱动如何工作,并知道如何使用它们。对于一个熟悉 Windows 或者 MacOS 的人,想要切换到 Linux,它们都会面临一个艰巨的问题就是怎么安装和配置设备驱动。这...

    原标题:如何在Linux上安装设备驱动程序

    319640d1308f4b57aa89cecd14d5f364.png

    学习 Linux 设备驱动如何工作,并知道如何使用它们。

    对于一个熟悉 Windows 或者 MacOS 的人,想要切换到 Linux,它们都会面临一个艰巨的问题就是怎么安装和配置设备驱动。这是可以理解的,因为 Windows 和 MacOS 都有一套机制把这个过程做得非常的友好。比如说,当你插入一个新的硬件设备, Windows 能够自动检测并会弹出一个窗口询问你是否要继续驱动程序的安装。你也可以从网络上下载驱动程序,仅仅需要双击解压或者是通过设备管理器导入驱动程序即可。

    而这在 Linux 操作系统上并非这么简单。第一个原因是, Linux 是一个开源的操作系统,所以有 数百种 Linux 发行版的变体。也就是说不可能做一个指南来适应所有的 Linux 发行版。因为每种 Linux 安装驱动程序的过程都有差异。

    第二,大多数默认的 Linux 驱动程序也都是开源的,并被集成到了系统中,这使得安装一些并未包含的驱动程序变得非常复杂,即使已经可以检测大多数的硬件设备。第三,不同发行版的许可也有差异。例如,Fedora 禁止事项 禁止包含专有的、受法律保护,或者是违反美国法律的驱动程序。而 Ubuntu 则让用户避免使用受法律保护或闭源的硬件设备。

    为了更好的学习 Linux 驱动程序是如何工作的,我建议阅读 《Linux 设备驱动程序》一书中的 设备驱动程序简介。

    两种方式来寻找驱动程序

    1、 用户界面

    如果是一个刚从 Windows 或 MacOS 转过来的 Linux 新手,那你会很高兴知道 Linux 也提供了一个通过向导式的程序来查看驱动程序是否可用的方法。 Ubuntu 提供了一个 附加驱动程序 选项。其它的 Linux 发行版也提供了帮助程序,像 GNOME 的包管理器,你可以使用它来检查驱动程序是否可用。

    2、 命令行

    如果你通过漂亮的用户界面没有找到驱动程序,那又该怎么办呢?或许你只能通过没有任何图形界面的 shell?甚至你可以使用控制台来展现你的技能。你有两个选择:

    通过一个仓库

    这和 MacOS 中的 homebrew 命令行很像。通过使用 yum、 dnf、apt-get 等等。你基本可以通过添加仓库,并更新包缓存。

    下载、编译,然后自己构建

    这通常包括直接从网络,或通过 wget 命令下载源码包,然后运行配置和编译、安装。这超出了本文的范围,但是你可以在网络上找到很多在线指南,如果你选择的是这条路的话。

    检查是否已经安装了这个驱动程序

    在进一步学习安装 Linux 驱动程序之前,让我们来学习几条命令,用来检测驱动程序是否已经在你的系统上可用。

    lspci 命令显示了系统上所有 PCI 总线和设备驱动程序的详细信息。

    $ lscpci

    或者使用 grep:

    $ lscpci | grep SOME_DRIVER_KEYWORD

    例如,你可以使用 lspci | grep SAMSUNG 命令,如果你想知道是否安装过三星的驱动。

    dmesg 命令显示了所有内核识别的驱动程序。

    $ dmesg

    或配合 grep 使用:

    $ dmesg | grep SOME_DRIVER_KEYWORD

    任何识别到的驱动程序都会显示在结果中。

    如果通过 dmesg 或者 lscpi 命令没有识别到任何驱动程序,尝试下这两个命令,看看驱动程序至少是否加载到硬盘。

    $ /sbin/lsmod

    $ find /lib/modules

    技巧:和 lspci 或 dmesg 一样,通过在上面的命令后面加上 | grep 来过滤结果。

    如果一个驱动程序已经被识别到了,但是通过 lscpi 或 dmesg 并没有找到,这意味着驱动程序已经存在于硬盘上,但是并没有加载到内核中,这种情况,你可以通过 modprobe 命令来加载这个模块。

    $ sudo modprobe MODULE_NAME

    使用 sudo 来运行这个命令,因为这个模块要使用 root 权限来安装。

    添加仓库并安装

    可以通过 yum、dnf 和 apt-get 几种不同的方式来添加一个仓库;一个个介绍完它们并不在本文的范围。简单一点来说,这个示例将会使用 apt-get ,但是这个命令和其它的几个都是很类似的。

    1、删除存在的仓库,如果它存在

    $ sudo apt-get purge NAME_OF_DRIVER*

    其中 NAME_OF_DRIVER 是你的驱动程序的可能的名称。你还可以将模式匹配加到正则表达式中来进一步过滤。

    2、将仓库加入到仓库表中,这应该在驱动程序指南中有指定

    $ sudo add-apt-repository REPOLIST_OF_DRIVER

    其中 REPOLIST_OF_DRIVER 应该从驱动文档中有指定(例如:epel-list)。

    3、更新仓库列表

    $ sudo apt-get update

    4、安装驱动程序

    $ sudo apt-get install NAME_OF_DRIVER

    5、检查安装状态

    像上面说的一样,通过 lscpi 命令来检查驱动程序是否已经安装成功。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 相关型号ADS-1100W, ADS-1200, ADS-1600W, ADS-1700W, ADS-2100, ADS-2200, ADS-2600W, ADS-2700W, DCP-110C, DCP-115C, DCP-120C, DCP-130C, DCP-145C, DCP-1518, DCP-1519, DCP-155C, DCP-1608, DCP-1618W, DCP-...
  • 如何在Linux发行版上卸载Nvidia驱动程序?本文提供方法,在Linux机器上安装Nvidia驱动程序有两种方法,第一种方法是通过操作系统存储库,第二种方法是从Nvidia分发的二进制包安装,参考两种在Ubuntu 18.04上安装...
  • yum方式安装的mysql 1、yum remove ... Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 ...
  • 要用系统安装U盘或WinPE或进入安全模式,先删除驱动 可以用 Get-Drivers 先列出驱动 Dism /Image:C:\ /Get-Drivers 然后用 Remove-Driver 来删除驱动 Dism /Image:C:\ /Remove-Driver /Driver:OEM5.inf .....
  • 如何卸载摄像头驱动

    2021-07-18 01:02:38
    以笔记本电脑为例,卸载摄像头驱动的方法是:1、首先右键“我的电脑”、管理、设备管理器,找到图像设备。2、然后在“图像设备”下的设备名称上点击右键,点击“卸载”即可。计算机(computer)俗称电脑,是现代一种...
  • 我找不到任何内容来帮助我卸载驱动程序,但我不知道该怎么做,因为我之前从未卸载过它们。最佳解决思路适用于Ubuntu 12.04命令可以执行到终端。您可以使用Ctrl + Alt + T组合键打开终端。如果你的remove --purge ...
  • Ubuntu 16.04 卸载Nvidia显卡驱动和cuda

    千次阅读 2021-01-16 09:08:43
    因此这里简单说一下卸载nvidia驱动和cuda的过程,至于重新安装,可以参考博客https://blog.csdn.net/ezhchai/article/details/69663082 1.卸载nvidia驱动 卸载NV驱动和安装一样,首先ctrl+Alt+F2进入命令行状态,...
  • rmmod是临时卸载的,重启后驱动还在 2 linux开机时驱动的加载流程 Linux系统开机后,首先加载initramfs文件中包含的驱动程序,如果相应的设备对应的驱动不在initramfs文件包含范围内,那么会去硬盘中存储的驱动库中...
  • Ubuntu 卸载 Nvidia 驱动和安装最新驱动1、切换为集成显卡image如果没有,那么先切换到字符界面2、卸载驱动sudo apt-get --purge remove nvidia*sudo apt autoremoveTo remove CUDA Toolkit:sudo apt-get --purge ...
  • 有没有可行的解决方案在Linux中格式化USB驱动器?由于操作系统的限制,许多Linux用户发现很难格式化USB驱动器。尽管Linux具有许多优势,但有时进行工作可能会有些乏味。本文有2种不同的方式格式化Linux中的闪存驱动...
  • 1.装新的网卡驱动时,需卸掉以前的。2.开始。a.把noveau加入黑名单,sudo nano /etc/modprobe.d/blacklist-nouveau.conf在文件中加入下面在内容:blacklist nouveaublacklist lbm-nouveauoptions nouveau modeset=0...
  • 1、注册设备执行“insmod EmbedSky_buttons.ko”命令时就会调用这个函数#define DEVICE_NAME "Button_IRQ" /* 加载模式后,执行”cat /proc/devices”命令看到的设备名称 */#define BUTTON_MAJOR 232 /* 主设备号 */...
  • 一、驱动模块的加载和卸载 Linux驱动有两种运行方式,第一种就是将驱动编译进...而且在调试的时候只需要加载或者卸载驱动模块即可,不需要重启整个系统。总之,将驱动编译为模块最大的好处就是方便开发,当驱动开发
  • 信号驱动IO:进程发起读取操作会立即返回,当数据准备好了会以通知的形式告诉进程,进程再发起读取操作,把数据从内核空间拷贝到用户空间。第一阶段不阻塞,第二阶段阻塞。 异步IO:进程发起读取操作会立即返回,...
  • 一般来说,如果操作过显卡卸载和重装的朋友来说,这是十分容易的事情,但是对于完全不懂的小白来说,不知道如何卸载显卡驱动和重装显卡驱动十分正常。那么显卡驱动如何卸载重装?下面装机之家分享一下NVIDIA独立显卡...
  • Linux下内核模块允许我们方便地删除和重新载入内核代码,而卸载内核模块也可以通过命令来实现。下面由小编为大家整理linux卸载内核模块命令的相关知识,希望对大家有帮助!Linux内核模块介绍:尽管Linux是"单块内核...
  • 在做字符驱动驱动实验时,当要卸载驱动时,提示出现了rmmod: sixth_drv: Resource temporarily unavailablelsmodModule Size Used by Not taintedsixth_drv 4104 2使用top命令查看# topMem: 6760K used, 54424K...
  • ubuntu18.04完全卸载nvidia显卡驱动

    千次阅读 2021-07-11 17:35:59
    ubuntu18.04 完全卸载nvidia显卡驱动 可以通过以下命令查看本机安装的所有与nvidia有关的包 dpkg -l | grep -i nvidia 可以使用以下命令卸载所有与nvidia有关的包 sudo apt purge nvidia*
  • 大家可以通过以下命令查看自己的系统版本![root@localhost root]# uname -aLinux localhost 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux在2.4版本以后可以支持的网卡芯片已经非常的全面...
  • Ubuntu16.04 NVIDIA显卡驱动卸载与安装

    千次阅读 2021-02-02 17:20:53
    Ubuntu16.04 NVIDIA显卡驱动卸载与安装1、NVIDIA显卡驱动下载2、NVIDIA显卡驱动卸载3、NVIDIA显卡驱动安装3.1、在线安装3.2、离线安装 1、NVIDIA显卡驱动下载 nvidia官方显卡驱动下载 2、NVIDIA显卡驱动卸载 卸载...
  • 大家再帮帮我,我还是不太明白真正的原因,求高人...另外把我的lsmod的结果也贴上来,大家帮我看看是不是有其它的模块用到了这个e1000网卡的驱动![root@localhost ~]# lsmodModuleSizeUsed bye1000 1238570autofs4...
  • 2.使用以下命令查找显卡驱动型号: ubuntu-drivers devices 3.安装驱动(根据自己型号来): sudo apt-get install nvidia-driver-450-server 4.重启后如果还无法进入,尝试以下命令: sudo apt-get install lightdm ...
  • 1.循环报错log: [OK] started nvidia persistence...原因是因为将NVIDIA所有显卡驱动卸载,如下命令 # sudo apt purge nvidia-* 然后又重新安装nvidia-driver-460显卡驱动 # sudo apt-get install nvidia-driver...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,911
精华内容 27,564
关键字:

卸载驱动命令