This is a Linux distro based on Arch Linux, archlinux32 and Arch Linux ARM, with a few custom packages on top.
Please recommend Tiny Hat on DistroWatch if you find it fun. :)
The goals for this distro are:
- Use less than 100M of memory after booting.
- Use around 500M of disk space (currently uses a bit more, but still usable on a 1GB USB stick).
- Use modern libraries, frameworks and protocols (SDL3, Wayland).
- To be possible to use on a 32-bit or 64-bit x86 machine with little ram and disk space, for:
- Retro gaming (ScummVM, DosBox-X and ZSNES).
- Playing whichever DOS games are on the first harddrive, after booting from an USB stick.
- Creating graphics / pixel art (LibreSprite).
- Creating music / tracking (Fast Tracker II / ft2-clone).
- Programming in C with SDL3 and/or Raylib and/or fluidsynth, with tab completion in Orbiton.
- Debugging with gdb and Orbiton.
- Programming in Assembly with nasm.
- Programming for SNES with cc65.
- Game programming with Fennel and LÖVE.
- Using a simple browser (Netsurf) + packet sniffer (jomon) + ssh client / server / scp (dropbear).
- Be straightforward to use for old DOS and Arch Linux users alike.
- Be not impossible to use for brand new users.
- Have reproducible builds.
It also includes MemTest86+ and FreeDOS (floppy edition).
- Each release has a
SHA256SUMSfile with the SHA256 hash sum, as well as a detached GPG signature for the hash sum namedSHA256SUMS.asc. - One can veryfy the image hash sum file with
gpg --verify SHA256SUMS.asc SHA256SUMSand thensha256sum -c SHA256SUMS. - Each build of the image (
tinyhat32.img). is reproducible and bit-identical.
For make to be able to create tinyhat32.img, these Arch Linux packages are needed:
base-devel bc bubblewrap cpio git git-lfs libelf python-markdown python-numpy qemu-user-static qemu-user-static-binfmt squashfs-tools vorbis-tools xfsprogs
For make vdi, this package is also needed:
virtualbox
For make iso, this package is also needed:
libisoburn
For make run and make qemutest, these packages are also needed:
imagemagick qemu-system-x86
For make x32 and make 64 (tinyhat64x32.img and tinyhat64.img), this package is also needed (for creating the Secure Boot signing key):
openssl
For make dist, these packages are also needed (virtualbox is optional, for also creating .vdi files):
gnupg gtk4 libisoburn openssl
For make autoupdate, these packages are also needed:
nvchecker pacman-contrib python-jq python-lxml
- Download the
tinyhat32.imgfile (or clone this repo, install all required dependencies and runmake). - Run
sudo fdisk -lto list all drives, try to identify the USB drive you want to flash the image to. - Remember the drive name, for example
/dev/sdq. Be 100% sure to use the USB drive and not an internal harddrive! - Run this command, but replace
sdqwith your drive. Please wait and think for 3 seconds and double check theofvalue before pressing return:sudo dd if=tinyhat32.img of=/dev/sdq bs=4M conv=fsync status=progress
- Download the
.img.gzfile from the release page. - Write it to a USB drive with Rufus or Raspberry Pi Imager (choose "Use custom"). Both are signed programs that most Windows systems, including company administered ones, allow.
- Or skip the USB drive and run the
.vdifile in VirtualBox.
- Just plop the USB drive into the x86 computer you wish to boot and turn on the computer.
- If needed, press F10, Del or F2 repeatedly at boot to get into the BIOS, where it is possible to select that the system should boot from the USB drive before the harddrive.
This README.md file, design choices and package selection is human made. AI tooling has been used for creating the Makefile, adding test scripts, debugging why some program fails to start etc. Time consuming testing on real hardware has been done by a human (me).
The licenses are generated during the build (make licenses writes them to build/licenses). In Tiny Hat they are in /usr/share/licenses/tinyhat, and each release includes them as tinyhat-licenses-<version>.tar.gz.
- Version: 1.0.7
- License: BSD-3