8000 feat(minvmd,minimald): boot minimald as pid-1 via initramfs by norrietaylor · Pull Request #373 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

feat(minvmd,minimald): boot minimald as pid-1 via initramfs - #373

Merged
norrietaylor merged 1 commit into
mainfrom
minvmd-stage2-initramfs-boot
Jun 10, 2026
Merged

norrietaylor merged 1 commit into
mainfrom
minvmd-stage2-initramfs-boot

Conversation

@norrietaylor
@norrietaylor norrietaylor commented Jun 9, 2026 •
Copy link
Copy Markdown
Member

Ships minimald as the kernel's initramfs /init, replacing the block-root stub boot. Stage-2 PR 1 of 2.

What

  • scripts/build-initramfs.sh cross-compiles minimald (static aarch64-musl) and packs it as a newc cpio /init.
  • The kernel boots the initramfs; minimald runs as pid-1, mounts /dev (devtmpfs) + the generic upstream rootfs (/dev/vda) + pseudo-fs, chroots in, and emits the boot READY marker.
  • VmConfig boots an initramfs (required) + the rootfs as a /dev/vda block device. Drops exec_target and the block-root init= cmdline.
  • libkrun kernel/disk formats typed as #[repr(u32)] enums (KernelFormat / DiskFormat) per Evan's review on feat(minvmd): boot a microVM from kernel + rootfs built as minimal packages #367.

Why initramfs over block-root

The block-root path (init=/sbin/minimald on an ext4 root) required baking minimald into the rootfs. Shipping it in the initramfs keeps the upstream microvm-rootfs package generic — minimald is delivered separately. Block-root was a stepping stone (decided in the #361 / #368 restack).

Proof

boot_e2e boots the initramfs with MINVMD_INITRAMFS and asserts the READY round-trip. CI cross-builds the initramfs on the Linux artifacts job. Validated locally: cross build + cross clippy clean for aarch64-musl; minvmd build + clippy + 52 unit tests green.

Stack

  1. This PR — boot minimald as pid-1 via initramfs.
  2. minvmd-stage2-vsock-session — serve sessions over the bridge (relay + run_on_uds + session e2e).

Replaces #361 + #368 (to be closed).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Guest boot now uses initramfs-based startup with minimald running as PID 1
    • READY marker signaling via vsock to indicate guest readiness
    • New script to build cross-compiled initramfs artifacts
  • Documentation

    • Updated boot flow docs for three-artifact pipeline (kernel, rootfs, initramfs) and local run instructions
  • Refactor

    • Replaced kernel/disk magic numbers with ty 8000 ped enums; VM config now uses initramfs instead of exec target
  • Chores / CI

    • CI updated to build/upload initramfs, focus E2E on boot_e2e, and remove autospawn-e2e
  • Tests

    • boot_e2e updated to require initramfs env var

@coderabbitai
coderabbitai Bot commented Jun 9, 2026 •
Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

This PR moves booting to an initramfs-based three-artifact flow, adds minimald PID-1 guest init and READY signaling, replaces raw krun format constants with enums, refactors VmConfig and VMM wiring for MINVMD_INITRAMFS, and updates tests, build scripts, CI workflow, README guidance, and local ignore rules.

Changes

Initramfs-driven Boot Architecture

Layer / File(s) Summary
krun Type System: Enums for Kernel and Disk Formats
crates/minvmd/src/krun/raw.rs, crates/minvmd/src/krun/mod.rs, crates/minvmd/src/krun/ctx.rs
KRUN format constants are replaced by KernelFormat and DiskFormat enums, and ctx APIs now accept typed format parameters.
VmConfig Refactor: Exec-Target to Initramfs
crates/minvmd/src/vm.rs, crates/minvmd/src/image.rs
VmConfig now stores initramfs instead of exec_target, apply() now boots with initramfs and fixed cmdline, and image helpers/tests now resolve/initramfs env and typed kernel format.
Minimald Guest Module: PID-1 Boot and Filesystem Setup
Cargo.toml, crates/minimald/Cargo.toml, crates/minimald/src/lib.rs, crates/minimald/src/guest.rs
Linux guest dependencies and exports are added, plus new guest logic for READY-vsock emission, mount wrappers, rootfs entry/chroot, and pseudo-filesystem mounting.
Minimald Main: Initramfs Detection and Guest Boot
crates/minimald/src/main.rs
Linux main now detects /init, runs initramfs boot path, reuses earlier host config construction, and serves guest UDS with guest-rooted config after mount/chroot handling.
Minvmd Host Wiring: VMM Child and Validation
crates/minvmd/src/cmd/vmm_child.rs, crates/minvmd/src/bin/krun_smoke_child.rs, crates/minvmd/tests/boot_e2e.rs
VMM child now resolves kernel/rootfs/initramfs and drops MINVMD_EXEC; smoke child uses KernelFormat variants; boot e2e now requires MINVMD_INITRAMFS.
Build, CI, and Documentation Rollout
Cargo.toml, scripts/build-initramfs.sh, .github/workflows/ci-macos.yml, crates/minvmd/README.md, .gitignore
Adds initramfs build profile/script, updates CI to build/upload/use initramfs artifact and removes autospawn-e2e, rewrites README boot instructions to three artifacts, and adds local scratch ignore entries.

Sequence Diagram(s)

sequenceDiagram
  participant CI
  participant MinvmdHost
  participant MinimaldGuest
  CI->>MinvmdHost: provide kernel rootfs initramfs artifacts
  MinvmdHost->>MinimaldGuest: boot VM with initramfs as pid1
  MinimaldGuest->>MinimaldGuest: mount filesystems and enter rootfs
  MinimaldGuest->>MinvmdHost: send READY marker over vsock
  MinvmdHost->>MinvmdHost: continue boot e2e flow after READY
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • gominimal/minimal#344: Shares the READY-marker bootstrap and host/guest boot handshake paths that this PR moves to an initramfs-first model.
  • gominimal/minimal#337: Touches the same image.rs and vm.rs contract/wiring areas that are further changed here for initramfs inputs.
  • gominimal/minimal#354: Directly related to the autospawn-e2e CI job path, which this PR removes from ci-macos.yml.

Suggested labels

needs-human

Suggested reviewers

  • twitchyliquid64
  • evanspearman

Poem

🐇 I packed a tiny /init in hay,
Three artifacts hopped into play,
A READY tap crossed vsock air,
While mounts and chroots found their lair,
And moonlit CI nibbled green all day.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(minvmd,minimald): boot minimald as pid-1 via initramfs' clearly and specifically summarizes the main architectural change—migrating minimald boot from block-root init= to initramfs-based PID 1 execution—which is the core purpose of this multi-file changeset across both crates.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands and usage tips.

@norrietaylor norrietaylor changed the title feat(minvmd,minimald): boot minimald as pid-1 via initramfs [WIP] feat(minvmd,minimald): boot minimald as pid-1 via initramfs Jun 10, 2026
@norrietaylor
Copy link
Copy Markdown
Member Author

@CodeRabbit review

@coderabbitai
coderabbitai Bot commented Jun 10, 2026 •
Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@norrietaylor norrietaylor changed the title [WIP] feat(minvmd,minimald): boot minimald as pid-1 via initramfs feat(minvmd,minimald): boot minimald as pid-1 via initramfs Jun 10, 2026
@coderabbitai coderabbitai Bot left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
crates/minimald/src/main.rs (1)

241-276: 💤 Low value

Consider logging READY marker failure in the fallback path for consistency.

Line 250 silently discards the READY marker error (let _ = ...), while Lines 269-271 log a warning when the same operation fails. For consistent observability, consider logging in both paths:

-        let _ = guest::emit_ready_marker().await;
+        if let Err(e) = guest::emit_ready_marker().await {
+            tracing::warn!(error = %e, "initramfs fallback: READY marker failed");
+        }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/minimald/src/main.rs` around lines 241 - 276, In run_initramfs replace
the silent discard of guest::emit_ready_marker() in the enter_rootfs fallback
with the same warning logging used later: call guest::emit_ready_marker().await
and if it returns Err(e) use tracing::warn!(error = %e, "initramfs: READY marker
failed (initramfs-only fallback)") so the READY marker failure is logged
consistently; locate the let _ = guest::emit_ready_marker().await line inside
the if let Err(e) = guest::enter_rootfs(...) { ... } block and change it to an
if let Err(e) = guest::emit_ready_marker().await { tracing::warn!(...) }.
.github/workflows/ci-macos.yml (1)

61-74: 💤 Low value

Cache key might not invalidate on Rust toolchain updates.

The cache key ${{ runner.os }}-stage2-artifacts-${{ hashFiles('**/Cargo.lock') }} includes the OS and dependency lock but not the Rust toolchain version. If stable updates (e.g., 1.75 → 1.76), the cache will serve artifacts built with the older compiler, which cargo rebuilds incrementally but may slow down CI.

For tighter cache semantics, consider including the Rust version:

key: ${{ runner.os }}-stage2-artifacts-${{ steps.toolchain.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}

(where steps.toolchain references the dtolnay/rust-toolchain@stable step with id: toolchain).

This is optional—incremental builds handle version mismatches correctly, but it improves cache hit quality.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci-macos.yml around lines 61 - 74, The cache key for
actions/cache currently uses runner.os and Cargo.lock hash but omits the Rust
toolchain, so updates to the toolchain can cause stale artifact cache hits;
update the cache key used by the actions/cache step (key property) to include
the toolchain cache identifier produced by the rust toolchain setup step
(reference the setup step id: toolchain and its output, e.g.,
steps.toolchain.outputs.cachekey) so the key becomes runner.os + toolchain cache
key + Cargo.lock hash to ensure cache invalidation on toolchain changes.
scripts/build-initramfs.sh (1)

31-31: ⚡ Quick win

Consider sorting find output for reproducible builds.

The find . | cpio pipeline creates archives whose content order depends on filesystem iteration order, leading to non-deterministic output. For reproducible builds and easier supply-chain verification, sort the file list before passing to cpio:

-( cd "$STAGE" && find . | cpio -o -H newc ) > "$DEST"
+( cd "$STAGE" && find . | sort | cpio -o -H newc ) > "$DEST"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/build-initramfs.sh` at line 31, The find→cpio pipeline using STAGE
and DEST is non-deterministic because filesystem iteration order varies; fix it
by sorting the file list before piping to cpio (use a locale‑stable sort, e.g.
set LC_ALL=C and pipe find's output through sort) so the archive content order
is reproducible, i.e. ensure the command that currently reads the find . | cpio
-o -H newc invocation is changed to pass sorted input to cpio.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/minvmd/src/bin/krun_smoke_child.rs`:
- Around line 69-73: The smoke test currently picks KernelFormat::ImageGz for
aarch64 in krun_smoke_child.rs but production image.rs::kernel_format() returns
KernelFormat::Raw for aarch64 (and libkrun documents ImageGz as x86_64-only);
update the selection logic in krun_smoke_child.rs so that for target_arch =
"aarch64" you use KernelFormat::Raw (uncompressed Image) and reserve
KernelFormat::ImageGz only for x86_64 paths, ensuring the smoke test mirrors
production boot config and avoids using ImageGz on aarch64.

In `@crates/minvmd/src/image.rs`:
- Around line 62-76: Add unit tests for resolve_initramfs_path to mirror the
coverage of resolve_kernel_path()/resolve_rootfs_path(): create three tests
named resolve_initramfs_path_errors_on_missing_env,
resolve_initramfs_path_errors_on_empty_env, and
resolve_initramfs_path_returns_path_when_set (place them after the existing
resolve_rootfs_path_errors_on_missing_env test); each should manipulate the
MINVMD_INITRAMFS env var (remove it, set to empty, set to a valid path), call
resolve_initramfs_path(), assert it returns VmError::MissingEnv for
missing/empty cases (matching var: "MINVMD_INITRAMFS") and returns the expected
PathBuf for the valid path case, and ensure the env var is cleaned up after each
test.

---

Nitpick comments:
In @.github/workflows/ci-macos.yml:
- Around line 61-74: The cache key for actions/cache currently uses runner.os
and Cargo.lock hash but omits the Rust toolchain, so updates to the toolchain
can cause stale artifact cache hits; update the cache key used by the
actions/cache step (key property) to include the toolchain cache identifier
produced by the rust toolchain setup step (reference the setup step id:
toolchain and its output, e.g., steps.toolchain.outputs.cachekey) so the key
becomes runner.os + toolchain cache key + Cargo.lock hash to ensure cache
invalidation on toolchain changes.

In `@crates/minimald/src/main.rs`:
- Around line 241-276: In run_initramfs replace the silent discard of
guest::emit_ready_marker() in the enter_rootfs fallback with the same warning
logging used later: call guest::emit_ready_marker().await and if it returns
Err(e) use tracing::warn!(error = %e, "initramfs: READY marker failed
(initramfs-only fallback)") so the READY marker failure is logged consistently;
locate the let _ = guest::emit_ready_marker().await line inside the if let
Err(e) = guest::enter_rootfs(...) { ... } block and change it to an if let
Err(e) = guest::emit_ready_marker().await { tracing::warn!(...) }.

In `@scripts/build-initramfs.sh`:
- Line 31: The find→cpio pipeline using STAGE and DEST is non-deterministic
because filesystem iteration order varies; fix it by sorting the file list
before piping to cpio (use a locale‑stable sort, e.g. set LC_ALL=C and pipe
find's output through sort) so the archive content order is reproducible, i.e.
ensure the command that currently reads the find . | cpio -o -H newc invocation
is changed to pass sorted input to cpio.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: cb13f9f7-63ff-40f3-bdbb-3d1c8b122bf8

📥 Commits

Reviewing files that changed from the base of the PR and between 00c1dc8 and c6b5b85.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (17)
  • .github/workflows/ci-macos.yml
  • .gitignore
  • Cargo.toml
  • crates/minimald/Cargo.toml
  • crates/minimald/src/guest.rs
  • crates/minimald/src/lib.rs
  • crates/minimald/src/main.rs
  • crates/minvmd/README.md
  • crates/minvmd/src/bin/krun_smoke_child.rs
  • crates/minvmd/src/cmd/vmm_child.rs
  • crates/minvmd/src/image.rs
  • crates/minvmd/src/krun/ctx.rs
  • crates/minvmd/src/krun/mod.rs
  • crates/minvmd/src/krun/raw.rs
  • crates/minvmd/src/vm.rs
  • crates/minvmd/tests/boot_e2e.rs
  • scripts/build-initramfs.sh

Comment on lines +62 to +76
/// Resolve the initramfs path from `MINVMD_INITRAMFS`.
///
/// This is the cpio initramfs whose `/init` is minimald (booted as pid-1).
/// Returns `VmError::MissingEnv` when the variable is unset or empty.
pub fn resolve_initramfs_path() -> Result<PathBuf, VmError> {
let val = std::env::var("MINVMD_INITRAMFS").map_err(|_| VmError::MissingEnv {
var: "MINVMD_INITRAMFS",
})?;
if val.is_empty() {
return Err(VmError::MissingEnv {
var: "MINVMD_INITRAMFS",
});
}
Ok(PathBuf::from(val))
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Add test coverage for the new function.

The function follows the same pattern as resolve_kernel_path() and resolve_rootfs_path(), but unlike those functions, it has no tests. Add test cases covering:

  • Missing MINVMD_INITRAMFS env var (should return VmError::MissingEnv)
  • Empty MINVMD_INITRAMFS env var (should return VmError::MissingEnv)
  • Valid path (should return the PathBuf)
🧪 Proposed test coverage

Add these tests after the existing resolve_rootfs_path_errors_on_missing_env test:

#[test]
fn resolve_initramfs_path_errors_on_missing_env() {
    unsafe { std::env::remove_var("MINVMD_INITRAMFS") };
    let err = resolve_initramfs_path().unwrap_err();
    assert!(
        matches!(
            err,
            VmError::MissingEnv {
                var: "MINVMD_INITRAMFS"
            }
        ),
        "expected MissingEnv, got {err:?}"
    );
}

#[test]
fn resolve_initramfs_path_returns_path_when_set() {
    unsafe { std::env::set_var("MINVMD_INITRAMFS", "/boot/initramfs.cpio") };
    let path = resolve_initramfs_path().unwrap();
    assert_eq!(path, std::path::PathBuf::from("/boot/initramfs.cpio"));
    unsafe { std::env::remove_var("MINVMD_INITRAMFS") };
}

#[test]
fn resolve_initramfs_path_errors_on_empty_env() {
    unsafe { std::env::set_var("MINVMD_INITRAMFS", "") };
    let err = resolve_initramfs_path().unwrap_err();
    assert!(
8000

        matches!(
            err,
            VmError::MissingEnv {
                var: "MINVMD_INITRAMFS"
            }
        ),
        "expected MissingEnv, got {err:?}"
    );
    unsafe { std::env::remove_var("MINVMD_INITRAMFS") };
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/minvmd/src/image.rs` around lines 62 - 76, Add unit tests for
resolve_initramfs_path to mirror the coverage of
resolve_kernel_path()/resolve_rootfs_path(): create three tests named
resolve_initramfs_path_errors_on_missing_env,
resolve_initramfs_path_errors_on_empty_env, and
resolve_initramfs_path_returns_path_when_set (place them after the existing
resolve_rootfs_path_errors_on_missing_env test); each should manipulate the
MINVMD_INITRAMFS env var (remove it, set to empty, set to a valid path), call
resolve_initramfs_path(), assert it returns VmError::MissingEnv for
missing/empty cases (matching var: "MINVMD_INITRAMFS") and returns the expected
PathBuf for the valid path case, and ensure the env var is cleaned up after each
test.

Comment thread crates/minimald/src/main.rs Resolved
Ship minimald as the kernel's initramfs `/init`: `build-initramfs.sh`
cross-compiles the static aarch64 binary and packs it as a newc cpio.
The kernel boots the initramfs and runs `/init` (minimald) as pid-1;
minimald mounts `/dev` (devtmpfs), mounts the generic upstream rootfs
(`/dev/vda`) + pseudo-fs, chroots in, and emits the boot READY marker.

This replaces the block-root boot path (kernel `init=/sbin/<exec>` on an
ext4 root): minimald is no longer baked into the rootfs, so the upstream
`microvm-rootfs` package stays generic. Session state is on a tmpfs
(`/run/minimal`); no data disk.

- minvmd: `VmConfig` boots an initramfs (required) + the rootfs as a
  `/dev/vda` block device; drops `exec_target` and the block-root cmdline.
  `MINVMD_INITRAMFS` is the new required boot input.
- minimald: `/init` detection (argv[0] basename) + `run_initramfs`
  (mount + READY + serve on the guest UDS); `guest` module mount helpers.
- Type the libkrun kernel/disk formats as `#[repr(u32)]` enums
  (`KernelFormat`/`DiskFormat`) per review on #367.
- CI: cross-build the initramfs on the Linux artifacts job; `boot_e2e`
  boots it with `MINVMD_INITRAMFS` and asserts READY. The vsock session
  round-trip (relay + `run_on_uds` serving) lands in a follow-up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@norrietaylor
norrietaylor force-pushed the minvmd-stage2-initramfs-boot branch from c6b5b85 to e697a95 Compare June 10, 2026 19:11
@coderabbitai coderabbitai Bot left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/ci-macos.yml (1)

10-25: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add crates/minimald/** to path filters to avoid CI blind spots.

This workflow now validates the initramfs boot path, but PRs that only change crates/minimald/** will not trigger it under push/pull_request path scoping. That can let boot regressions merge without running the macOS gate.

Suggested patch
 on:
   push:
     branches: ["main"]
     paths:
       - "crates/minvmd/**"
+      - "crates/minimald/**"
       - "crates/minimal2/**"
       - "Cargo.toml"
       - "Cargo.lock"
       - ".github/workflows/ci-macos.yml"
       - "scripts/**"
   pull_request:
     branches: ["main"]
     paths:
       - "crates/minvmd/**"
+      - "crates/minimald/**"
       - "crates/minimal2/**"
       - "Cargo.toml"
       - "Cargo.lock"
       - ".github/workflows/ci-macos.yml"
       - "scripts/**"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci-macos.yml around lines 10 - 25, The workflow's push and
pull_request path filters under the ci-macos workflow omit the
"crates/minimald/**" directory, so changes there won't trigger the macOS CI;
update both path lists (the 'paths:' entries shown in the diff for push and
pull_request) to include "crates/minimald/**" alongside the existing entries so
PRs and pushes touching that crate will run this workflow.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.github/workflows/ci-macos.yml:
- Around line 10-25: The workflow's push and pull_request path filters under the
ci-macos workflow omit the "crates/minimald/**" directory, so changes there
won't trigger the macOS CI; update both path lists (the 'paths:' entries shown
in the diff for push and pull_request) to include "crates/minimald/**" alongside
the existing entries so PRs and pushes touching that crate will run this
workflow.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4ac7147f-2ae4-4b05-9901-aa63593beab0

📥 Commits

Reviewing files that changed from the base of the PR and between c6b5b85 and e697a95.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (17)
  • .github/workflows/ci-macos.yml
  • .gitignore
  • Cargo.toml
  • crates/minimald/Cargo.toml
  • crates/minimald/src/guest.rs
  • crates/minimald/src/lib.rs
  • crates/minimald/src/main.rs
  • crates/minvmd/README.md
  • crates/minvmd/src/bin/krun_smoke_child.rs
  • crates/minvmd/src/cmd/vmm_child.rs
  • crates/minvmd/src/image.rs
  • crates/minvmd/src/krun/ctx.rs
  • crates/minvmd/src/krun/mod.rs
  • crates/minvmd/src/krun/raw.rs
  • crates/minvmd/src/vm.rs
  • crates/minvmd/tests/boot_e2e.rs
  • scripts/build-initramfs.sh
✅ Files skipped from review due to trivial changes (1)
  • .gitignore
🚧 Files skipped from review as they are similar to previous changes (14)
  • crates/minvmd/src/bin/krun_smoke_child.rs
  • crates/minvmd/tests/boot_e2e.rs
  • crates/minvmd/src/krun/mod.rs
  • crates/minimald/Cargo.toml
  • Cargo.toml
  • crates/minimald/src/lib.rs
  • crates/minvmd/src/cmd/vmm_child.rs
  • scripts/build-initramfs.sh
  • crates/minvmd/src/image.rs
  • crates/minvmd/src/krun/ctx.rs
  • crates/minvmd/src/vm.rs
  • crates/minvmd/src/krun/raw.rs
  • crates/minimald/src/main.rs
  • crates/minimald/src/guest.rs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

0