noah
lima
noah | lima | |
---|---|---|
2 | 106 | |
1,860 | 13,972 | |
- | 1.0% | |
0.3 | 9.7 | |
almost 4 years ago | 6 days ago | |
C | Go | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
noah
-
The Tug-of-War over Server-Side WebAssembly
The other day I came across an interesting "alternative" to WASM which gives you OS portability using fully native code, without CPU portability, the latter seeming not that big of a deal these days anyway as cross compilers have got quite good and there are only two CPU archs in wide usage anyway.
The idea is to simply run normal Linux binaries on macOS and Windows. How? You create a virtual machine using the Mac/Windows APIs without any OS inside, in fact without even any virtual hardware. It's literally just a new address space and some trivial min-viable VM configuration. Then you map the ELF binary and a ld.so into the VM with a minimal ELF interpreter, kick off execution and anytime there's a syscall you trap it and translate to the host OS syscalls. It can work quite well on macOS because the syscall interface is so similar.
Note that this sort of VM is not:
• A sandbox
• A hardware abstraction
Apps run this way hold all their data in the filing system of the host OS, they use the network stack of the host OS, etc. The VM is only being used to allow trapping and emulation of the syscall interface. The app isn't aware that it's being run in a special CPU mode on top of an emulated kernel.
Advantages: lightweight, simple, apps can use all CPU features, can run at native speed, the Linux syscall interface is highly stable, based on POSIX specifications and you can easily pick a subset of it to standardize.
Disadvantages: requires the emulator, apps exposed to missing features or quirks of the host OS e.g. Windows file system performance is much lower than Linux.
WSL1 sort of worked that way, albeit without the VM aspect that lets userspace apps do it. They abandoned it partly for performance reasons and users expected all existing Linux apps to just work. But WASM doesn't target existing apps. It expects developers to bend and do things the WASM way, and accepts that not all apps are compatible with it, so that's not necessarily a problem.
An example of how to implement this is NOAH:
https://github.com/linux-noah/noah/
-
Lima: Linux-on-Mac (“macOS Subsystem for Linux”, “Containerd for Mac”)
There was an attempt, but it was archived https://github.com/linux-noah/noah
lima
-
Colima k8s nix setup
You can run a virtual machine (e.g. lima) from inside a nix-shell, exactly as you would do with a regular shell.
-
Ask HN: Startup Devs -What's your biggest pain while managing cloud deployments?
for others similarly curious, here's an example of the thing: https://github.com/noop-inc/template-java-spring-boot/blob/m...
they seem to be using the excellent lima <https://github.com/lima-vm/lima#readme> for booting on macOS; I run colima for its containerd and k8s support but strongly recommend both projects $(brew install lima colima)
- macOS 14.4 causes JVM crashes
- Lima launches Linux virtual machines for macOS
-
Simulate an Ubuntu-like VM inside macOS
Lima is what I use as well. It's quick and easy to just fire up a VM with default settings, but also very easy to configure with different file sharing options, port forwarding, different linux distributions, etc. (their examples are also pretty good IMO [1]).
In particular I use it to run an amd64 VM, which I need to run a stubborn service for work that doesn't run on arm CPUs.
[1] https://github.com/lima-vm/lima/tree/master/examples
-
Why are Apple Silicon VMs so different?
Lima (1) is a project that packages Linux distros for MacOS and executes them via qemu in the backend. Maybe you could solve your problem by launching one of their vms and inspecting the command line it generates. You might find an option you were missing.
(1) https://github.com/lima-vm/lima
-
The beginning of my eBPF Journey - Kprobe Adventures with BCC
If you wish to delve into all the configuration possibilities for Lima VM, you can visit this resource.
-
UTM – Virtual Machines for iOS and macOS
I'd say Lima and Colima should be enough for most use cases:
https://lima-vm.io/
https://github.com/abiosoft/colima
-
Lima: Linux Virtual Machines on macOS
Github: https://github.com/lima-vm/lima
Lima wraps QEMU in a simple CLI, with neat features for container users, such as filesystem sharing and automatic localhost port forwarding, as well as DNS and proxy propagation for enterprise networks. Rancher Desktop wraps Lima with k3s integration and GUI.
Talks: https://github.com/lima-vm/lima/blob/master/docs/talks.md
- FLaNK Stack Weekly for 17 July 2023
What are some alternatives?
HomeBrew - 🍺 The missing package manager for macOS (or Linux)
colima - Container runtimes on macOS (and Linux) with minimal setup
Docker-OSX - Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security Research! Docker mac Containers.
multipass - Multipass orchestrates virtual Ubuntu instances
yabai - A tiling window manager for macOS based on binary space partitioning
podman - Podman: A tool for managing OCI containers and pods.
workers-wasi
browser_wasi_shim - A WASI shim for in the browser
UTM - Virtual machines for iOS and macOS
wasi-threads
minikube - Run Kubernetes locally