SLES中的硬件

一、硬件

1、查看硬件状态

  • 命令:/usr/sbin/hwinfo

  • 名称
    hwinfo - 探测系统中的硬件

  • 用法
    hwinfo [选项]

  • 描述
    hwinfo 用于探测系统中存在的硬件。它可以用来生成系统概览日志,以便后续用于支持。

  • 选项
    注意,不带任何选项运行 hwinfo 大致相当于 ‘hwinfo --all --log=-’。

    • - -<硬件项目>
      此选项可以多次给出。用于探测特定的硬件项目。可用的硬件项目包括:

      all(全部), arch(架构), bios(基本输入输出系统), block(块设备), bluetooth(蓝牙),
       braille(盲文), bridge(桥接设备), camera(摄像头), cdrom(光盘驱动器),
        chipcard(智能卡), cpu(中央处理器), disk(磁盘), dsl(数字用户线路), 
        dvb(数字视频广播), fingerprint(指纹识别), floppy(软盘驱动器), 
        framebuffer(帧缓冲设备), gfxcard(图形卡), hub(集线器), ide(集成设备电路), 
        isapnp(即插即用即插即用), isdn(综合业务数字网), joystick(游戏杆), 
        keyboard(键盘), memory(内存), mmc-ctrl(多媒体卡控制器), modem(调制解调器), 
        monitor(显示器), mouse(鼠标), netcard(网卡), network(网络),
         partition(分区),pci(外设组件互连), pcmcia(个人计算机存储卡国际协会),
          pcmcia-ctrl(pcmcia控制器), pppoe(点对点协议以太网), printer(打印机), 
          redasd(冗余阵列独立磁盘), reallyall(真正全部), scanner(扫描仪), 
          scsi(小型计算机系统接口), smp(对称多处理), sound(声音设备), 
          storage-ctrl(存储控制器), sys(系统), tape(磁带驱动器), tv(电视设备),
           uml(用户模式Linux), usb(通用串行总线), usb-ctrl(usb控制器), 
           vbe(视频生物电子学工程), wlan(无线局域网), xen(Xen虚拟化技术), 
           zip(Zip驱动器)
      
      注意,如果缺少此选项,则不会执行任何硬件探测!
      
    • - -short
      仅显示摘要。将此选项与硬件探测选项结合使用。

    • - -listmd
      通常 hwinfo 不报告 RAID 设备。添加此选项以查看它们。

    • - -only DEVNAME
      此选项可以多次给出。如果添加此选项,则仅显示设备列表中与 DEVNAME 匹配的条目。请注意,您还必须指定 --<硬件项目> 以触发任何设备探测。

    • - -save-config SPEC
      将特定设备的配置存储在 /var/lib/hardware 下。SPEC 可以是设备名称、UDI 或 ‘all’。此选项必须与硬件探测选项一起给出。

    • - -show-config UDI
      显示特定设备的保存配置数据。

    • - -map
      如果磁盘名称已更改(例如,在内核更新之后),则打印磁盘名称映射列表。请注意,您必须在此之前已经使用了 --save-config,此功能才能工作。

    • - -debug N
      将调试级别设置为 N。调试信息仅显示在日志文件中。如果指定了日志文件,则调试级别将隐式设置为合理值(N 是各个标志的位掩码)。

    • - -verbose
      增加详细程度。仅与 --map 结合使用。

    • - -log FILE
      将日志信息写入 FILE。不要忘记还要指定 --<硬件项目> 以触发任何设备探测。

    • - -dump-db N
      转储硬件数据库。N 为 0 表示转储 /var/lib/hardware 中的外部数据库,1 表示转储内部数据库。

    • - -version
      打印 libhd 版本。

    • - -help
      打印用法。

  • 环境
    hwprobe 可以包含一个由 ‘+’ 或 ‘-’ 开头的探测标志的逗号分隔列表,以打开或关闭它们。要获取支持的标志的完整列表,请运行 ‘hwinfo -all’(注意:不是 ‘–all’)并查看输出的顶部。

hwinfo 还会查看 /proc/cmdline 以获取 hwprobe 选项。

  • 示例
    • 显示所有磁盘
      hwinfo --disk

    • 仅显示概览
      hwinfo --short --block

    • 显示特定磁盘
      hwinfo --disk --only /dev/sdb

    • 保存磁盘配置状态
      hwinfo --disk --save-config=all

    • 尝试 4 个图形卡端口以获取显示器数据(默认:3)
      hwprobe=bios.ddc.ports=4 hwinfo --monitor

    • 显示器检测运行视频 BIOS 以获取显示器数据;将完整的 BIOS 代码执行跟踪转储到日志
      hwprobe=bios.ddc.ports=1,x86emu=trace:dump:trace.only=0:dump.only=0 hwinfo --monitor --log=foo

二、驱动

1、管理驱动

1.1驱动类型

  • 内核模块:
    • 扩展Linux内核的功能
    • 允许内核提供对硬件的访问
    • 可以在运行时加载或卸载
  • 用户空间驱动程序:
    • 在用户空间中工作

  为了理解Linux如何处理硬件,首先必须了解“设备”和“接口”这两个术语之间的区别。用户、管理员甚至软件开发者经常会混淆这两个术语。本文采用以下定义:
● 设备:设备是指物理硬件,如PCI网卡、AGP图形适配器或USB打印机。
● 接口:接口是与设备相关联的软件组件。要使用物理硬件,需要通过软件接口进行访问。一个设备可以有多个接口。

  接口通常由驱动程序创建。在Linux中,驱动程序通常是可以加载到Linux内核中的软件模块。驱动程序可以被视为设备和其接口之间的“粘合剂”。设备驱动程序访问和使用设备。

  设备驱动程序有两种基本类型:
● 内核模块:可以通过添加内核模块来扩展Linux内核的功能。它们允许内核在运行时提供对硬件的访问,并且可以在运行时加载或卸载。
● 用户空间驱动程序:有些硬件需要额外的在用户空间中工作的驱动程序。这类硬件的例子包括打印机或扫描仪。
在这里插入图片描述

1.2内核设备驱动

  • 内核模块:
    /lib/modules/<kernel-version>/*/
  • 硬件驱动内核模块:
    /lib/modules/<kernel-version>/kernel/drivers/

   安装在/boot/目录中的内核支持广泛的硬件。除非你想测试实验性功能或驱动程序,否则通常不需要编译自定义内核。

  Linux内核的驱动程序和功能既可以编译进内核中,也可以作为内核模块加载。这些模块可以在系统运行期间稍后加载,而无需重新启动计算机。

  这对于系统启动时不必需的内核模块尤其如此。通过在系统启动后将其作为组件加载,可以保持内核相对较小。

  内核模块作为文件存储在/lib/modules/<内核版本>/目录的子目录中。

  硬件模块存储在/lib/modules/<内核版本>/kernel/drivers/目录中。

  模块通常仅与它们为之构建的内核版本一起工作,因此每安装一次内核更新,都会创建一个新目录。

  模块存储在具有.ko(内核对象)文件扩展名的多个子目录中。使用modprobe加载模块时,可以省略扩展名,而仅使用模块名称。

1.3设备驱动如何加载

  • initrd
  • systemd
  • udev
  • X Server
  • Manually

  用于自动加载内核模块的几种方法,特别是针对SUSE Linux Enterprise Server中设备驱动程序的加载方式:

● initrd:initrd是一个特殊的文件,由引导加载程序加载到内存中。从initrd中加载对访问根分区至关重要的重要设备驱动程序,例如SCSI主机控制器和文件系统驱动程序。

● systemd:某些systemd服务文件用于加载和设置硬件设备。例如,ALSA声音脚本用于加载声卡驱动程序。

● udev:用于加载内核模块。

● X服务器:虽然显卡驱动程序不是内核模块,但X服务器会加载特殊驱动程序以启用硬件3D支持。

● 手动加载:您可以使用modprobe命令从命令行或在脚本中手动加载内核模块。

1.4维护内核模块

  要从命令行管理模块,您可以使用以下命令:

  • lsmod:列出内核中当前已加载的模块,例如:
    在这里插入图片描述
    列表中包含模块名称、模块大小、模块使用次数以及哪些其他模块正在使用它的信息。

  • insmod <模块>:将指定的模块加载到内核中。模块必须位于/lib/modules/<版本号>/目录中。
    但是,我们建议您使用modprobe而不是insmod来加载模块。

  • rmmod <模块>:从内核中移除指定的模块。只有当没有进程正在访问与该模块连接的硬件或相应服务时,才能移除模块。但是,我们建议您使用modprobe -r而不是rmmod来移除模块。

  • modprobe <模块>:将指定的模块加载到内核中或将其移除(如果使用-r选项)。使用modprobe时,会考虑其他模块的依赖关系。modprobe还会读取/etc/modprobe.conf文件,并使用您可能已添加的任何自定义配置设置。
      如果/lib/modules/version/modules.dep文件(由depmod命令创建)存在,则可以使用此命令。该文件用于确定模块的依赖关系。
      modprobe的附加配置文件位于/etc/modprobe.d/目录中。modprobe会自动评估此目录中的所有文件。
      自内核版本2.2.x以来,kmod软件包确保使用modprobe自动加载运行操作中所需的模块,例如在访问CD-ROM驱动器时。

  • depmod:创建/lib/modules/version/modules.dep文件。该文件包含各个模块的依赖关系。当使用modprobe加载模块时,modules.dep文件确保加载它所依赖的所有模块。
      在SUSE Linux Enterprise Server上,depmod还会创建modules.aliases文件,modprobe使用该文件来确定需要为哪个设备加载哪个驱动程序。

  • modinfo <选项> <模块>:显示有关指定模块的信息(如许可证、作者和描述)。例如:
    在这里插入图片描述

  • modprobe的配置
      modprobe的配置主要涉及对内核模块的加载、卸载以及参数设置等操作,这些操作可以通过modprobe命令及其配置文件来实现。以下是对modprobe配置的详细解释:

    • modprobe命令
      modprobe命令用于智能地添加或移除Linux内核中的模块。它会自动处理模块的依赖关系,并根据需要加载或卸载相关模块。modprobe命令的基本语法如下:
      modprobe [选项] 模块名 [模块参数…]
      其中,常用的选项包括:
      -r:移除指定的模块。
      -l:列出所有可用的模块,或使用通配符匹配特定条件的模块。
      -v:显示详细的信息,包括模块加载或卸载的过程。
      -C:指定配置文件的路径,以覆盖默认的配置文件。

    • 配置文件
      modprobe的配置文件主要包括etc/modprobe.d/目录下的文件。这些文件用于指定模块的加载选项、别名、黑名单等。
      /etc/modprobe.d/:这个目录包含了多个配置文件,modprobe在加载模块时,会依次读取这些文件,并根据其中的配置来加载模块。

    • 配置指令
      modprobe的配置文件中可以包含多种指令,这些指令用于指定模块的加载方式、参数等。以下是一些常用的配置指令:

      • alias:为模块指定别名。这可以用于简化模块名称,或解决模块名称冲突的问题。
      • options:为模块指定参数。这些参数将在模块加载时传递给内核。
      • install 和 remove:这两个指令用于指定加载或卸载模块时执行的自定义命令。这可以用于执行一些额外的操作,如加载额外的依赖模块、设置设备参数等。
      • blacklist:将指定的模块列入黑名单,防止其被modprobe加载。这通常用于禁用与当前系统不兼容或存在问题的模块。
    • 示例
      以下是一些modprobe配置的示例:

      • 为模块指定别名:
        alias my-mod really_long_modulename
        这表示可以使用modprobe my-mod来加载名为really_long_modulename的模块。

      • 为模块指定参数:
        options module_name param1=value1 param2=value2
        这表示在加载名为module_name的模块时,将param1和param2参数分别设置为value1和value2。

      • 将模块列入黑名单:
        blacklist nouveau
        这表示将名为nouveau的模块列入黑名单,防止其被modprobe加载。

    • 注意事项
      在修改modprobe的配置文件之前,建议备份原始文件,以防止配置错误导致系统无法启动或硬件无法正常工作。
      modprobe的配置文件通常不需要手动编辑,因为大多数现代Linux发行版都使用systemd或其他服务管理器来管理内核模块的加载。但是,在某些情况下,手动编辑这些文件可能是必要的,例如禁用不兼容的模块或调整模块参数等。
      总之,modprobe的配置涉及多个方面,包括命令的使用、配置文件的编辑以及配置指令的设置等。通过合理配置modprobe,可以确保内核模块的正确加载和卸载,从而提高系统的稳定性和性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi~9527

看我这么卖力,可怜可怜我吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值