Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

microVM: reconcile the 64-KiB command-line limit with the guest kernel's limit

Open
#570 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@esaurez is already working on this.

Since Oct 20, 2026.

  • #661 by @esaurez — open

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
15/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
linux, python, rust

Research direction

Start with section 5.1.2 of the architecture guide in doc/design/, then the limit constant in openvmm/openvmm_defs/src/microvm.rs (around L38-39 and the check near L1453-1456) and the Linux direct loader at vm/loader/src/linux/microvm.rs L288. Also check kernel/config-microvm, kernel/patches/, and scripts/nvx_tools/sandbox.py L22-26. The issue leaves the fix open, so first settle which option to take with maintainers. Done means the guide states the guest limit, the chosen option is implemented, and a boot test confirms the last profile token reaches the guest.

Written by the indexing model from the issue text.

Description

Summary

Section 5.1.2 of the architecture guide in doc/design/ limits the complete NUL-terminated kernel command line to 64 KiB, and OpenVMM enforces exactly that limit. The NVX guest kernel parses less: x86 Linux's COMMAND_LINE_SIZE is 2,048 bytes, as scripts/nvx_tools/sandbox.py also assumes, and neither kernel/config-microvm nor kernel/patches/ changes it. The VMM cannot read the kernel's limit from the uncompressed ELF image either.

OpenVMM can therefore accept a command line between 2 KiB and 64 KiB that the guest kernel truncates, and it reports no error. The machine profile appends its own tokens last (device discovery, nvx_control_tty=hvc2, and the network and host filesystem bootstrap tokens), so they are the first to be lost. This contradicts the rule that invalid configurations are rejected, never silently adjusted (section 1.4.1).

This is a gap in the architecture guide rather than an implementation deviation. Found while auditing the implementation against the guide.

Where it applies

Options

  • State the guest kernel's limit in section 5.1.2, and have OpenVMM reject an effective command line that exceeds it.
  • Raise the guest kernel's command-line size with a kernel patch, so that the 64-KiB contract holds end to end.

Tasks

  • Choose an option and update section 5.1.2 of the architecture guide.
  • Implement it in nanvix/openvmm, and promote the pin, or in kernel/patches/.
  • Add a boot test with a command line near the limit that checks that the last machine-profile token reaches the guest.
  • If the guest kernel's limit rises above 4 KiB, make the managed agent read /proc/cmdline to its end within the new limit. The C agent and its Rust port in #531 (mappings::prepare) read at most 4,095 bytes, so the agent would miss a later nvx_maps= token and refuse MAPS (#531 review).
Dominant language
Python
Stars
408
Forks
28
Avg merge
15h 20m
Merged PRs (30d)
301

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/nvx

All issues in microsoft/nvx

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.