标签: linux-kernel

我在哪里可以找到 Linux 内核文件?

  1. 在所有 Linux 发行版中是否有任何可以找到内核文件的通用目录?如果是,请告诉我如何浏览到该目录?

  2. 我在哪里可以找到 Ubuntu 和 RedHat 操作系统中的 Linux 文件?

linux linux-distributions linux-kernel

20
推荐指数
1
解决办法
9万
查看次数

如何检查哪些 SysRq 功能已启用?

该文件/proc/sys/kernel/sysrq包含一个数字,例如:

  • 1 (启用所有 SysRq 命令),
  • 0 (禁用所有),
  • 或用作二进制位掩码的基数为 10 的正整数,启用函数的子集。

有人能告诉我当位掩码设置为 时允许/禁止哪些 SysRq 函数438吗?


$ cat /proc/sys/kernel/sysrq
438
Run Code Online (Sandbox Code Playgroud)

linux bash bitmaps linux-kernel sysrq

19
推荐指数
2
解决办法
7788
查看次数

启动后如何查看Linux中的所有启动消息?

相关问题是:

Linux 在哪里放置引导消息?

记录引导过程的日志文件的名称

然而,这些都没有回答这个问题。这个问题与如何查看所有启动消息有关。

如果您想获得具体信息,这适用于 Gentoo、OpenRC、现代内核、4.9.6。然而,适用于所有发行版的通用解决方案会更可取。

问题是有时错误或警告会滚动得太快以至于无法看到。也不总是可以简单地向上滚动,原因有两个(即使在 inittab 中使用 --noclear):当切换到帧缓冲区时,滚动到切换之前的位置不再可能,第二,在 X 启动之后,在新文本添加到缓冲区之前,切换到控制台并尝试向上滚动根本不允许滚动。有时,在 dmesg 或 /var/log/messages 中根本找不到某些消息。

如何查看所有消息?

我在这里看到有人https://www.linuxquestions.org/questions/linux-newbie-8/please-how-to-pause-scrolling-messages-at-boot-323772/建议按下滚动锁可能会暂停它。然而,这充其量也不是一个非常优雅的解决方案——一些消息滚动得太快,这些天系统在启动时会突然产生大量文本。

这就是我理想中想要的:

  • 一条消息 | 如果可能的话,less 类型的解决方案,或其他一些单步执行引导过程的方式。
  • 一种确保打印在屏幕上的所有内容也被记录的方法。

有没有一种直接的方法来实现这些?

我知道一种解决方案:

CONFIG_BOOT_PRINTK_DELAY:将每个启动printk消息延迟N毫秒

奇怪的是,我似乎甚至不允许在我的 menuconfig 中选择 BOOT_PRINTK_DELAY,我可以在搜索它时找到它,但是在 Kernel hacking -> printk 和 dmesg 选项 -> 下,我只有“在 printks 上显示时间信息”和“默认”消息日志级别”。printk 延迟选项在哪里?我是否需要先启用其他功能才能使其可见?什么?如果有人知道,最好将此作为答案的一部分。

但无论如何,这需要内核重新编译,这对于看似微不足道的任务来说是一个丑陋且侵入性的黑客攻击。非常欢迎这样做的正确方法。

linux boot scrolling linux-kernel dmesg

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

/proc/vmstat 中的参数 (pgpgin, pswpin) 和 (pswpout, pgpgout) 之间的确切区别是什么?

请注意,此问题仅针对linux。而到swap space,我指的是专用的swap partition

google在这方面做了一点,发现了这些definitions

Paging refers to writing portions, termed pages, of a process’ memory to disk.
Swapping, strictly speaking, refers to writing the entire process, not just part, to disk.
In Linux, true swapping is exceedingly rare, but the terms paging and swapping
often are used interchangeably.
Run Code Online (Sandbox Code Playgroud)

page-out: The system's free memory is less than a threshold "lotsfree" and unnused / least used pages are moved to the …
Run Code Online (Sandbox Code Playgroud)

memory linux swap virtual-memory linux-kernel

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

Linux 过量使用内存

我一直在使用 研究 Linux 中的内存过度使用/proc/sys/vm/overcommit_memory,并且我阅读了几篇文章,但它们并没有说同样的话。

该文档在“走错方向”标题下继续说,“值 1:过度使用,0(默认):不要”,但在接下来的几行中,它提到了类似的事情,这实际上不是真的,0 意味着“猜测有多少过度承诺是合理的”。这意味着使用值 0不会禁用内存过量使用,对吗?

它还表示 1 表示“从不拒绝任何 malloc()”,2 表示“对过度使用要准确——永远不要提交大于交换空间加上物理内存的一部分 overcommit_ratio 的虚拟地址空间。”

另一方面,Red Hat 杂志指出,“如果值为 0,则内核检查以确定是否有足够的可用内存来授予来自应用程序的 malloc 调用的内存请求。如果有足够的内存,则请求被批准。否则,它被拒绝并向应用程序返回错误代码。” 听起来就像禁用过度使用。

“如果该值设置为 1,则内核授予超过系统中物理 RAM 和交换量的分配,如 overcommit_ratio 值所定义......如果此文件中的设置为 2,则内核允许所有内存分配,无论当前的内存分配状态如何。” 就值 1 和 2 而言,这与之前的文档所说的相反,对吗?

有谁知道什么是真正正确的,以及是否可以“禁用”过度使用?

linux virtual-memory linux-kernel

12
推荐指数
1
解决办法
8663
查看次数

Linux 内核在 Pentium 4 上的“切换到时钟源 tsc”时挂起

硬件:戴尔 Dimension 4500S:i845G、奔腾 4、库存 + 2GB RAM 和最新(大约 2002 年)BIOS 更新。

我一直在从源代码构建 Linux 系统,到目前为止它是本书的LFS 7.0。我构建的第一个内核运行良好,但有很多问题和膨胀,所以我现在正在为我的目标硬件优化内核(见上文)。

我最近的配置尝试,以及几次尝试和错误的变化,一直在打印“切换到时钟源 tsc”语句上。我的“好”内核从来没有出现过问题……顺便说一下,这是 3.1.0 版。两者都是从相同的源代码树构建的,没有补丁make mrpropermake menuconfig、 等,所以显然我只是缺少一些关键CONFIG_XXX标志。

我已经盯着这个问题一天多了,我已经构建了多少次内核,但无济于事。

我觉得有趣的一件事是我得到的好内核:

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
Run Code Online (Sandbox Code Playgroud)

另外,了解一下可能很有用....

# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc acpi_pm
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种选项的构建配置,但此时我不记得任何细节,所以请不要问。从我的搜索中,我发现并测试了几个内核参数,比如clocksource=pitnotsc,但所有这些都失败了。再一次,我希望我已经写下了迄今为止我尝试过的每一件事,事后看来……

大多数论坛示例都是针对 2.x 内核的,并通过引导选项的一些变化解决了问题,但我的好内核仅使用root=/dev/sdaX ro. 所以我知道如果我能找到正确的构建配置,我对这个硬件和内核 3.1.0 组合很满意。

此外,大多数发布类似问题的人都说几分钟后系统将继续加载并且一切正常。我已经让它闲置了足够长的时间来做晚饭,但它仍然没有恢复加载。

我希望你们中的一位大师会读到这个并说“嘿,是的,我只是在我的 P4 恐龙上设置了 CONFIG_XXX=y,它工作得很好。” :)

让我知道您需要我尝试或检查什么,我很乐意发布结果。

linux linux-kernel

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

linux 有没有什么措施可以防止分叉炸弹?

#include <unistd.h>
int main(int argc, char* argv[]) {
  while(1)
  {
    fork();
  } 
}
Run Code Online (Sandbox Code Playgroud)

我在我的 linux 上运行这个程序,终端上没有任何输出,操作系统似乎死了。linux对这种内存不足的程序有什么保护措施吗?

linux c linux-kernel

12
推荐指数
4
解决办法
4163
查看次数

如何防止内核像 AP 所宣传的那样限制 TX 功率

我使用外部 23dBm 天线和带有 Atheros AR9285 芯片的 Ubiquiti SR71-E 在大约 150m 的距离内连接到 eduroam。我的系统是 Debian Jessie 服务器 - 因此连接由 wpa_supplicant 管理。身份验证超时导致连接稳定性问题。迁移到 backports 内核 4.7.0 解决了这些问题。

但是现在内核正在减少(思科)AP 所宣传的 tx-power。该函数可以在“has_80211h_pwr”和“has_cisco_pwr”下找到

http://lxr.free-electrons.com/source/net/mac80211/mlme.c

问题是 iwconfig wlan0 txpower XX iw dev wlan0 set txpower fixed XXXX 只允许将 txpower 设置在 0 和新限制之间。由于 AP 通告了 8dbm 的限制,因此连接被迫达到 1 Mb/s,并且仍然有很高的“Tx 重试次数”和“无效杂项”计数。

linux wireless-networking linux-kernel debian-jessie

12
推荐指数
1
解决办法
3449
查看次数

如何在linux上完全清除文件系统的缓存?

在一次性能测试中,我想绕过linux系统缓存的影响(包括页面缓存/inode缓存等)。

我尝试过 O_DIRECT 标志,但结果证明直接 I/O 仍然“享受”某些缓存的效果。

有没有彻底关闭系统缓存效果的方法?

linux filesystems linux-kernel

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

如何修复启动时未找到 Manjaro 错误休眠设备?

安装更新并重新启动后,我收到了这些错误。

ERROR: resume: hibernation device 'UUID=long number here' not found
ERROR: device '/dev/mapper/ManjaroVG-ManjaroRoot' not found. Skipping fsck.
ERROR: Unable to find root device '/dev/mapper/ManjaroVG-ManjaroRoot'.
Run Code Online (Sandbox Code Playgroud)

然后我被丢弃到带有消息的恢复外壳SH: can't access tty: job control turned off

这是一个不到一周的安装,我在图形安装程序上检查了 lvm 和 luks 加密。

linux boot arch-linux linux-kernel manjaro

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