Questions tagged «linux-kernel»

有关Linux内核和Linux内核相关主题的问题,例如。实现细节,例如系统调用,内核自定义等。对于不涉及内核细节的Linux用户空间主题,[linux]或发行标签更为合适。

4
为什么新的Intel i7-6500U CPU无法启动linux内核?
我知道很难隔离CPU,但是我看到的错误表明这就是问题所在。 这绝对不是故障或损坏的硬件问题。在过去的几天里,我整天都在运行Windows 10,这件事很快!没有崩溃。更重要的是,我运行Windows内存检查器。记忆力很好。 机器规格 该机器是全新的联想Yoga 710 15英寸 x64 Intel i7-6500 CPU @ 2.50 GHz, 2601 Mhz, 2 Cores, 4 Logical Processors SMBIOS Version 2.8 BIOS Mode UEFI 16.0 GB DDR4 Ram 256 MB SSD 隔离到Linux内核(?) 我在两个地方都遇到了相同的问题 archlinux-2016.08.01-dual.iso ubuntu-gnome-16.04.1-desktop-amd64.iso 对于Arch,问题只是在从USB记忆棒启动时间歇出现。我设法将Arch安装在驱动器的100GB ext4分区上。该安装在引导期间会间歇性地出现相同的问题(例如90%的时间)。如果我通过了引导程序,那么在我执行第一对终端命令后,该问题就会随机出现,最终导致完全死锁。 对于Ubuntu-USB记忆棒甚至无法启动。我立即被这些相同的错误所制止。僵局... 这么多错误... 每当发生这种情况时,日志中都会塞满与内存相关的错误,但是我看到的主要错误是: General protection fault 0000[#1] PREEMPT SMP RIP …

2
如果请求的IP地址与另一个(禁用的)接口相关联,Linux不会回复ARP请求消息
我有一台PC(内核3.2.0-23-generic),它已192.168.1.2/24配置为eth0接口,并且还使用接口的地址192.168.1.1和192.168.1.2地址tun0: root@T42:~# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:41:54:01:93 brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 scope global …

1
了解Linux内核虚拟网桥端口编号
我有一个Linux内核虚拟桥,其中包含接口eth1和tap0: # brctl show br0 bridge name bridge id STP enabled interfaces br0 8000.00016c404fa3 no eth1 tap0 # 现在,当我查看虚拟交换机的MAC地址表时,它显示端口号2(tap0接口)和3(eth1接口): # brctl showmacs br0 port no mac addr is local? ageing timer 3 00:00:5e:00:01:c9 no 0.11 3 00:01:6c:40:2d:94 no 0.53 3 00:01:6c:40:4f:a3 yes 0.00 3 00:01:6c:55:3a:72 no 55.33 3 00:02:b3:8d:48:a7 no …


1
如何使用支持多台机器硬件的localmodconfig构建自定义内核?
将服务器配置为运行单个任务(如设备)时,可能会需要构建自定义内核。例如节省磁盘空间。 Ubuntu Core 13.10 amd64根文件系统的下载量为38 MB,其中包括所需依赖项的“ linux-image-generic”元软件包将下载79 MB的档案,而kernel-image-xyz-generic软件包的大小仍为14 MB。 对于构建从硬件不使用的模块中剥离的内核,该make localmodconfig命令是完成任务的正确工具。但是,运行构建和测试环境的虚拟机将加载与目标部署硬件不同的模块。和/或一段时间后,您的部署硬件可能会失效,并且使用了其他硬件。在发布内核更新的频率上,它可能变得太麻烦了,无法为每种不同的硬件配置构建自定义内核。 如何快速构建在几个不同硬件盒上运行的自定义Linux内核?

2
内核中哪个文件指定了fork(),vfork()…以使用sys_clone()系统调用
当使用ltrace跟踪系统调用时,我可以看到fork()使用sys_clone()而不是sys_fork()。但是我找不到定义它的linux源。 我的程序是 #include<stdio.h> main() { int pid,i=0,j=0; pid=fork(); if(pid==0) printf("\nI am child\n"); else printf("\nI am parent\n"); } 和ltrace输出是 SYS_brk(NULL) = 0x019d0000 SYS_access("/etc/ld.so.nohwcap", 00) = -2 SYS_mmap(0, 8192, 3, 34, 0xffffffff) = 0x7fe3cf84f000 SYS_access("/etc/ld.so.preload", 04) = -2 SYS_open("/etc/ld.so.cache", 0, 01) = 3 SYS_fstat(3, 0x7fff47007890) = 0 SYS_mmap(0, 103967, 1, 2, 3) …


1
找出RHEL 6与RHEL 5上CPU使用率较高的原因
我目前正在寻求将我们的系统从RHEL 5迁移到RHEL 6,但在RHEL 6机器上却遇到了意外的CPU使用率过高的问题。看来,这可能至少部分是由于使用select进行了可中断的睡眠。这是一个显示行为的简单示例: #include <sys/select.h> int main() { timeval ts; for (unsigned int ii=0; ii<10000; ++ii) { ts.tv_sec = 0; ts.tv_usec = 1000; select(0, 0, 0, 0, &ts); } return 0; } 在RHEL 5机器上,它将保持0%的CPU使用率,但是在安装了RHEL 6的相同硬件上,它将使用大约0.5%的CPU,因此,当运行30到50个程序select执行睡眠时,它会吃掉不必要地占用大量CPU。 我打开了一个Bugzilla,尝试运行OProfile,它在查看内核时仅显示应用程序的100%主内容,而poll_idle的内容仅显示99%以上(我在grub选项中设置了idle = poll以便可以捕获所有内容)。 关于我可以做些什么来尝试找出导致CPU使用率较高的原因的任何其他想法? 更新:我找到了性能工具,并得到以下输出: # Events: 23K cycles # # Overhead Command Shared …

1
如何调试系统冻结?
当我关闭笔记本电脑的盖子时,我遇到了奇怪的错误-系统严重冻结(对键无反应,没有ssh响应形式),并显示了一些奇怪的色彩效果。内核日志(重新引导后)未显示任何内容。我的问题是-如何调试它?也许有一种方法可以跟踪上一次调用的内核函数或类似的函数?


2
如何列出控制台和内核字体?
我已经安装了许多控制台字体/lib/kbd/consolefonts/。 如何列出它们(显然,我所能做的只是看文件名,而不看可用字体的列表)。 如何更改控制台字体? 我应该如何为这些字体创建用户可操作的目录/usr/local/lib/consolefonts/? 现在,我的内核接受SYSFONT参数:SYSFONT=latarcyrheb-sun16。我想要列出内核支持的字体以及如何选择它们(例如,如何列出内核编译的字体等)。

2
2.6.30.5 Linux内核中的struct task_struct定义在哪里?
在2.6.15版内核中,我知道可以重写task_struct文件(include / linux / sched.h),例如: struct task_struct { unsigned did_exec:1; pid_t pid; pid_t tgid; ... char hide; } 但是,不幸的是,当我升级到2.6.30.5版本时,我浏览了同一个文件,只是找到的声明task_struct,例如: struct task_struct; 而且我不知道为指定自己的文件应该参考哪个文件task_struct?有人能帮我吗?

2
Linux中最少的TCP MSS
Linux中的TCP MSS必须至少为88(include / net / tcp.h): /* Minimal accepted MSS. It is (60+60+8) - (20+20). */ #define TCP_MIN_MSS 88U 我的问题是:他们从哪里想到“ 60 + 60 + 8”,为什么?我得到20 + 20来自IP标头+ TCP标头。 编辑:仔细查看标题之后,公式对我来说是这样的: (MAX_IP_HDR + MAX_TCP_HDR + MIN_IP_FRAG) - (MIN_IP_HDR + MIN_TCP_HDR) 问题仍然存在:为什么?为什么Linux内核使用此公式,从而禁止(强制流)20个字节的TCP段?在这里想iperf。 EDIT2:这是我的用例。通过在套接字/连接上强制使用低MSS,堆栈发送的所有数据包的大小都将减小。我希望在与iperf一起进行数据包/秒测试时设置较低的MSS。由于此MSS的下限,我无法获得小于128字节(142字节的以太网帧)的IP数据包!我希望按照RFC 2544尽可能接近64字节的以太网帧大小。从理论上讲,这应该是可能的:18 + 20 + 20 <64。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.