Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
staticfloat committed Aug 8, 2023
1 parent f908036 commit 949bf17
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ As of the time of writing, it supports two execution backends:

* A Linux User Namespaces executor, which is very fast and lightweight

* A Docker executor which is slower, but more compatible (it works on macOS, and may work on Windows)
* A [Docker](https://www.docker.com/) (or [Podman](https://podman.io/)) executor which is slower, but more compatible (it works on macOS, and may work on Windows)

The executors are responsible for running/virtualizing a given `Cmd` within a root filesystem that is defined by the user, along with various paths that can be mounted within the sandbox.
These capabilities were originally built for [BinaryBuilder.jl](https://github.com/JuliaPackaging/BinaryBuilder.jl), however this functionality is now mature enough that it may be useful elsewhere.

## Basic usage

To make use of this toolkit, you will need to have a root filesystem image that you want to use.
This package comes with a minimal Debian rootfs that can be used for quick tests, to launch `/bin/bash` in an interactive shell, run the following:
This package can download a minimal Debian rootfs that can be used for quick tests; to launch `/bin/bash` in an interactive shell run the following:

```julia
using Sandbox
Expand All @@ -50,3 +50,10 @@ While this launches an interactive session due to hooking up `stdout`/`stdin`, o
To use more interesting rootfs images, you can either create your own using tools such as [`debootstrap`](https://wiki.debian.org/Debootstrap) or you can pull one from docker by using the `pull_docker_image()` function defined within this package. See the [`contrib`](contrib/) directory for examples of both.

You can also check out the latest releases of the [`JuliaCI/rootfs-images` repository](https://github.com/JuliaCI/rootfs-images/), which curates a collection of rootfs images for use in CI workloads.

## Multiarch usage

Sandbox contains facilities for automatically registering `qemu-user-static` interpreters with `binfmt_misc` to support running on multiple architectures.
As of the time of this writing, this is only supported on when running on a Linux host with the `x86_64`, `aarch64` or `powerpc64le` host architectures.
The target architectures supported are `x86_64`, `i686`, `aarch64`, `armv7l` and `powerpc64le`.
Note that while `qemu-user-static` is a marvel of modern engineering, it does still impose some performance penalties, and there may be occasional bugs that break emulation faithfulness.

0 comments on commit 949bf17

Please sign in to comment.