#linux-kernel #kernel-module #qemu #linux #toml-config #out-of-tree #lkm

app nixmodule

一个简单的qemu包装器,用于自动测试多个内核版本下的树外Linux内核模块

6个版本 (3个重大更新)

0.4.2 2023年3月6日
0.4.1 2022年9月19日
0.4.0 2022年5月15日
0.3.0 2022年4月22日
0.1.0 2022年4月15日

#370 in Unix API

Download history 44/week @ 2024-04-01

每月 64 次下载

Apache-2.0 OR MIT

94KB
683 代码行

NixModule cargo-badge

一个简单的qemu包装器,用于自动测试多个内核版本下的树外Linux内核模块。提供的镜像都包含KASAN,以帮助您开发。

cargo install nixmodule

以下示例运行单个内核,不带参数运行时测试您nixmodule-config.toml

预构建内核

查看nixmodule-config.toml以获取使用所有这些镜像的示例配置。

版本 BzImage 头文件 LTS?
5.17.2 bZimage 头文件
5.15.33 bZimage 头文件
5.10.110 bZimage 头文件
5.8.9 bZimage 头文件
5.4.188 bZimage 头文件
4.19.237 bZimage 头文件
4.14.275 bZimage 头文件
4.9.309 bZimage 头文件
4.4.302 bZimage 头文件

预构建磁盘镜像

ImgName 链接 SSH密钥
角石 镜像 密钥
Syzkaller Debian Buster 镜像 密钥
Syzkaller Debian Stretch 镜像 密钥

使用其他内核

使用打包脚本

KERNEL=4.14.275 ./scripts/package.sh

此脚本将构建所需的bzImage以及一个包含构建树外内核模块所需的头文件/模块信息的归档linux-$VERSION-headers.tar.gz

然后,将新内核添加到您的配置文件nixmodule-config.toml

[[kernels]]
version = "4.19.237"
url_base = "https://files.sboc.dev"
headers = "linux-headers/linux-4.19.237-headers.tar.gz" 
kernel = "linux-kernels/bzImage-linux-4.19.237"
runner = "qemu-system-x86_64"

[kernels.disk]
name = "stretch"
url_base = "https://files.sboc.dev"
path = "images/stretch/stretch.img"
sshkey = "images/stretch/stretch.id_rsa"
boot = "/dev/sda"

您可以选择禁用kvm

kvm = false

并增加启动超时时间

timeout = 600

没有kvm,您可能需要增加默认超时时间。

使用其他磁盘镜像

填写您想要使用新磁盘的内核的[kernels.disk]条目

[kernels.disk]
name = "stretch"
url_base = "https://files.sboc.dev"
path = "images/stretch/stretch.img"
sshkey = "images/stretch/stretch.id_rsa"
boot = "/dev/sda"

引导应包含用于引导的分区。这将传递给qemu作为内核参数

-append "console=ttyS0 root=$BOOT earlyprintk=serial net.ifnames=0 nokaslr"

依赖关系

~10–24MB
~371K SLoC