Repository navigation
doc: list the kernel configuration checks in the build guide - #480
Merged
Merged
Conversation
The build guide spread the kernel configuration requirements over three paragraphs and omitted the network group that f745c42 added: the build now requires IPv4, IPv6 without SIT, and virtio-net so that guests can configure the portable profile's dual-stack NIC. It also omitted the virtio-console, shared-status, and watchdog groups, said that only the native build checks the configuration, and did not say what verify checks. Replace those statements with one table of every group that build-kernel checks after olddefconfig, its purpose, and where packaging and verify check the configuration again. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The guide overstates verify hardening coverage because it does not reject arbitrary module options.
1 open finding
What changed in this PR
Documents the kernel configuration validation performed during build, packaging, and verification.
Changes:
- Consolidates kernel requirements into eight configuration groups.
- Clarifies Docker and native build validation.
- Describes packaging and
verifycoverage.
| File | Description |
|---|---|
doc/build.md |
Adds consolidated kernel configuration checks and validation details. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+260
to
+261
| `kernel/config-microvm` for the direct-boot, sandbox, network, time-ABI, and | ||
| hardening groups plus the xe9 console and virtio-fs. When |
Pedro Henrique Penna (ppenna)
deleted the
doc-sync/kernel-config-checks
branch
October 10, 2026 17:14
This was referenced Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
doc/build.mddescribed the kernel configuration requirements in three separate paragraphs and missed the network group that f745c42 (guest: configure the portable profile's IPv6 identity) added. Since that commit, every kernel build requires IPv4, IPv6 without the SIT driver, and virtio-net so guests can configure the portable network profile's dual-stack NIC. The guide also left out the virtio-console, shared-interrupt-status, and watchdog groups. It said the checks ran in the "native" build, but the Docker build runs the samebuild-kernelcommand. It also didn't say whatnvx.py verifychecks.This PR replaces those statements with one Kernel configuration checks section: a table of every group that
build-kernelchecks afterolddefconfig, what each group is for, and where packaging andverifycheck the configuration again. The existing rationale for the time-ABI and hardening settings stays where it was.Changes
CONFIG_INET,CONFIG_IPV6, noCONFIG_IPV6_SIT,CONFIG_VIRTIO_NET) to support the portable profile's dual-stack NIC, and SIT would add ansit0decapsulation deviceKernelBuildConstants.REQUIRED_NETWORK_CONFIGinscripts/nvx_tools/build_constants.py;_assert_network_kernel_configinscripts/nvx_tools/build.py; commit f745c42assert_required_kernel_configand theREQUIRED_*_CONFIG/DEBUG_WATCHDOG_CONFIGconstantsbuild-kernel, which the Docker build also runsbuild_kernelcallsassert_required_kernel_configright afterolddefconfig(build.py);docker/Dockerfilerunspython3 scripts/nvx.py build-kernelpackage_release→_validate_kernel_provenance→assert_required_kernel_config(scripts/nvx_tools/release.py)verifychecks the checked-inkernel/config-microvmfor the direct-boot, sandbox, network, time-ABI, and hardening groups plus xe9 and virtio-fs, and checks an existingbuild/vmlinux.configfor the direct-boot, sandbox, and network groups plus xe9verify_source_treeinrelease.pyolddefconfigdrops any required option" and the separate paragraph on Unix sockets, seccomp, and overlayfs redirects. Their content is now in the sandbox rowREQUIRED_SANDBOX_CONFIGNo design documents changed. The only changed path is
doc/build.md.Follow-ups (out of scope)
scripts/nvx.py --helpstill describesinitas "initialize the private submodule", butopenvmm/comes from the publicnanvix/openvmm, asdoc/contribute.mdanddoc/project-structure.mdsay. This is a code change, so it's left to a separate PR.unittest_results.txtfile thatdoc/project-structure.mddoesn't list. It looks like an accidental commit, so I didn't document it. Maintainers should decide whether to remove it.build.md's list ofbuild_constants.pynamespaces doesn't nameAzureLinuxBuildConstants. This is minor and separate from this topic.scripts/setup/README.md(ci: record benchmark host provenance and storage telemetry #479), which is documentation outsidedoc/, and severaldoc/files. I left all of them alone.Validation
python -m unittest scripts.test_nvx_tools.CliTests scripts.test_performance.PerformanceTests: Ran 110 tests, OK (skipped=1)doc/build.mdand the 7 Markdown files that link to it resolves;build.mdhas one H1 and balanced code fences;doc/design.mdlinks every chapter indoc/design/.git diff --check: cleanpython scripts/nvx.py verify: passes (devcb0fba8baea62dc2b367199c1903927c7aa17e27, OpenVMM pin7bf0ee28b826374a2d386067df0456b81bcae818)