标签: kernel

dmesg 中的虚拟内核内存布局意味着什么?

在浏览“dmesg 输出”时,我可以看到一个我无法正确理解的值列表。

Memory: 2047804k/2086248k available (3179k kernel code, 37232k reserved, 1935k data, 436k init, 1176944k highmem)
virtual kernel memory layout:
    fixmap  : 0xffc57000 - 0xfffff000   (3744 kB)
    pkmap   : 0xff800000 - 0xffa00000   (2048 kB)
    vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
    lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
      .init : 0xc0906000 - 0xc0973000   ( 436 kB)
      .data : 0xc071ae6a - 0xc08feb78   (1935 kB)
      .text : 0xc0400000 - 0xc071ae6a   (3179 kB)
Run Code Online (Sandbox Code Playgroud)

从值中我了解到我有 2GB RAM(物理内存)。但其余的事情对我来说似乎是魔术数字。

我想简要了解每个(fixmap、pkmap 等)(如果有更多疑问,我会将每个作为单独的问题发布)?

有人可以向我解释一下吗?

linux kernel memory

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

如何调试来自输入设备的输入 (/dev/input/event*)

我有一个使用 imon-driver 的 IR 接收器,我想让它与内核一起工作。现在遥控器(image)上的一半键可以工作,但是像数字键这样的重要想法却不起作用!

奇怪的想法是内核键映射模块(rc-imon-pad)似乎是正确的,但它似乎并没有真正使用,因为没有该模块,完全相同的键也可以工作。

当我加载 imon 时,似乎 rc-imon-pad 模块总是被加载,然后我怀疑键码被缓存,所以如果我卸载 rc-imon-pad 并没有什么区别

现在我迷路了,如果我这样做了,cat /dev/input/event5或者ir-keytable -t无论我按什么键都有数据,所以驱动程序注册了按钮,但似乎它们被转换为错误的键码。

我的内核是 Natty 的 ubuntu 股票内核(Linux xbmc 2.6.37-11-generic #25-Ubuntu SMP Tue Dec 21 23:42:56 UTC 2010 x86_64 GNU/Linux)

drivers kernel remote input

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

如何生成 Module.symvers?

我最近经历了Unpacking kernel-source rpm off-system (OpenSuse)?; 由于在我的机器上花费了 > 10 小时,想象一下我的惊讶,在完成那里描述的过程后,我找不到任何Module.symvers地方!

当我搜索“generate Module.symvers”时,我得到了这个:

注意:即使
设置了 CONFIG_MODVERSIONS,"modules_prepare" 也不会构建 Module.symvers ;因此,需要
执行完整的内核构建才能使模块版本控制工作。
( Linux 内核文档 :: kbuild : modules.txt )

...但我真的不明白 - 内核不是在上一步中构建的(在上面给出的链接中描述?我当然知道 CC 需要 10 小时以上才能生成一大堆 *.o文件和 LD 来链接它们,所以一定已经建立了一些东西。但如果是这样,那么在哪里Module.symvers

更明确地说,我应该调用什么命令来生成 Module.symvers?我知道这make prepare行不通——但是什么命令会起作用?

kernel kernel-modules

20
推荐指数
3
解决办法
5万
查看次数

为什么 Red Hat Linux 使用这么旧的内核?

为什么 RHEL(及其衍生产品)使用如此旧的内核?它使用 2.6.32-xxx,这对我来说似乎很旧。他们如何使用该内核支持更新的硬件?据我所知,这些发行版确实在相当现代的硬件上运行。

rhel kernel scientific-linux

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

给定内核 ATA 异常,如何确定哪个物理磁盘受到影响?

我今天早上醒来收到一封通知电子邮件,其中包含一些令人不安的系统日志条目。

Dec  2 04:27:01 yeono kernel: [459438.816058] ata2.00: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x6 frozen
Dec  2 04:27:01 yeono kernel: [459438.816071] ata2.00: failed command: WRITE FPDMA QUEUED
Dec  2 04:27:01 yeono kernel: [459438.816085] ata2.00: cmd 61/08:00:70:0d:ca/00:00:08:00:00/40 tag 0 ncq 4096 out
Dec  2 04:27:01 yeono kernel: [459438.816088]          res 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4 (timeout)
Dec  2 04:27:01 yeono kernel: [459438.816095] ata2.00: status: { DRDY }
  (the above five lines were repeated a few times at a short interval)
Dec …
Run Code Online (Sandbox Code Playgroud)

linux logs kernel sata disk

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

我应该安装哪个 Debian 内核?

我已经开始在 amd64 上安装 Debian 测试版,但出现了一个要求我安装内核的屏幕。它给了我之间做出选择linux-image-3.16-2-amd64linux-image-amd64none

这些选项有什么区别?我选择哪个?

kernel debian linux-kernel debian-installer

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

如何(真正)在 Linux 中禁用 NCQ

我在 VHDL 中实现了我自己的串行 ATA 主机总线适配器 (HBA) 并将其编程到 FPGA 上。FPGA是可以用任何数字电路编程的芯片。它还配备了串行收发器,可为 SATA 或 PCIe 生成高速信号。

此 SATA 控制器支持 SATA 6 Gb/s 线速,并使用 ATA-8 DMA-IN/OUT 命令以高达 32 MiB 的数据块与设备传输数据。该设计已被证明可以以最大速度运行(例如三星 SSD 840 Pro -> 超过 550 MiB/s)。

在对几个 SSD 和 HDD 设备进行了一些测试之后,我购买了一个新的希捷 6 TB Archive HDD ( ST6000AS0002 )。这款硬盘的读取性能高达 190 MiB/s,但写入性能只有 30 到 40 MiB/s!

所以我深入挖掘并测量了传输的帧(是的,FPGA 设计可以实现)。据我所知,希捷硬盘已准备好一次性接收传输的前 32 MiB。此传输以 580 MiB/s 的最大线路速度进行。之后,硬盘将剩余字节停止超过800 毫秒!然后 HDD 准备好接收下一个 32 MiB 并再次停止 800 毫秒。总而言之,1 GiB 传输需要超过 30 秒,相当于大约 35 MiB/s。

我假设这个 HDD 有一个 32 MiB …

linux drivers kernel sata

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

由于勘误,TSC_DEADLINE 被禁用

我将我的计算机发送给制造商进行诊断并帮助解决它遇到的视频输出问题。他们更新了 BIOS。从那时起我就得到

[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x20 (or later)
Run Code Online (Sandbox Code Playgroud)

我之前没有安装任何微码ucode包,而且我不习惯收到此消息。

我已经联系了制造商,他们回答说“不记得你的票号,但怀疑我们更新了 BIOS”,所以他们的帮助不大。

它启动并工作,但 TSC_DEADLINE 重要或有用吗?

我唯一能找到的是:https : //git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?id=73b866d89bf7c9a895d5445faad03fa3d56c8af8

但这似乎只适用于 VirtualBox,无论如何我已经在运行内核 4.14,所以我想如果该提交要解决我的问题,它已经存在。

ryan@pocketwee:~$ uname -a
Linux pocketwee 4.14.0-1-amd64 #1 SMP Debian 4.14.2-1 (2017-11-30) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

kernel debian firmware

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

如何检查 Linux 内核是否启用了“Retpoline”?

对于“Spectre”安全漏洞,引入了“Retpoline”作为降低风险的解决方案。但是,我读过一篇文章提到:

如果你在没有 . 的情况下构建内核CONFIG_RETPOLINE,则无法使用 retpoline 构建模块,然后期望它们加载 - 因为不会导出 thunk 符号。

如果您使用 retpoline 构建内核,则可以成功加载不是使用 retpoline 构建的模块。(来源

是否有一种简单且通用/通用/统一的方法来检查内核是否启用了“Retpoline”?我想这样做,以便我的安装程序可以使用要安装的正确构建的内核模块。

linux kernel linux-kernel

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

新的硬件支持是如何添加到 linux 内核的?

想象一下,有一家公司 A 发布了一个新的图形适配器。谁来管理导致 Linux 内核将来支持这个新图形适配器的过程?这是如何进行的?我很好奇如何处理对任何新硬件的内核支持;Windows 上的公司自己开发驱动程序,但 Linux 如何获得特定的硬件支持?

linux drivers kernel

19
推荐指数
1
解决办法
1309
查看次数