标签: linux-kernel

X11如何与内核交互/执行登录

据我了解,对于与 Linux 内核的基于文本的交互,一个名为init开始getty(或agetty)的程序连接到下面的一个 TTY 设备/dev并提示输入用户名。此后,login运行一个调用的程序,提示输入用户的密码,如果正确,则启动用户首选的外壳程序(例如bashcsh)。此时,bash 通过 TTY 设备与内核交互。

这个登录过程如何在 X11 上工作?X11 是否通过 TTY 与内核交互?

login x11 tty linux-kernel getty

15
推荐指数
1
解决办法
1980
查看次数

将“memfd”视为“拥有文件的进程”是错误的吗?

https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/

从理论上讲,您可以在memfd_create()不引入新系统调用的情况下实现 [ ] 行为,如下所示:

int fd = open("/tmp", O_RDWR | O_TMPFILE | O_EXCL, S_IRWXU);

(注意,为了更方便地保证这里的 tmpfs,我们可以使用“ /dev/shm”代替“ /tmp”)。

因此,最重要的问题是为什么我们需要第三条路?

[...]

  • 后备内存属于拥有文件的进程,不受挂载配额的限制。

^ 我认为这句话的第一部分不能依赖是正确的吗?

所述memfd_create()的代码被作为“的字面实施链接的文件居住在[α] TMPFS必须是内核内部”。跟踪代码,我理解它的不同之处在于不实施 LSM 检查,还创建了 memfds 来支持“密封”,正如博客文章继续解释的那样。但是,我非常怀疑memfds正在考虑不同的,以原则上TMPFILE。

具体来说,当OOM 杀手来敲门时,我认为它不会解释 memfds 持有的内存。这可能总计高达 50% 的 RAM - tmpfssize= 选项的值。内核不会为内部 tmpfs 设置不同的值,因此它将使用默认大小 50%。

所以我认为我们通常可以预期拥有大型 memfd 但没有其他重要内存分配的进程不会被 OOM 杀死。那是对的吗?

shared-memory resources linux-kernel out-of-memory

15
推荐指数
1
解决办法
1166
查看次数

在运行时更改内核参数

在尝试修复一个模糊的硬件错误时,有人建议向内核添加几个参数可能会解决该问题。

我当然可以这样做,但我想知道是否可以对正在运行的内核进行这些更改。特别是,我知道procfssysfs提供了一种对正在运行的内核进行更改的方法,但我不确定如何将内核参数名称映射到文件路径。(我还假设并非所有设置都可以在运行时更改,并且一旦系统启动,这些特定参数很可能无法配置。)

我感兴趣的具体参数是

i8042.nomux=1 i8042.reset
Run Code Online (Sandbox Code Playgroud)

我特别不确定是否可以在正在运行的系统上发出重置命令。

如果这些参数在运行时可以调整,我在哪里可以找到它们?

linux-kernel

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

CPU 警告 - abrt-watch-log

我在Intel(R) Xeon(R) CPU X5690 @ 3.47GHz上运行Red Hat Enterprise Linux Server release 7.1 (Maipo)

我不断收到此错误abrt-watch-log

root       888     1  0 Aug03 ?        00:00:00 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG at list_del corruption list_add corruption do_IRQ: stack overflow: ear stack overflow (cur: eneral protection fault nable to handle kernel ouble fault: RTNL: assertion failed eek! page_mapcount(page) went negative! adness at NETDEV WATCHDOG ysctl table check failed : nobody cared IRQ …
Run Code Online (Sandbox Code Playgroud)

linux linux-kernel

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

如何让 SysRq 在笔记本电脑上工作?

我的/proc/sys/kernel/sysrq包含数字 502,但 Alt+SysRq+... 似乎不适用于我的 HP Pavilion 笔记本电脑。我该如何解决?

更新 1:顺便说一下:我的打印屏幕键和任何其他键都没有像“SysRq”这样的附加标签。

更新 2:

  • 硬件型号:HP Pavilion 17 笔记本电脑
  • 键盘布局:德语、QWERTZ

keyboard-layout magic-sysrq linux-kernel

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

什么程序正在降低我的熵池水平?

我制作了一个简单的 bash 脚本,用于检查 /dev/random 中的熵池级别。我意识到我这样做的方式,我在每次检查时稍微降低它(cat /proc/sys/kernel/random/entropy_avail)但是因为我以每 2 秒一次的频率检查它的水平,它已经足够了完全恢复甚至增加的时间。我进行了 1 小时 40 分钟的测量。与此同时,我没有做任何我认为会降低熵的事情(比如创建 SSH 密钥等)。但是我被告知(在 IRC 上)连接到 Internet 的简单事实可能会降低我的熵,因此我在完全与网络断开连接的笔记本电脑上重复了该实验,并且出现了完全相同的行为。

我不知道哪个程序正在降低池中的熵。我在断开连接的笔记本电脑上安装了非常少的 arch linux(总共安装了 646 个软件包),而我在测量期间连接到 Internet 的主笔记本电脑正在运行 gentoo,其中安装了大约 800 个软件包,并且没有在后台运行特定程序,除了“默认”的。我在两台机器上都安装了 DE(xfce)。这是数据的情节: 熵池水平与时间

编辑:这是我的无互联网笔记本电脑的数据: 笔记本电脑上的熵池水平

Edit2:禁用 ASLR(使用 grub 启动时添加了 norandmaps 内核参数)仍然会产生相同的行为,因此 ASLR 不是罪魁祸首。另一个显示禁用 ASLR 的数据的图: 使用 norandmaps 内核参数,行为相同

编辑 3:显然我的问题是这个问题的重复。我遵循了作为公认答案给出的命令,即sudo perf record -e random:\* -g -a -D 1000 -T sleep 60perf script。输出文件很大(4.4 Mb 的文本数据),这是前几行:

 交换器 0 [000] 3491.433002:随机:mix_pool_bytes_nolock:ffffffff8173e956 池:字节 16 调用方 add_interrupt_randomness
              5ea5d9 __mix_pool_bytes (/lib/modules/4.6.2-1-ARCH/build/vmlinux)
              5ec601 add_interrupt_randomness (/lib/modules/4.6.2-1-ARCH/build/vmlinux)
              2d5729 …

random linux-kernel

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

为什么Linux内核源码的git clone比解压出来的tar.xz大很多?

当我直接将内核下载为 typetar.xz并解压时,大小约为 1GB。但是当我git clone这里下载它时,大小约为 7GB。它只显示主分支。为什么会有如此巨大的差异?

linux-kernel

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

Htop 显示一个核心 100% cpu 使用率,但没有进程使用太多 cpu

这与这个问题非常相关,但由于它实际上没有任何令人满意的答案,我想我可以问一个新问题。

此屏幕截图显示 htop 指示一个核心利用率为 100%,但没有进程使用任何大量 CPU:

htop 的一个核心为 100%,处理速度要低得多

我认为这意味着内核出于某种未知的原因使用了这么多的CPU,但我还没有找到一个很好的方法来调查这个问题。(现在考虑使用 eBPF)我认为这可能与我的磁盘加密和磁盘访问有关,但 iotop 没有显示任何重要的磁盘使用情况。我正在运行带有完全标准内核的 Arch Linux。

这个问题最近出现了几次,如果我重新启动,总是会消失,并且总是需要至少几个小时的时间才能出现。

任何有关如何调试此问题或根本原因可能是什么的想法和建议都将非常受欢迎。

编辑:

所以这个新的屏幕截图显示 htop 设置为显示内核和用户线程,但对于高 cpu 使用率仍然没有明确的解释:

htop 具有内核和用户线程

编辑2:

bfptrace以下屏幕截图显示了运行时的结果bpftrace -e 'profile:hz:99 /cpu == 0/ { @[kstack] = count(); }'。由于某种原因,内核似乎花费了大量时间acpi_os_execute_deferred

在此输入图像描述

linux linux-kernel cpu-usage

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

cp vs. cat 复制文件

cp a bcat a > b,有什么区别?

在 linux 内核源代码树 ( arch/x86/boot/install.sh) 的x86 安装脚本中,两者都使用:

cat $2 > $4/vmlinuz
cp $3 $4/System.map
Run Code Online (Sandbox Code Playgroud)

如果一个比另一个更好,为什么他们不保持相同的格式?

bash linux-kernel

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

Debian Linux Kernel 和 Linux-libre 有什么区别?

在自由相关问题方面,Debian Linux Kernel 和 Linux-libre 之间有什么区别?

我知道 Debian Linux 内核可以加载非自由模块,而在 Linux-libre 中它们已被列入黑名单。

debian linux-kernel linux-libre

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