Skip to content

msl 0.2.0

Choose a tag to compare

@onexay onexay released this 29 Sep 18:01
cb90aad

Added

  • msl shuts down cleanly when you log out, restart or shut down the Mac (#52). Before, the VM died with msld: distributions got no warning, and writes not yet synced were lost. msld now stops the distributions (5 s grace), unmounts and flushes their disks, and powers the VM off. It runs as a LaunchAgent (~/Library/LaunchAgents/dev.msl.msld.plist) that launchd starts on demand when msl connects, and gives up to 30 s to do this. msl --uninstall removes it.
  • Each new distribution gets its own disk, a sparse ext4.img in its install location, like WSL's ext4.vhdx (#50). Disks are attached to the running VM through 16 NBD disk slots served by msld. --manage --move, per-distribution --manage --resize, --export --vhd, --import --vhd, --import-in-place and --install --vhd-size now work; images are raw ext4, not VHDX. Distributions from earlier versions stay on the shared data.img until --move. Virtualization.framework passes no flushes to hot-attached disks, so fsync inside a distribution isn't a durability point: writes are flushed to the SSD when a disk is detached and at shutdown (Disk and storage).
  • [msl2] nestedVirtualization (default true): /dev/kvm in the distributions on an M3 or later.
  • The VM keeps one machine identifier across boots, and its /etc/machine-id is that identifier's UUID.

Changed

  • The documentation is now the MSL documentation site, https://onexay.github.io/msl-docs/ (source). msl no longer builds a site of its own, and its docs/ folder holds the developer notes.
  • The kernel and the VS Code extension moved to their own repositories, msl-kernel and msl-vscode-extension. msl pins a release of each (scripts/pin.sh) and bundles it as before.
  • Kernel kernel-6.18.15-msl-a1a22bd: KVM is built in, so /dev/kvm works in the distributions with nested virtualization (KVM_GET_API_VERSION 12 on an M3 Pro), and uname -r shows the release, 6.18.15-msl-a1a22bd, instead of 6.18.15.

Install: sh install.sh (or sh install.sh --version 0.2.0). Update an existing install with msl --update.

Kernel Linux 6.18.15-msl-a1a22bd, release kernel-6.18.15-msl-a1a22bd
VS Code extension release vscode-0.1.1, installed by msl --manage-ide
Commit cb90aad
Requires Apple silicon, macOS 26 or later
GPL sources BusyBox and e2fsprogs: the attached Debian source packages busybox_* and e2fsprogs_*. Kernel: attached to kernel-6.18.15-msl-a1a22bd.
Built by CI run 36607685165, Xcode 26.6
Signing ad-hoc (not notarised); checksum not PGP-signed

msl-0.2.0-macos-arm64.tar.gz SHA-256: 3ea4b2fed50950013670ffbd7940bfa1dc4f2425cc08bd4ae8794dd9690ee0e0