标签: kernel

每个网络数据包都会导致CPU中断吗?

虽然我知道很多数据包处理(CRC 计算、数据包分段处理等)可以卸载到 NIC,但是每个数据包是否仍然会导致 CPU 中断?如果网卡处于混杂模式,有什么区别吗?

networking kernel ethernet interrupt

4
推荐指数
1
解决办法
3576
查看次数

模块延迟打印到内核日志

我创建了一个基本的 Linux 内核模块,它执行以下操作:

static __init int init(void)
{
  printk(KERN_DEBUG "Banana");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

而且当然:

module_init(init);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我通过插入模块后找不到字符串“Banana”

insmod banana_module.ko
Run Code Online (Sandbox Code Playgroud)

命令

dmesg -k | grep Banana
Run Code Online (Sandbox Code Playgroud)

不返回任何内容。

但是,当我卸下模块并再次插入时,我可以找到它。然后我找到了两根香蕉,一根是之前的,一根是当前插入的。这是由于冲洗问题吗?我觉得这种行为有点奇怪,在互联网上找不到类似的问题。

顺便说一句,这种情况发生在我的台式机和笔记本电脑上的虚拟机(没有虚拟机)上。

那么,为什么内核不喜欢香蕉呢?

linux logs kernel dmesg

4
推荐指数
1
解决办法
1577
查看次数

module-init 工具目录中的弱模块

我在module-init目录中看到名为weak-modules*.

bash # ls /usr/lib/module-init-tools/weak-modules*
/usr/lib/module-init-tools/weak-modules  /usr/lib/module-init-tools/weak-modules2
Run Code Online (Sandbox Code Playgroud)

到底是什么?以及什么时候使用它?我认为它是在初始化模块时使用的,因为它存在于module-init目录中。

kernel kernel-modules linux-kernel

4
推荐指数
1
解决办法
2481
查看次数

无法读取 sysctl 中的密钥“net.ipv6.conf.all.stable_secret”?

我在 Arch Linux 计算机上运行的内核版本如下:

[root@router ~ ]$ uname -a
Linux router 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 
Run Code Online (Sandbox Code Playgroud)

我注意到每次我通过sysctl -a管道输入 grep 命令时我都会收到以下消息

[root@router ~ ]$ sysctl -a | grep no_meaning
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
...
Run Code Online (Sandbox Code Playgroud)

对这些文件运行 cat:

[root@router ~ ]$ cat /proc/sys/net/ipv6/conf/all/stable_secret 
cat: /proc/sys/net/ipv6/conf/all/stable_secret: Input/output error
[root@router ~ ]$ ls -hl /proc/sys/net/ipv6/conf/all/stable_secret 
-rw------- 1 root root 0 Dec 24 14:57 /proc/sys/net/ipv6/conf/all/stable_secret
Run Code Online (Sandbox Code Playgroud)

到目前为止我还没有看到任何不良影响,但我想知道这是否正常,特别是这些stable_secret键的功能是什么?提前致谢。

kernel proc ipv6 sysctl

4
推荐指数
1
解决办法
8992
查看次数

为什么在尝试安装 VirtualBox Guest Additions 时无法在 CentOS 7 上找到内核头文件?

我在 Windows 8.1 主机上安装了最小的 CentOS 7 作为 VirtualBox 5.0.16 r105871 来宾。 uname -r报告“3.10.0-327.10.1.el7.x86_64”。

当我尝试运行时,VBoxLinuxAdditions.run出现错误“找不到当前正在运行的内核的标头”,并建议我这样做yum install kernel-devel-3.10.0-327.10.1.el7.x86_64。然而yum list kernel-devel显示已经安装(按原样kernel-headers和适当的版本)。

添加一些日志记录vboxadd,我发现它正在寻找标头,其中/lib/modules/3.10.0-327.10.1.el7.x86_64/build结果是指向缺失的死链接/usr/src/kernels/3.10.0-327.10.1.el7.x86_64。确实,/usr/src/kernels/是空的。

谷歌搜索表明,许多版本的 CentOS 需要 VBGA 补丁才能安装工作,但我没有看到任何特定于 CentOS 7 的此类注释或涉及缺少内核头文件的注释。

kernel centos virtualbox

4
推荐指数
1
解决办法
3万
查看次数

我如何/应该保持 libc 和内核同步?

如果我从 kernel.org 编译最新的内核,制作一个 deb 包并将其安装在我的 Debian 系统上,我是否应该担心 libc(和任何其他库?)和内核不同步?

我模糊地理解内核开发人员努力不破坏暴露给用户空间的 API/ABI,但我想偶尔会发生中断,至少出于某些合法原因?如果是这样,是否有地方记录工作 libc 版本与内核版本的映射?

c kernel debian glibc linux-kernel

4
推荐指数
1
解决办法
214
查看次数

在系统调用中挂起挂起作业的正常关闭

当我昨天暂停系统时,工作并没有终止,systemd-suspend.service从那以后我的工作一直处于不间断的睡眠状态:

# systemctl list-jobs
  JOB UNIT                    TYPE  STATE  
21595 post-resume.target      start waiting
21593 systemd-suspend.service start running
21592 suspend.target          start waiting
21596 post-resume.service     start waiting

# systemctl status systemd-suspend.service
? systemd-suspend.service - Suspend
   Loaded: loaded (/nix/store/2jspk70lir7jcn1krax8haw2j7486i3a-systemd-243.3/example/systemd/system/systemd-suspend.se>
   Active: activating (start) since Sat 2020-04-04 03:07:36 CEST; 23h ago
     Docs: man:systemd-suspend.service(8)
 Main PID: 16761 (systemd-sleep)
       IP: 0B in, 0B out
    Tasks: 1 (limit: 4915)
   Memory: 1.0M
      CPU: 20ms
   CGroup: /system.slice/systemd-suspend.service
           ??16761 /nix/store/2jspk70lir7jcn1krax8haw2j7486i3a-systemd-243.3/lib/systemd/systemd-sleep suspend

Apr 04 03:07:36 phlegethon systemd[1]: Starting Suspend...
Apr 04 …
Run Code Online (Sandbox Code Playgroud)

linux kernel io suspend freeze

4
推荐指数
1
解决办法
1326
查看次数

尽管配置为 swappiness=1,但交换率很高

我们有月球服务器 - 版本 rhel 7.5

在这台服务器上消费swap的行为很奇怪

我们将其配置/proc/sys/vm/swappiness为 1 并重新启动服务器

但是我们可以看到服务器正在吃15G,而可用的是44G!

怎么可能??

[root@moon01 network-scripts]# more /proc/sys/vm/swappiness
1
[root@moon01 network-scripts]# free -g
              total        used        free      shared  buff/cache   available
Mem:            125          80          38           0           6          44
Swap:            15          15           0
Run Code Online (Sandbox Code Playgroud)

根据我的理解,只有当可用接近最后几千兆内存时,交换才会增加

但情况并非如此

rhel kernel memory swap

4
推荐指数
1
解决办法
299
查看次数

/boot/vmlinuz 文件不存在

我正在使用 debian,当我只是检查我的文件系统时没有vmlinuz文件,经过一些谷歌搜索后,许多没有 vmlinuz 的用户无法启动,但我的计算机启动良好。还有一个损坏的符号链接指向它,/boot/vmlinuz这让我非常确定它在我之前安装 debian 时就在那里。这是正常的还是出了什么问题?我曾经删除过引导分区,但我认为我可以修复它(之后我没有做任何与内核相关的事情)。是这个原因吗?我怎样才能把它带回来。而且我initrd.img的 72MB 大小不是很大吗?

boot kernel debian initrd

4
推荐指数
1
解决办法
812
查看次数

sysctl -p 在 /proc/sys/pcie_aspm 上失败

当我们sysctl -p在我们的 rhel 7.2 上运行时,server1我们得到

sysctl -p
fs.file-max = 500000
vm.swappiness = 10
vm.vfs_cache_pressure = 50
sysctl: cannot stat /proc/sys/pcie_aspm: No such file or directory
net.core.somaxconn = 1024

# ls /proc/sys/pcie_aspm
ls: cannot access /proc/sys/pcie_aspm: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是,当我们运行sysctl -p其他的server2

我们得到了没有错误的好结果

sysctl -p
fs.file-max = 500000
vm.swappiness = 10
vm.vfs_cache_pressure = 50
net.core.somaxconn = 1024
Run Code Online (Sandbox Code Playgroud)

该文件 -/proc/sys/pcie_aspm此服务器上也不存在 ( server2)

那么为什么sysctl -p失败server1呢?

linux rhel kernel sysctl

4
推荐指数
1
解决办法
242
查看次数