fix(bundle): Pin urunc at the commit that boots arm64 on cloud-hypervisor - #14
Merged
Merged
Conversation
…isor No sandbox booted on arm64 Linux under brig v0.3.0, which runs every sandbox on cloud-hypervisor. urunc gave the guest console=ttyS0, and cloud-hypervisor's arm64 UART is a PL011 (ttyAMA0), so the guest had no console. urunit could not hand the app a terminal, the app never ran, and the guest powered off at once; brig said only "sandbox did not become ready". Turning the PL011 on is not enough: cloud-hypervisor then appends earlycon= to the command line, after the "--" that starts the app's arguments, and the app receives it as an argument. urunc f6d54d6 boots a Linux guest on cloud-hypervisor on arm64 on the virtio console (hvc0) with the serial port off, as it already does on qemu. It is 74dd0cc plus that one commit, on the same branch. amd64 keeps console=ttyS0 and is unchanged. Signed-off-by: Anastassios Nanos <ananos@nofire.ai>
ananos
force-pushed
the
fix/urunc-arm64-virtio-console
branch
from
September 30, 2026 06:35
fb3c1ab to
2440e5c
Compare
ananos
marked this pull request as ready for review
September 30, 2026 06:35
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
brig v0.3.0 runs every sandbox on cloud-hypervisor, and on arm64 Linux none of them boots: the guest powers off within half a second and brig reports "sandbox did not become ready". urunc gives the guest
console=ttyS0, and cloud-hypervisor's arm64 UART is a PL011 (ttyAMA0), so the guest has no console. urunit then cannot hand the app a terminal (tcsetpgrpon a closed stdin fails withEBADF), the app never runs, andURUNIT_POWEROFFpowers the guest off. Switching the console tottyAMA0exposes a second problem: cloud-hypervisor appendsearlycon=pl011,mmio,<addr>to the command line, after the--that starts the app's arguments, and the app receives it as an argument.This patch pins urunc at
f6d54d6, which is74dd0ccplus one commit on the same branch: a Linux guest on cloud-hypervisor on arm64 boots on the virtio console (hvc0) with the serial port off, as urunc already does on qemu. amd64 keepsconsole=ttyS0and is unchanged.Changes
scripts/build-bundle.sh:URUNC_REF_DEFAULTmoves from74dd0cctof6d54d6, and the comment above it names the new commit.README.md,DESIGN.md,docs/variants.md: the pinned commit.Testing
On jetson6 (arm64, KVM), with the v0.1.0-rc11 rootless bundle laid down under a scratch
HOME, and urunc built from this commit's tree (2cfaa66c):brig sh ubuntu@x uname -ron a fresh sandbox returns6.12.95, rc 0, in 4.0 s. With rc11's own urunc it fails every time with "sandbox did not become ready", with either kernel.com.urunc.unikernel.hypervisor=cloud-hypervisor: no first exec failed. The agent answered in 812 ms (median) on hull-assets' arm64 kernel and 672 ms on bunny's. Fivebrig shruns per kernel all returned 0.--console tty --serial offandconsole=hvc0.test_unikernelsandtest_hypervisorspass.CI builds the amd64 and arm64 bundles from the new pin.