# Linux image for the Linux shell playground

`linux-shell.bin` is an i686 Linux kernel (bzImage, 2.0 MB) with a small initramfs built in. The
Linux shell playground (/tools/linux-shell/) boots it in the v86 emulator.

* Linux 6.6.160 (longterm), unmodified upstream source:
  https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.160.tar.xz — GNU GPL v2 (LICENSE).
  Configured from `tinyconfig` plus [`kernel.fragment`](build-source/kernel.fragment); the resulting
  configuration is [`kernel.config`](build-source/kernel.config). Cross-compiled with Debian
  bookworm's `gcc-i686-linux-gnu` (12.2).
* BusyBox 1.36.1, Alpine Linux 3.20 package `busybox-static-1.36.1-r31` (x86, statically linked
  against musl), unmodified: https://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86/busybox-static-1.36.1-r31.apk —
  GNU GPL v2 (LICENSE). Source: https://busybox.net/downloads/busybox-1.36.1.tar.bz2 with Alpine's
  build recipe and patches at https://gitlab.alpinelinux.org/alpine/aports/-/tree/3.20-stable/main/busybox
  (musl 1.2.5 is MIT licensed).
* The root file system is BusyBox plus the small scripts here: [`init`](build-source/init),
  [`inittab`](build-source/inittab), [`rc`](build-source/rc) and [`profile`](build-source/profile).
  The sample files, exercises and checker are not in the image; the page writes them into the
  running system.
* SHA-256 of the downloaded inputs: [`inputs.sha256`](build-source/inputs.sha256). SHA-256 of
  `linux-shell.bin`: `9b54ca1def40bb9d25c69fa0cca06e2871d4d983ba87f8b310c476a6d67a6de2`.

## Build files published with this build

Everything used to produce the image beyond the upstream sources is published here, so the
corresponding source is complete without access to any private repository:
[`build.sh`](build-source/build.sh) (the build, run in a Debian bookworm container) and the files
above (served at `/wasm/linux-shell/build-source/`). The same files live in the site's repository
under `tools/wasm/linux-shell/`.
