{"id":15007482,"url":"https://github.com/landhb/nixmodule","last_synced_at":"2025-10-12T10:14:38.188Z","repository":{"id":40313806,"uuid":"479844009","full_name":"landhb/nixmodule","owner":"landhb","description":"Simple qemu wrapper to automatically test out-of-tree linux kernel modules against multiple kernel versions.","archived":false,"fork":false,"pushed_at":"2023-10-14T22:26:08.000Z","size":142,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T17:13:48.075Z","etag":null,"topics":["framework","kasan","kernel","linux","linux-kernel","lkm","out-of-tree","qemu","qemu-kvm","rust","testing"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/landhb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-09T21:09:09.000Z","updated_at":"2023-09-22T13:11:06.000Z","dependencies_parsed_at":"2023-10-15T19:53:48.795Z","dependency_job_id":null,"html_url":"https://github.com/landhb/nixmodule","commit_stats":{"total_commits":34,"total_committers":2,"mean_commits":17.0,"dds":0.1470588235294118,"last_synced_commit":"e0643f291e334359b5aea8858a28b45a21526f42"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fnixmodule","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fnixmodule/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fnixmodule/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fnixmodule/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/landhb","download_url":"https://codeload.github.com/landhb/nixmodule/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248064726,"owners_count":21041862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","kasan","kernel","linux","linux-kernel","lkm","out-of-tree","qemu","qemu-kvm","rust","testing"],"created_at":"2024-09-24T19:10:16.123Z","updated_at":"2025-10-12T10:14:33.170Z","avatar_url":"https://github.com/landhb.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# NixModule [![cargo-badge][]][cargo-link]\n\nSimple qemu wrapper to automatically test out-of-tree linux kernel modules across multiple kernel versions. The provided images all have `KASAN` to aide your development.\n\n```sh\ncargo install nixmodule\n```\n\n- [Pre-Built Kernels](#pre-built-kernels)  \n- [Pre-Built Disk Images](#pre-built-disks)  \n- [Using Other Kernels](#using-other-kernels)  \n- [Using Other Disk Images](#using-other-disks)  \n\n\nExample below running it against a single kernel, running without arguments tests against every kernel in your [`nixmodule-config.toml`](example/nixmodule-config.toml):\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/filter.png\"\u003e\n\u003c/p\u003e\n\n## Pre-Built Kernels \u003ca name=\"pre-built-kernels\" /\u003e\n\nCheck [`nixmodule-config.toml`](example/nixmodule-config.toml) for an example configuration using all of these images.\n\n| Version | BzImage   | Headers | LTS? |\n| :---:   | :---:     | :---:   | :---:   | \n| 5.17.2  | [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-5.17.2) | [Headers](https://files.sboc.dev/linux-headers/linux-5.17.2-headers.tar.gz) |    | \n| 5.15.33   | [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-5.15.33)  | [Headers](https://files.sboc.dev/linux-headers/linux-5.15.33-headers.tar.gz) |  Yes  | \n| 5.10.110   | [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-5.10.110)  | [Headers](https://files.sboc.dev/linux-headers/linux-5.10.110-headers.tar.gz) |  Yes  | \n| 5.8.9   | [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-5.8.9)  | [Headers](https://files.sboc.dev/linux-headers/linux-5.8.9-headers.tar.gz) |    | \n| 5.4.188 | [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-5.4.188)| [Headers](https://files.sboc.dev/linux-headers/linux-5.4.188-headers.tar.gz) | Yes  | \n| 4.19.237| [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-4.19.237) | [Headers](https://files.sboc.dev/linux-headers/linux-4.19.237-headers.tar.gz) | Yes  | \n| 4.14.275| [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-4.14.275) | [Headers](https://files.sboc.dev/linux-headers/linux-4.14.275-headers.tar.gz) | Yes | \n| 4.9.309 | [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-4.9.309) | [Headers](https://files.sboc.dev/linux-headers/linux-4.4.309-headers.tar.gz) | Yes  | \n| 4.4.302 | [bZimage](https://files.sboc.dev/linux-kernels/bzImage-linux-4.4.302) | [Headers](https://files.sboc.dev/linux-headers/linux-4.4.302-headers.tar.gz) | Yes  |\n\n## Pre-Built Disk Images \u003ca name=\"pre-built-disks\" /\u003e\n\n| ImgName    | Link      | SSH Key |\n| :---:   | :---:     | :---:   |\n| Cornerstone   | [Image](https://files.sboc.dev/images/cornerstone/cornerstone.img)  | [Key](https://files.sboc.dev/images/cornerstone/cornerstone.id_ecdsa)  |\n| Syzkaller Debian Buster   | [Image](https://files.sboc.dev/images/syzkaller-buster/buster.img)  | [Key](https://files.sboc.dev/images/syzkaller-buster/buster.id_rsa)  |\n| Syzkaller Debian Stretch   | [Image](https://files.sboc.dev/images/syzkaller-stretch/stretch.img)  | [Key](https://files.sboc.dev/images/syzkaller-stretch/stretch.id_rsa)  |\n\n## Using Other Kernels \u003ca name=\"using-other-kernels\" /\u003e\n\nUse the packing script\n\n```sh\nKERNEL=4.14.275 ./scripts/package.sh\n```\n\nThis builds the required `bzImage` and an archive `linux-$VERSION-headers.tar.gz` containing the headers/module info required to build an out-of-tree kernel module.\n\nThen add the new kernel to your configuration file `nixmodule-config.toml`:\n\n```toml\n[[kernels]]\nversion = \"4.19.237\"\nurl_base = \"https://files.sboc.dev\"\nheaders = \"linux-headers/linux-4.19.237-headers.tar.gz\" \nkernel = \"linux-kernels/bzImage-linux-4.19.237\"\nrunner = \"qemu-system-x86_64\"\n\n[kernels.disk]\nname = \"stretch\"\nurl_base = \"https://files.sboc.dev\"\npath = \"images/stretch/stretch.img\"\nsshkey = \"images/stretch/stretch.id_rsa\"\nboot = \"/dev/sda\"\n```\n\nYou can optionally disable kvm with:\n\n```toml\nkvm = false\n```\n\nAnd increase the boot timeout with:\n\n```toml\ntimeout = 600\n```\n\nWithout kvm you'll likely need to increase the default the timeout.\n\n## Using Other Disk Images \u003ca name=\"using-other-disks\"/\u003e\n\nFill out the `[kernels.disk]` entry for the kernel you'd like to use the new disk with:\n\n```toml\n[kernels.disk]\nname = \"stretch\"\nurl_base = \"https://files.sboc.dev\"\npath = \"images/stretch/stretch.img\"\nsshkey = \"images/stretch/stretch.id_rsa\"\nboot = \"/dev/sda\"\n```\n\nBoot should contain the partition to boot from. This is passed to qemu to append as kernel arguments:\n\n```\n-append \"console=ttyS0 root=$BOOT earlyprintk=serial net.ifnames=0 nokaslr\"\n```\n\n[//]: # (badges/links)\n[cargo-badge]: https://img.shields.io/crates/v/nixmodule.svg?label=crates.io\n[cargo-link]: https://crates.io/crates/nixmodule\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flandhb%2Fnixmodule","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flandhb%2Fnixmodule","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flandhb%2Fnixmodule/lists"}