标签: kernel-modules

不使用 initrd 启动

是否可以在没有 initrd.img 的情况下启动 linux?我计划将默认驱动程序添加为内核本身的一部分,并完全避免使用 initrd。

哪些模块应该成为内核的一部分而不是可加载模块?

linux boot kernel initrd kernel-modules

6
推荐指数
1
解决办法
3553
查看次数

将 lsmod 模块名称与内核配置菜单项绑定

假设我有一个名为“mptsas”的模块。我怎样才能找出对应于该模块的内核配置菜单条目(在 /usr/src/linux 中创建 menuconfig)?

“对应”是指哪个菜单项将适当的模块编译到内核中。

在此处输入图片说明

//编辑:它工作得很好: 在此处输入图片说明

kernel-modules search linux-kernel

6
推荐指数
1
解决办法
1250
查看次数

什么是 EXT4 安全标签?

在 Gnome 密钥环的 Gentoo 安装过程中,我被告知要打开 EXT4 安全标签,内核文档中对此进行了描述:

安全标签支持由 SELinux 等安全模块实现的替代访问控制模型。此选项为 ext4 文件系统中的文件安全标签启用扩展属性处理程序。

该文档并没有多大帮助,因为我现在了解到它启用了一个属性处理程序,该处理程序将反过来为 ext4 文件系统启用安全标签。我可以从功能的名称中推断出这一点。那些标签是什么?他们如何提高安全性?

linux security ext4 kernel-modules

6
推荐指数
1
解决办法
2368
查看次数

防止 usbhid 声明 USB 设备

直接相关:防止 usbhid 声称新奇的 USB 设备,以便我可以用 libusb 控制它?

我想从使用 libusb-0.1 的程序访问 RFID 阅读器(用作 HID 设备)。在代码中,内核驱动程序正确分离usb_detach_kernel_driver_np(没有错误),但似乎每当我的程序尝试访问 USB 设备时,usbhid 模块都会回收它。以下错误总是出现在dmesg

usb 1-1.3:usbfs:usbhid 声明的接口 0,而“MyProgram”设置配置 #1

我添加了以下 udev 规则,重新启动 udevd 并重新插入设备,但没有效果。它应该将设备列入黑名单,以免被 usbhid 使用。

# I anonymized the vendor/product IDs here
ATTRS{idVendor}=="dead", ATTRS{idProduct}=="beef", OPTIONS=="ignore_device"
Run Code Online (Sandbox Code Playgroud)

除了 dmesg 输出,我可以看到/sys/bus/usb/drivers/usbhid/设备1-1.3:1.0每次都会重新创建,因此黑名单似乎不起作用。

还有什么我可以尝试的吗?操作系统是 Raspbian(在 Raspberry Pi 上),内核为 3.2.27。

linux kernel usb kernel-modules devices

6
推荐指数
1
解决办法
2万
查看次数

linux内核模块的缺点?

我试图了解使用 Linux 内核模块的缺点。我了解使用它们的好处:能够将代码动态插入到正在运行的系统中,而无需重新编译和重新启动基本系统。鉴于这种强大的优势,我猜测大部分内核代码应该在内核模块中,而不是作为基本内核的一部分,但情况似乎并非如此——大量的核心子系统(如内存管理)仍然进入基础内核。

我能想到的一个原因是内核模块在引导过程中加载得很晚,因此核心功能必须在基本内核中。我阅读的另一个原因是关于碎片化。

我真的不明白为什么内核模块会导致内存碎片,有人可以解释一下吗?使用内核模块还有其他缺点吗?

kernel kernel-modules linux-kernel

6
推荐指数
2
解决办法
3812
查看次数

通过 /etc/modprobe.d/blacklist.conf 排除内核模块不起作用

我不想在启动时在我的 debian 机器上加载内核模块 nouveau,所以我将以下内容放在 /etc/modprobe.d/blacklist.conf 中:

blacklist ttm
blacklist drm
blacklist nouveau
Run Code Online (Sandbox Code Playgroud)

我什至做了一个,update-initramfs -u但每次启动时都会加载这三个模块。

有谁知道为什么以及如何解决这个问题。

boot kernel debian kernel-modules initramfs

6
推荐指数
1
解决办法
2万
查看次数

通过 /etc/modules 加载模块

我想hello.ko在 Ubuntu 12.04 中启动时加载我的内核模块。我把它放进去/lib/modules/3.8.0-31-generic/kernel/ubuntu/hello.ko,跑了depmod -a,然后在/etc/modules.

但是,当我重新启动时,lsmod. 其中/var/log/upstart/module-init-tools.log有一个字符串“致命:未找到模块 hello”。

如果我运行modprobe hello一切正常。怎么了/etc/modules?它在哪里试图找到模块?

linux kernel-modules

6
推荐指数
1
解决办法
4570
查看次数

DKMS 模块从未在内核升级时正确安装

我的系统上安装了多个 DKMS 模块,其中一些是我的,还有一些属于非常重要的维护包,例如 Oracle 的 VirtualBox 5。

我发现在每次内核升级时,所有 DKMS 模块都会损坏并且没有安装在新内核中。我认为这是我自己模块中代表我的错误配置,但是现在我看到 VirtualBox 也损坏了,我怀疑是其他原因。

如何调试为什么 DKMS 没有在较新的内核版本中安装模块?

我使用的是内核 3.19,Ubuntu 14.04。

内核升级后dkms status没有输出任何内容,这意味着我的 DKMS 模块都没有正确安装。

kernel kernel-modules linux-kernel dkms

6
推荐指数
1
解决办法
6721
查看次数

如何找到给定设备的内核模块?

我正在尝试解决一个问题:USB 鼠标在新安装的 linux 上不起作用。

我怀疑问题在于我的 USB 硬件没有合适的内核模块/驱动程序。的确:

$ lspci -knn
...
01:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b9] (rev 02)
        Subsystem: ASMedia Technology Inc. Device [1b21:1142]
01:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b5] (rev 02)
        Subsystem: ASMedia Technology Inc. Device [1b21:1062]
        Kernel driver in use: ahci
...
Run Code Online (Sandbox Code Playgroud)

如您所见,没有为 USB 控制器设备报告内核驱动程序(我想应该以类似于为 SATA 控制器报告的驱动程序的方式报告)

因此,我需要使用适合我设备的模块重建内核。但是我怎样才能找出我应该构建什么模块呢?我有识别我的设备的信息:它是供应商 ID 和硬件 ID ([1b21:43b9])。给定这些信息,如何找出对应的内核模块名称?

usb kernel-modules

5
推荐指数
2
解决办法
6466
查看次数

如何在启动时强制加载内核模块 (modprobe -f)?

我想在我的系统(Debian 9)上启动时加载一个自定义内核模块。这个模块的 vermagic 字符串与我的内核版本不完全匹配,但我可以使用modprobe -f module_nameor加载它insmod -f /path/to/module,它似乎工作正常。

如果我只是将模块的名称添加到/etc/modules-load.d/modules.conf它不起作用,则 systemctl 显示 systemd-modules-load.service 在尝试加载模块时出错。

我可以告诉 systemd 强制加载模块吗?

debian kernel-modules systemd

5
推荐指数
1
解决办法
4958
查看次数