标签: kernel-modules

i7 3520M 在内核 3.10.0 上使用 intel_pstate 模块的扩展问题

几天前,我将 openSUSE 12.3 系统从内核 3.9.8-1.gf3348a8-desktop 更新到 3.10.0-1.g3dcd746-desktop,从那时起,我的 i7 3520M 默认启用 Turbo 模式,并且不会降低速度闲置时。它始终以 3.6GHz 运行。

intel_pstate模块默认启用,因此任何用户空间设置都将被忽略(按预期)。我的机器上不再安装 cpufreq 或 cpupower 等工具。

启动 3.9.8 内核仍然显示其旧行为,即 CPU 按预期进行节流。此外,添加intel_pstate=disable到内核命令行会停用 intel_pstate 模块,从而实现所需的 CPU 节流行为。

另一个不太感兴趣的点是,如果 CPU 受到限制(即内核 3.9.8 或禁用 intel_pstate),我将无法触发 CPU 的 Turbo 模式。

任何帮助表示赞赏。

opensuse kernel kernel-modules cpu-frequency intel

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

如何防止 iptables 计算空链上的字节和数据包?

背景

我偶尔会有需要在维护窗口中使用的防火墙规则,但不希望在其余时间处于活动状态(因此会消耗 CPU 周期或减慢网络接口速度)。我在需要时添加规则,然后想要将其清除并阻止 iptables 对流经过滤器链的数据包和字节进行计数

问题:过滤器表仍然在计数

我第一次在详细模式下检查 iptables 时,数据包和字节计数始终为零。例如:

$ sudo iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
Run Code Online (Sandbox Code Playgroud)

然而,一旦过滤器表被初始化,刷新表或重置计数器并不会阻止表继续对数据包和字节进行计数。例如:

$ sudo iptables -F; sleep 5; sudo iptables -L -n …
Run Code Online (Sandbox Code Playgroud)

iptables kernel-modules

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

如何找出 Linux 内核中编译了哪些文件系统驱动程序?

在正在运行的 Linux 系统上,有什么可移植的(在 Linux 发行版中)方法来找出当前内核已编译(不通过模块)支持哪些文件系统?

以我当前的 Ubuntu x86_64 内核为例3.11.0-24-generic #41-Ubuntu:例如,它有 no /proc/config.gz,否则这将是我的第一个想法。

我感兴趣的原因是我想(以编程方式)使用当前内核和内核能够加载/安装的初始 ramdisk 构建一个救援环境。

/proc/filesystems 是不是就跟 比较一样简单lsmod

如果是这样:模块是否始终具有lsmod与文件系统名称(中的最后一列)完全相同的名称(输出的第一列/proc/filesystems)?

是否有一种更现代的方式,例如/sys代替/proc寻找信息?

我目前的方法如下。有人可以确认它是正确的,或者建议如何做吗?:

for fscand in $(awk '{print $NF}' /proc/filesystems)
do
  if test $(lsmod | grep -c -e '^'${fscand}'[^a-z0-9_-]') -eq 0
  then
    candlist="${fscand} ${candlist}"
  fi
done

for fscand in $candlist
do
  echo $fscand is compiled-in
done
Run Code Online (Sandbox Code Playgroud)

filesystems kernel-modules proc sysfs linux-kernel

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

bcma 与 brcmsmac 有何关系?

我正在尝试解决无线连接的一些问题,并尝试在此过程中学习一些东西。从这里这里我了解了两种不同的方式来了解我的无线驱动程序。事实是,我得到两个不同的结果:

第一种方法sudo lshw -C network给了我以下内容:

configuration: broadcast=yes driver=brcmsmac
Run Code Online (Sandbox Code Playgroud)

而第二个lspci -knn | grep Net -A2给了我这个:

Kernel driver in use: bcma-pci-bridge
Run Code Online (Sandbox Code Playgroud)

从我的驱动程序列表中,我可以找到brcmsmacbcma

> lsmod | grep brcmsmac
brcmsmac              563061  0 
cordic                 12574  1 brcmsmac
brcmutil               15579  1 brcmsmac
mac80211              652777  1 brcmsmac
cfg80211              498458  2 brcmsmac,mac80211
bcma                   52320  2 brcmsmac
Run Code Online (Sandbox Code Playgroud)

那么,这两个人到底在做什么呢?

wifi drivers broadcom kernel-modules

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

启动时显式加载内核模块

我正在使用 grsecurity 内核,它不允许自动加载内核,因此多个 systemd 服务无法工作。手动加载模块并modprobe重新启动模块后,一切正常,但这是一个相当肮脏的解决方案。我想在启动过程中“正确”地做到这一点。

操作系统是带有 grsec 内核的 Arch linux。

startup grsecurity kernel-modules

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

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

我正在尝试解决一个问题: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
查看次数

Linux 内核模块是一种 Linux 系统分页池吗?

我总是读到 Linux 内核不可分页。
如果我没记错的话,Windows 会在分页部分(分页池)和非分页部分(非分页池)中分配系统虚拟内存。
非分页部分直接映射到物理内存并一直留在那里,因为它负责处理内核必须完成的最重要的任务,而不太重要的部分可能不会。相反,Linux 内核被划分为可加载的模块,但我没有收集到有关如何实现这些模块的信息。
我不明白它们是否被分页,因此您可以暂时将它们传输到磁盘。我通常读到的是我们可以通过卸载它们来“释放”内存,这对我来说仍然是什么意思。
当我在这篇文章中写下“分页”或“可分页”时,我暗示您可以在磁盘上交换这些页面。我解决了这个问题,因为通常 Linux 内核被认为是分页的,但它不能被换出

swap kernel-modules virtual-memory linux-kernel

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

签署内核模块

因此,我在 debian buster 10 系统上安装了virtualbox,但遇到错误提示我手动加载一些内核模块。

sudo ./vboxconfig 
[sudo] password for user:
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: You must sign these kernel modules before using VirtualBox:
 vboxdrv vboxnetflt vboxnetadp
See the documenatation for your Linux distribution..
vboxdrv.sh: Building VirtualBox kernel modules
Run Code Online (Sandbox Code Playgroud)

所以我只需要一些帮助来加载 vboxdrv、vboxnetflt 和 vboxnetadp 内核模块来完成我的虚拟机安装,我不太确定这是如何完成的。我正在使用启用了安全启动的 UEFI 系统。

kernel kernel-modules virtualbox

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

某些 sudo 用户不允许删除内核模块

我使用一个sudoers文件,其中(除了其他项目)包含以下几行:

homebridge    ALL=(ALL) NOPASSWD: /sbin/modprobe -r bcm2835-v4l2, /sbin/modprobe bcm2835-v4l2, /sbin/reboot
%sudo         ALL=(ALL) NOPASSWD: /sbin/modprobe -r bcm2835-v4l2, /sbin/modprobe bcm2835-v4l2, /sbin/reboot
Run Code Online (Sandbox Code Playgroud)

当我/usr/bin/sudo /sbin/modprobe -r bcm2835-v4l2使用普通用户执行以下命令时,无需输入密码即可正常工作。

当我也/usr/bin/sudo /sbin/modprobe -r bcm2835-v4l2使用sudoers 中提到的homebridge用户运行时,命令失败并输出:(modprobe: ERROR: ../libkmod/libkmod-module.c:793 kmod_module_remove_module() could not remove 'bcm2835_v4l2': Operation not permitted,但我也没有被要求输入密码)

我能够/usr/bin/sudo /sbin/reboot使用homebridge用户成功执行命令,并且不需要输入密码。

  1. 你能说出是什么原因导致这两个用户似乎都应用了规则,因为我没有被要求输入密码,但两个用户之一无法运行它吗?
  2. 以及如何解决这个问题,以便我能够使用homebridge用户运行命令?

更新 1: 不幸的是,dmesg使用homebridge用户尝试失败时不包含其他条目,但使用普通用户时包含以下内容:bcm2835-v4l2-0: unregistering video0

我切换到bcm2835_v4l2而不是bcm2835-v4l2,但这似乎对该问题没有影响。执行lsmod | grep …

bash permissions sudo kernel-modules

5
推荐指数
0
解决办法
115
查看次数