如何在 Linux 上设置虚拟内存分配 (vmalloc) 以避免内核驱动程序崩溃

如何在 Linux 上设置虚拟内存分配 (vmalloc) 以避免内核驱动程序崩溃

我正在研究加载新型视频驱动程序的 Linux 内核。我最初通过以下命令在 Linux Ubuntu 18.04(32 位)上加载了该驱动程序:

$sudo insmod myDriverName.ko myParam

此命令的结果在终端中产生“killed”。查看 dmesg(内核消息),我发现以下内容:

[ 239.265508] 大小为 67112960 的 vmap 分配失败:使用 vmalloc= 增加大小

我应该在哪里设置 vmalloc?

答案1

这里有一个很好的答案:http://thinking-electron.blogspot.com/2015/05/how-to-increase-vmalloc-size-vmalloc.html

基本上,需要通过 Grub 在启动时设置 vmalloc 值。

在 /etc/default/grub 中,将以下行:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 更改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vmalloc=512M" 这会将可用的总 vmalloc 增加到 512MB,而不是 128MB(默认情况下)

设置新值后,执行以下命令$sudo update-grub重新生成正确的 Grub 配置文件。重新启动机器并再次测试驱动程序。问题应该已经消失,驱动程序应该可以正常启动。

相关内容