Linux之驱动管理

一、相关概念

  1. 驱动概念
  • 驱动与底层硬件直接打交道,充当了硬件与应用软件中间的桥梁。
  • 将驱动程序载入内核,应用程序可以通过系统调用接口来访问(驱动)底层的硬件设备。
  1. 驱动功能
  • 对设备初始化和释放
  • 把数据从内核传送到硬件和从硬件读取数据
  • 读取应用程序传送给设备文件的数据和回送应用程序请求的数据
  • 检测和处理设备出现的错误
  1. Linux 驱动有两种运行方式
  • 将驱动编译进 Linux 内核中,当 Linux 内核启动的时就会自动运行驱动程序。
  • 将驱动编译成模块(Linux 下模块扩展名为.ko),在Linux 内核启动以后使用相应命令加载驱动模块。
    内核模块是Linux内核向外部提供的一个插口
    内核模块是具有独立功能的程序,他可以被单独编译,但不能单独运行。他在运行时被链接到内核作为内核的一部分在内核空间运行
    内核模块便于驱动、文件系统等的二次开发

二、管理命令

实际使用中,我们一般使用模块化的方式为系统动态装载一些驱动,以下是一些模块化驱动的管理命令。

  1. 驱动的位置

/lib/modules/kernel_release

# ls -l /lib/modules/3.10.0-1160.el7.x86_64/
总用量 3300
lrwxrwxrwx.  1 root root     39 9月   6 16:10 build -> /usr/src/kernels/3.10.0-1160.el7.x86_64
drwxr-xr-x.  2 root root      6 10月 20 2020 extra
drwxr-xr-x. 12 root root    128 9月   6 16:10 kernel
-rw-r--r--.  1 root root 860326 9月   6 16:12 modules.alias
-rw-r--r--.  1 root root 819744 9月   6 16:12 modules.alias.bin
-rw-r--r--.  1 root root   1333 10月 20 2020 modules.block
-rw-r--r--.  1 root root   7391 10月 20 2020 modules.builtin
-rw-r--r--.  1 root root   9440 9月   6 16:12 modules.builtin.bin
-rw-r--r--.  1 root root 273209 9月   6 16:12 modules.dep
-rw-r--r--.  1 root root 382108 9月   6 16:12 modules.dep.bin
-rw-r--r--.  1 root root    361 9月   6 16:12 modules.devname
-rw-r--r--.  1 root root    140 10月 20 2020 modules.drm
-rw-r--r--.  1 root root     69 10月 20 2020 modules.modesetting
-rw-r--r--.  1 root root   1810 10月 20 2020 modules.networking
-rw-r--r--.  1 root root  97935 10月 20 2020 modules.order
-rw-r--r--.  1 root root    569 9月   6 16:12 modules.softdep
-rw-r--r--.  1 root root 397513 9月   6 16:12 modules.symbols
-rw-r--r--.  1 root root 486211 9月   6 16:12 modules.symbols.bin
lrwxrwxrwx.  1 root root      5 9月   6 16:10 source -> build
drwxr-xr-x.  2 root root      6 10月 20 2020 updates
drwxr-xr-x.  2 root root     95 9月   6 16:10 vdso
drwxr-xr-x.  2 root root      6 10月 20 2020 weak-updates
# lsmod                   //显示当前加载了的驱动,不光有硬件驱动,还有功能驱动
# modinfo 驱动名           //显示模块信息
# modprobe module name    //加载驱动
# modprobe-r module name  //卸载驱动
# insmod drv.ko           //加载drv驱动
# modprob drv             //加载drv驱动

insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。
modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/...下。
modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

posted @ 2024-02-14 12:38  *一炁化三清*  阅读(73)  评论(0编辑  收藏  举报