AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 13991
In Process
yanchenko
yanchenko
Asked: 2009-05-29 09:57:02 +0800 CST2009-05-29 09:57:02 +0800 CST 2009-05-29 09:57:02 +0800 CST

如何判断需要哪些内核模块?

  • 772

比如说,我有一个默认的 Gentoo 安装,其中编译了所有模块(例如设备驱动程序)。从这一点来看,下次我重新编译内核时,有没有一种简单的方法可以排除未使用的模块?

gentoo kernel-modules
  • 9 9 个回答
  • 10891 Views

9 个回答

  • Voted
  1. ignis
    2013-03-22T22:48:31+08:002013-03-22T22:48:31+08:00

    make localmodconfig和make localyesconfig(在 2009 年 12 月 3 日发布的 2.6.32 中引入)将选择加载正在使用的模块所需的模块。

    更多信息。

    请注意,这不考虑曾经加载但当前已卸载的模块。ArchLinux 有一个modprobed_db可以解决这个问题,我不知道 Gentoo 是否也有一个。

    • 3
  2. shapr
    2009-05-29T10:56:29+08:002009-05-29T10:56:29+08:00

    我使用 debian 中的 discover 包来确定我可以加载哪些内核模块。具体来说:

    apt-get install discover
    discover --data-path=linux/module/name|sort|uniq
    

    对于带有 nvidia 芯片组的 AMD 双核台式机,我得到:

    amd74xx
    emu10k1
    emu10k1-gp
    forcedeth
    i2c-nforce2
    ohci1394
    sata_nv
    

    这是一篇关于 linux 中硬件检测的短文,包括一些关于使用 discover 的文本。

    • 2
  3. Caterpillar
    2009-05-30T02:13:27+08:002009-05-30T02:13:27+08:00

    您可以使用“lsmod”来了解内核模块

    • 2
  4. Alakdae
    2009-06-10T10:39:05+08:002009-06-10T10:39:05+08:00

    显示正在使用的驱动程序/模块:

    lspci -v
    
    • 2
  5. theman_on_osx
    2009-05-29T10:06:48+08:002009-05-29T10:06:48+08:00

    如果我们要进入技术细节,我会说你可以卸载这些模块,然后你不需要重新编译。但是,我认为您的意思是“仅将驱动程序包含在我的特定硬件中”。在这种情况下,我会建议:

    dmesg | less
    

    仔细查看,看看你可以推断出哪些硬件细节。然后,当你去编译内核时,查看所有组件,看看它是否提到了你的硬件。重新启动后,检查以确保所有硬件都正常工作。

    在 archlinux 中,有一个名为 的 bash 脚本[hwd][1],我认为它可以在 gentoo 上运行(可能需要一些黑客攻击),但它会告诉你你得到了什么。这是我的工作电脑:

    [theman@work]# hwd -s
    HARDWARE DETECT ver 5.5 (simple mode)
    Kernel     : 2.6.29-ARCH
    CPU & Cache: Processor 0: Intel(R) Pentium(R) Dual  CPU  E2200  @ 2.20GHz 2194MHz, 1024 KB Cache
    Processor 1: Intel(R) Pentium(R) Dual  CPU  E2200  @ 2.20GHz 2194MHz, 1024 KB Cache
    
    Sound(a)   : 82801G ICH7 Family High Definition Audio Controller module: snd-hda-intel 
    Video      : GeForce 8400 GS server: Xorg (vesa)  
    Driver     : xf86-video-vesa   module: - 
    Monitor    : Generic Monitor  H: 28.0-96.0kHz V: 50.0-75.0Hz
    Mouse      : Logitech, Inc. Marble Mouse (4-button)  xtype: IMPS2 device: /dev/input/mice
    HDD        : 82801GB/GR/GH ICH7 Family SATA IDE Controller module: ata_piix 
    USB        : 82801G ICH7 Family USB UHCI Controller #4 module: uhci_hcd 
    USB2       : 82801G ICH7 Family USB2 EHCI Controller module: ehci_hcd 
    
    Ethernet   : RTL8139/8139C/8139C+ module: 8139too 
    Network    : No wireless card
    
    Menu       : Main menu: hwd
    All        : Detect all hardwares: hwd -e
    X sample   : Generate X sample: hwd -x 
    
    • 1
  6. wzzrd
    2009-05-30T05:17:29+08:002009-05-30T05:17:29+08:00

    GKH 在“Linux Kernel in a nutshell”中有一个 shellscript,它通过近似值做到了这一点。该脚本可以从书籍网站免费下载,并且没有版权信息,所以我想我可以在这里发布。

    for i in `find /sys/ -name modalias -exec cat {} \;`; do
            /sbin/modprobe --config /dev/null --show-depends $i ;
    done | rev | cut -f 1 -d '/' | rev | sort -u
    

    脚本输出是您的硬件需要运行的模块列表。它没有列出使某些软件工作所需的模块,例如 ipv6.so!

    @Greg:如果您不希望这样发布,我将其删除;-)

    • 1
  7. hajowieland
    2009-06-01T10:39:03+08:002009-06-01T10:39:03+08:00

    在某些发行版中,还有一个非常漂亮的工具,称为hwinfo,它为您提供了许多有关硬件的有用信息。

    为了更多地了解内核模块,lspci和lsmod对我来说总是做得很好。

    • 1
  8. setzamora
    2009-05-30T02:24:31+08:002009-05-30T02:24:31+08:00

    如果你正在重新编译内核。最好的办法是使用theman_on_osx提供的方法很好地了解您的硬件。列出所有组件。您只需从菜单中取消选中/排除模块(不需要的)(即,如果您通过 make menuconfig / make xconfig 重新编译它)。

    您还可以使用“rmmod”卸载可即时加载的模块。

    • 0
  9. laurentb
    2009-05-30T05:00:29+08:002009-05-30T05:00:29+08:00

    lspci也应该可以帮助你。

    • 0

相关问题

  • 升级 Gentoo Linux 的最佳程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve