Try deboot
From the Devcon 8 talk The Next Centralised Dependency Is Your Bootloader. A USB stick that starts a computer from Swarm instead of its own disk, checks every byte, and runs entirely in memory.
What you need
- An x86-64 computer with UEFI, laptop or desktop: almost any PC from the last ten years, or an Intel Mac or Mac mini. Not Apple Silicon Macs. Tested so far on Lenovo ThinkPads and in QEMU; other makes should work, but haven't been tried.
- A USB stick of any size. It will be erased.
- A network: an Android phone with USB tethering, or an Ethernet cable (a built-in port or a USB dongle). Wi-Fi is not supported, and iPhone tethering does not work (Apple uses its own USB protocol).
- About half an hour. Most of it is the download from Swarm.
1. Download
try-deboot-x86-64.img.xz
220,088 bytes. It unpacks to a 34 MiB disk image.
SHA-256:
a9e8fa1ea21c2dc4624f987613754693275c4896bd6fada979bf350f794644d8
2. Check it and write it to the stick
Pick the computer you're writing the stick on. It can be the same one you'll boot from it.
Mac
Check the download in Terminal. The output must match the SHA-256 above:
shasum -a 256 ~/Downloads/try-deboot-x86-64.img.xz
Then write it with Raspberry Pi Imager or balenaEtcher. Both read the .xz file directly:
- Raspberry Pi Imager: Choose Device → No filtering; Choose OS → Use Custom → the
.xzfile; Choose Storage → your stick; Next. Say No to customisation. - Etcher: Flash from file → the
.xzfile; Select target → your stick; Flash.
macOS may then say the disk is unreadable. Choose Eject, not Initialize.
Windows
Check the download in PowerShell. The hash must match the SHA-256 above:
Get-FileHash $HOME\Downloads\try-deboot-x86-64.img.xz -Algorithm SHA256
Then write it with Raspberry Pi Imager or balenaEtcher. Both read the .xz file directly:
- Raspberry Pi Imager: Choose Device → No filtering; Choose OS → Use Custom → the
.xzfile; Choose Storage → your stick; Next. Say No to customisation. - Etcher: Flash from file → the
.xzfile; Select target → your stick; Flash.
Windows may then offer to format the stick. Choose Cancel.
Linux
Check the download. The output must match the SHA-256 above:
sha256sum try-deboot-x86-64.img.xz
Find the stick (compare lsblk before and after plugging it in), then write it. Replace /dev/sdX with the whole stick, not a partition. Everything on it is erased:
lsblk -d -o NAME,SIZE,MODEL,TRAN xz -dc try-deboot-x86-64.img.xz | sudo dd of=/dev/sdX bs=4M conv=fsync status=progress
Or use Raspberry Pi Imager or Etcher, as on the other tabs.
3. Boot from it
- Turn Secure Boot off in the computer's firmware settings. The stick isn't signed yet. Turn it back on when you're done.
- Plug in the stick, and the phone with USB tethering switched on (Android: Settings → Network → Hotspot & tethering → USB tethering), or an Ethernet cable.
- Restart or power on, and open the one-time boot menu, then pick the USB stick:
Lenovo, Dell, Acer, Framework F12 HP Esc, then F9 ASUS Esc or F8 MSI F11 Intel Mac or Mac mini hold Option (Macs with a T2 chip: first allow external boot in Startup Security Utility)
4. What happens
- The firmware on the stick fetches Linux from Swarm over your phone, and checks every byte against a hash built into the stick. That takes about 20 to 30 minutes, longer on a weak signal. You'll see it count up.
- Then a menu: a shell with tools, or the same plus a Swarm node, an Ethereum light client, or both. If you do nothing, the shell starts after 30 seconds.
- Everything runs in memory, with a fresh key each time. Turn it off and it's gone.
What it doesn't do
- It never reads or writes the computer's disk, and never changes its boot settings.
- The only thing it writes is a log file on the stick itself (
DEBOOTDATA/deboot/efi.log). - It starts from a release built into the stick. It does not look up a name on Ethereum; the talk's fleet does that, and this stick doesn't yet.
For developers
Using an agent
Give your coding agent this, and it will walk you through fetching from Swarm by hash, reading a release record on Ethereum, and pulling a container with no registry account:
Read https://try.deboot-efi.eth.link/SKILL.md and walk me through it.
By hand
The same steps, to copy and paste yourself.
The projects
| deboot-efi.eth | the firmware: boots from an ENS name and Swarm |
| code.deboot-efi.eth | its source, on Radicle |
| debootd.eth | the daemon: runs what a machine's name says |
| code.debootd.eth | its source, on Radicle |