Isle - A Linux Runtime For Mac

Isle

Thanks for your interest in isle, Integrated System Linux Environment.

Isle is currently in alpha, but working relatively stably! This page will document features and known issues!

Isle is a bit like WSL (Windows Subsystem for Linux) for Mac.

Getting Started

Download the linux zip file from the release URL, unzip it, and put the executable in your $PATH. Then run linux, and enjoy Linux!

Current Release

v0.5.0: https://github.com/lab47/isle/releases/tag/v0.5.0

Usage

  • Start a linux shell: linux
  • Stop the background VM: linux --stop
  • Start the VM in the foreground to allow for easy debugging: linux --start
  • Get information on what options are available linux -h
  • The default root password is root
  • Your users password is the same as your username
  • Once sudo is installed in, your user will have sudo access.

Features

  • Automatic port forwarding: If a program listens on 0.0.0.0 within linux, that same port will be forwarded to it from your mac. Makes it easy to do most types of web development. NOTE: There is up to a 10 second delay before the port is detected as open.
  • File sharing: Within linux, you’ll find that ~/mac contains your home directory on the mac. And also ~/linux/home on mac contains the home directory within linux! These are relatively fast, but they do cross machine boundaries.
  • Runs OCI images: All the linux environments are spawned by fetching an OCI image, unpacking it, and running a shell. Ubuntu is the default, but you can use any you like.

Known Issues

  • Upon starting, sometimes users will get a disconnection error. Wait a second and retry a couple times. This is happening because there is a race condition in detecting that the VM is ready to access connections.
  • The Virtual Machine Service on intel takes up a lot of cpu when idle, currently investigating why.

Architecture

Isle uses Virtualization.framework, built into macs since 11.0, to spawn a linux VM. It then uses runc within the VM to provide distro-specific environments. MacOS 12.0+ is required as it uses the file sharing APIs that were added in 12.0 to provide access to the MacOS filesystem within linux.

Roadmap

  • Ability to run background services by default without weird .profile hacks
  • Perhaps a sort of “App Store” setup where you could add things like docker or tailscale to install and then run by default
Owner
lab47
Software Manifestation Division
lab47
Similar Resources

runtime - an abstraction library on top of the Open Policy Agent (OPA)

runtime - an abstraction library on top of the Open Policy Agent (OPA) Introduction The "runtime" project is a library that sits on top of OPA. The go

Nov 7, 2022

Open Source runtime scanner for OpenShift cluster and perform security audit checks based on CIS RedHat OpenShift Benchmark specification

Open Source runtime scanner for OpenShift cluster and perform security audit checks based on CIS RedHat OpenShift Benchmark specification

OpenShift-Ordeal Scan your Openshift cluster !! OpenShift-Ordeal is an open source audit scanner who perform audit check on OpenShift Cluster and outp

Sep 6, 2022

The dumb container runtime trying to be compatible with Kubernetes CRI

Go Dumb CRI The dumb container runtime trying to be compatible with Kubernetes CRI. Usage Run the server and create an IPC socket in /tmp/go-dumbcri.s

Dec 12, 2021

upgrade from controller-runtime 0.6.5. Reactor substitute.

Upgrade Kubernetes Controller Runtime from v0.6.5 This blog concentrates on test case migration as the real code migration pretty detailed and straigh

Dec 6, 2021

NVIDIA container runtime

nvidia-container-runtime A modified version of runc adding a custom pre-start hook to all containers. If environment variable NVIDIA_VISIBLE_DEVICES i

Nov 25, 2022

Container Runtime Interface profile

criprof Container Runtime Interface profiling and introspection. Useful for tracking down containers in logs or grouping by runtime characteristics. c

Jan 18, 2022

This library provides a metrics package which can be used to instrument code, expose application metrics, and profile runtime performance in a flexible manner.

This library provides a metrics package which can be used to instrument code, expose application metrics, and profile runtime performance in a flexible manner.

Jan 18, 2022

Provide task runtime implementation with pidfd and eBPF sched_process_exit tracepoint to manage deamonless container with low overhead.

embedshim The embedshim is the kind of task runtime implementation, which can be used as plugin in containerd. With current shim design, it is used to

Nov 28, 2022

Linux Controllers for Kubernetes

Tambourine Kubelet replacement with Built in Linux extensions Development Success: Install, Manage, and Observe a new systemd service from Kubernetes.

Jun 2, 2021
Comments
  • Immediate VM crash causes hang on connecting

    Immediate VM crash causes hang on connecting

    Hung on the Connecting step. Eventually returned the following panic.

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x2 addr=0x60 pc=0x100e3fc68]
    
    goroutine 36 [running]:
    github.com/lab47/yalr4m/pkg/crypto/ssh.NewClient.func1(0x140003ab090)
    	/Users/evan/git/yalr4m/pkg/crypto/ssh/client.go:62 +0x28
    created by github.com/lab47/yalr4m/pkg/crypto/ssh.NewClient
    	/Users/evan/git/yalr4m/pkg/crypto/ssh/client.go:61 +0xf0
    

    Tried to get some verbose logging for you

    linux --start -V
    2022-03-29T14:19:29.288-0400 [INFO]  linux: creating virtual machine: cores=10 memory=""
    2022-03-29T14:19:29.381-0400 [INFO]  linux: observed vm state: state=4
    2022-03-29T14:19:29.381-0400 [INFO]  linux: observed vm state: state=1
    2022-03-29T14:19:29.381-0400 [INFO]  linux: vm detected as running, forwarding IO
    2022-03-29T14:19:29.832-0400 [INFO]  linux: observed vm state: state=3
    

    Seems to hang there.

    In another session, tried to start again with verbose

    2022-03-29T14:21:18.443-0400 [INFO]  linux: connecting to unix socket
    2022-03-29T14:21:18.443-0400 [INFO]  linux: negotiating ssh
    

    get these two log lines repeating

    In the first session I see this log line corresponding to each attempt:

    2022-03-29T14:21:18.444-0400 [ERROR] linux: attempted connection to session before started
    

    Running linux-v0.2.3-arm64 on macOS 12.2.1 M1

  • macos requirement for the virtiofs directory sharing becomes 12.0

    macos requirement for the virtiofs directory sharing becomes 12.0

    Regarding this: https://github.com/lab47/yalr4m/blob/c0870a44b422f220fab990780ad40882394fed6a/pkg/vz/README.md?plain=1#L16

    Pretty much everything related to shared directories with the Virtualization Framework requires macOS 12.0.0+.

  • Add project README

    Add project README

    This change adds a project README to describe what isle is and how to get started with using it.

    The content was sourced from this note and modified slightly to align with the name change from YALR4M to Isle.

    View Rendered Output.

Raspberry Pi Archlinux Automated Offline Installer with Wi-Fi. Windows, Mac and more features coming.
Raspberry Pi Archlinux Automated Offline Installer with Wi-Fi. Windows, Mac and more features coming.

Raspberry Pi Archlinux Automated Installer with Wi-Fi. Windows, Mac and more features coming. Download Go to releases page and download the zip file f

Nov 22, 2022
Nanovms running in Docker x86 container for M1 Mac ARM64.

Docker Ops This project is an attempt to enable Nanos unikernels to be managed by Ops on non-intel architectures such as the Mac M1 ARM64. Unless ther

Nov 22, 2021
OpenAPI Terraform Provider that configures itself at runtime with the resources exposed by the service provider (defined in a swagger file)
OpenAPI Terraform Provider that configures itself at runtime with the resources exposed by the service provider (defined in a swagger file)

Terraform Provider OpenAPI This terraform provider aims to minimise as much as possible the efforts needed from service providers to create and mainta

Nov 8, 2022
Open Source runtime tool which help to detect malware code execution and run time mis-configuration change on a kubernetes cluster
Open Source runtime tool which help to detect malware code execution and run time mis-configuration change on a kubernetes cluster

Kube-Knark Project Trace your kubernetes runtime !! Kube-Knark is an open source tracer uses pcap & ebpf technology to perform runtime tracing on a de

Sep 19, 2022
Testcontainers is a Golang library that providing a friendly API to run Docker container. It is designed to create runtime environment to use during your automatic tests.

When I was working on a Zipkin PR I discovered a nice Java library called Testcontainers. It provides an easy and clean API over the go docker sdk to

Dec 4, 2022
Kubernetes Virtualization API and runtime in order to define and manage virtual machines.
Kubernetes Virtualization API and runtime in order to define and manage virtual machines.

Kubernetes Virtualization API and runtime in order to define and manage virtual machines.

Nov 24, 2022
Kubei is a flexible Kubernetes runtime scanner, scanning images of worker and Kubernetes nodes providing accurate vulnerabilities assessment, for more information checkout:
Kubei is a flexible Kubernetes runtime scanner, scanning images of worker and Kubernetes nodes providing accurate vulnerabilities assessment, for more information checkout:

Kubei is a vulnerabilities scanning and CIS Docker benchmark tool that allows users to get an accurate and immediate risk assessment of their kubernet

Nov 24, 2022
Layotto is an application runtime developed using Golang, which provides various distributed capabilities for applications
Layotto is an application runtime developed using Golang, which provides various distributed capabilities for applications

Layotto is an application runtime developed using Golang, which provides various distributed capabilities for applications, such as state management, configuration management, and event pub/sub capabilities to simplify application development.

Nov 28, 2022
Write controller-runtime based k8s controllers that read/write to git, not k8s

Git Backed Controller The basic idea is to write a k8s controller that runs against git and not k8s apiserver. So the controller is reading and writin

Dec 10, 2021
The k8s-generic-webhook is a library to simplify the implementation of webhooks for arbitrary customer resources (CR) in the operator-sdk or controller-runtime.

k8s-generic-webhook The k8s-generic-webhook is a library to simplify the implementation of webhooks for arbitrary customer resources (CR) in the opera

Nov 24, 2022