
FreeBSD 16.0-CURRENT/aarch64 guest boots on Apple Virtualization.framework
A prepared FreeBSD 16.0-CURRENT/aarch64 guest boots to multiuser on Apple
以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。
A prepared FreeBSD 16.0-CURRENT/aarch64 guest boots to multiuser on Apple Virtualization.framework, persists data to UFS, configures vtnet0 through VZ NAT, writes through /dev/ttyV0.0 to a host file, and shuts down cleanly.
Committed-state run 179, shown at its natural duration. The framebuffer records boot and shutdown; the proof checker validates the separate serial, storage, and network evidence. Encoding and privacy details are in the media provenance record.
Path Observed result
EFI and loader VZ's generic EFI platform starts stock FreeBSD loader.efi, which hands off to the prepared arm64 kernel
Multiuser FreeBSD 16.0-CURRENT 41a46c2d46aa-dirty reaches late multiuser
Storage A file written to UFS on the writable virtio-block disk survives a shutdown and second VZ boot
Network vtnet0 acquires DHCP, installs a default route, and reaches the VZ NAT gateway
Virtio console FreeBSD creates /dev/ttyV0.0; a guest write reaches VZ's file-backed serial attachment
Completion The guest syncs and powers off, the harness exits zero, and no VZ VM service remains
Repeatability Fresh two-boot runs and a committed-state rerun produce the same 1,583-byte proof and pass the repository checker
The final configuration used one vCPU, 4 GiB of memory, generic EFI, one writable virtio-block boot disk, VZ NAT, graphics and audio, and one file-backed virtio console. It omitted the sample application's SPICE-agent console, its extra target disk, and VZ USB keyboard and pointing devices.
The tested host was an Apple M4 MacBook Air Mac16,12 running macOS 27.0 build 26A5388g with Xcode 27.0 build 27A5194q.
Use the right CURRENT media shape. The inspected disc1.iso did not behave as a valid raw USB disk: its GPT named a zero-filled EFI partition start while the FAT boot sector appeared later in the image. The mini-memstick supplied the valid raw-disk baseline.
Follow the ACPI handoff. VZ exposed an ACPI 2.0 EFI table and no EFI device-tree table. FreeBSD 15.1 stopped at No valid device tree; CURRENT's loader can continue when ACPI is present.
Separate the output channels. EFI and loader.efi render through GOP. The host serial file is a virtio-console backend and remains empty until the FreeBSD driver attaches and writes to it.
Order virtio-GPU requests after transport readiness. The final graphical guest included a local correction that deferred GPU control traffic until the parent transport had set DRIVER_OK.
Avoid the failing USB topology. The successful proof omitted VZ's USB keyboard and pointing device after the configured xHCI path produced an internal VZ failure.
Present one console, not two. Combining the sample's SPICE-agent virtio-console with a separate file-backed serial device produced vtcon0 and vtcon1. FreeBSD enqueued and notified vtcon1's DEVICE_READY control message, then waited indefinitely for its descriptor to appear on the used ring. Removing only the unused SPICE console left the file-backed port working.
The last item is the narrow reusable host-side result:
let serialPort = VZVirtioConsoleDeviceSerialPortConfiguration() serialPort.attachment = try VZFileSerialPortAttachment( url: serialLogURL, append: false )
configuration.serialPorts = [serialPort] configuration.consoleDevices = []
See the technical investigation for the stage-marker ladder and the exact A/B topology.
This is not yet proof that an unmodified FreeBSD release or CURRENT image is a drop-in VZ guest.
The successful guest retained diagnostic kernel instrumentation, used the local virtio-GPU sequencing correction, disabled the devmatch rc service, and ran a purpose-built rc.local proof. The functional GPU diff was not preserved as a repository patch, and the writable guest image is not distributed.
Conversely, the working path did not require a modified loader.efi or a FreeBSD virtio-console patch. Loader changes were diagnostic, and the console wait was avoided by correcting the VZ device topology.
The next useful upstream test is a stock headless CURRENT guest with one file-backed console and no VZ USB input. That removes the unpreserved GPU change while retaining the host configuration established here.
Proven VZ topology — exact host configuration, runner, checker, and troubleshooting for an already prepared writable guest.
Technical investigation — the minimal console differential, kernel marker evidence, and remaining attribution boundary.
Bring-up ledger — full hypotheses, experiments, supersessions, and closeout evidence.
VZ platform comparison — observed ACPI, PSCI, GICv3, timer, PCI, and virtio surface compared with FreeBSD arm64 requirements.
Committed evidence — checksum-pinned platform observations.
Repository contents
harness/ — bounded, scriptable VZ host application derived from the attributed upstream sample.
scripts/run-s5-handoff.sh — selects the single-console proof topology.
scripts/check-s5-bringup-proof.sh — validates the captured multiuser, storage, networking, and serial record.
freebsd/s5-handoff-markers.patch — preserved early loader/kernel handoff instrumentation.
guest/ and tools/ — observation and proof helpers.
evidence/ — release, media, loader, and reference-platform observations.
Ignored .artifacts/ content contains the writable VM images, source checkouts, and raw captures used during bring-up. None of those host-local artifacts are published.
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。