Skip to content

SharktasticA/SHORK-486

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

541 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SHORK 486, DISC & DISKETTE

SHORK 486 is a free and open-source operating system for 486 and Pentium (P5) era vintage personal computers. The aim is to produce a 32-bit Linux distribution that is lean and functional, but still capable on such PCs, often with my '90s IBM ThinkPads in mind. A default SHORK 486 system aims to work with at least 16MiB system memory and take up no more than ~100MiB on your disk. Despite those constraints, the default SHORK 486 experience includes Linux kernel 7.1.5, many typical Linux commands, custom SHORK Utilities such as shorkdir (TUI file browser) and shorkfetch (*fetch clone), a terminal multiplexer, a C compiler, Python 3.4-syntax interpreter and dialog for shell script TUI widgets, a text web browser, an FTP, SCP and SSH client, a Git source control client, the ed, Mg (Emacs-style), nano and vi editors, a spreadsheet editor, a minesweeper game, IDE CD-ROM and DVD-ROM support, SCSI tape drive support, ISA, PCI and PCMCIA ethernet support, support for most major national keyboard layouts, and a cute ASCII shark welcome screen!

A build configurator is available to alter SHORK 486 to your liking. For example, you can select the "minimal" build type that requires just 8MiB RAM and ~8MiB disk space, whilst still including most typical commands as before, some custom SHORK Utilities, and the ed and vi editors. You can also configure SHORK 486 for serial console use, multi-user support (if not "minimal" build), and pick and choose specific software and features (if "custom" build). Versions of SHORK 486 that can be burned to a CD (SHORK DISC) or small enough to fit on a 1.44MB floppy diskette (SHORK DISKETTE) are also available.

A photo of SHORK 486 running on an IBM ThinkPad 365ED after a cold boot

See GALLERY for more photos and screenshots!

Introduction

Origin & inspirations

In December 2025, Action Retro posted a video on FLOPPINUX, something that turned out to be a very accessible means for me to learn how to make a working Linux system. It foremost inspired me to chase my dream of building a viable modern Linux system for my old IBM ThinkPads. SHORK Mini (as it was originally known) began as an automated build script based on FLOPPINUX's build instructions, but adapted for producing fixed disk images instead of diskette images. After that, more Linux kernel and BusyBox features were enabled, and other software was compiled to help fulfil that dream. Other inspirations from similar efforts include Gray386linux and Ocawesome101's blog post on running Linux on a 486SX. Aspects of Alpine Linux and Tiny Core are also kept in mind.

Architecture

SHORK 486 is not GNU/Linux as you may be accustomed to. Its init system and most core utilities are provided by BusyBox, a single-binary application well known for embedded usage. As needed, some util-linux and individual utilities are used to fill 'holes' in BusyBox's suite. The system is compiled with musl instead of glibc, producing smaller binaries that also use fewer resources. The closest well-known Linux distribution to SHORK 486 is Alpine Linux.

Goals

Besides being something fun to try on old PCs, SHORK 486 was founded on the belief that old PCs can still be useful to the right people, retrocomputing and gaming usage aside. SHORK 486 can be useful for lightweight desktop usage, SSH terminal usage, distraction-free typewriting ("writerdecks"), embedded applications, demonstrative use in academia/education, and as a technical demonstration of what old PCs and modern software targeted at them can actually still do! If it can save just one more PC from the landfills, it has done its job!

What's special

SHORK 486 is a modern and maintained Linux distribution that can run on a processor architecture from 1989. Depending on configuration, it only requires between 8 and 24MiB system memory whilst still packing a lot of functionality for its size. Due to various factors, making such a distribution is increasingly difficult in the 2020s. System requirements are ever-increasing, with even the otherwise excellent Micro Core and Tiny Core requiring at least 26-46MB RAM, putting them out of range of many early 486 systems. As of Linux kernel 7.1 and beyond, support for 486 processors and various ISA and PCMCIA networking hardware has been dropped, and 32-bit x86 support in general is currently dropped by most mainstream distributions. Given this situation, SHORK 486 will try to fill this niche of a ready-to-go Linux distribution for such PCs by sticking with a minimal-where-possible philosophy, customisability and restoring support for older hardware with newer Linux kernels!

Editions

In the temporary lieu of a package manager, SHORK 486 can be made as one of several build types to better match your system configuration and what you want to do with said system.

  • Default: SHORK 486 in its recommended configuration that tries to balance features and software variety with system requirements. It's what was described at the start of this README.

  • Plus: Like default but with all the optional bundled software included. It includes a lot more development-focused software, additional editors (most notably Vim), IBM terminal emulation software, and (for 586) an MP3 player. It can be used with the same minimum 16MiB system memory as default, but it will lean into slower swap memory a lot more if you don't have more (ideally at least 24MiB).

  • Offline: Like default but without full networking support and software that would require it. If you don't need the internet or want to force yourself into a less distracting system, you can save some system memory (~4MiB) and disk space (~40MiB) with this.

  • Minimal: SHORK 486 in its smallest configuration. All bundled software and additional features are excluded, and multi-user, networking and non-US keyboard layout support are disabled. That said, a robust BusyBox configuration is still provided, so comparatively few general and system utilities are lost, and you still have the ed and vi editors. It's a very lightweight Linux, but one may still find it quite usable.

  • Maximal: SHORK 486 with every possible option enabled, including support for more modern hardware. It is not intended or recommended for 486/586/P5 Pentium systems per se, more a shortcut to those who like SHORK 486's design but want to use it on late '90s to early '10s systems as well, in lieu of future SHORK 686.

Licences

SHORK 486 is a free and open-source operating system. Its core is made up of GPLv3 (SHORK, SHORK Utilities, most of SHORK Entertainment), GPLv2 (Linux kernel, BusyBox, SYSLINUX), and MIT (SHORKMINES) components. The contents of the shork-486/patches directory are also licensed under GPLv2 as they are derived from Linux kernel and BusyBox source code. SHORK 486 can also contain bundled software licensed under various permissive, copyleft, and even public-domain-equivalent licences. You can look at the bundled software list later in this README, or at the "Licences" portal in shorkhelp when running SHORK 486, to see their licences.

SHORK 486

SHORK 486 proper is the main version of the SHORK 486 Operating System that is designed to be written/installed to a fixed disk (hard drive, solid-state drive, etc.) It is the most robust, versatile and customisable version being developed with the goal of being 'daily-drivable' in mind. It can be built as a single-user (root) or multi-user system.

Hardware requirements

  • Processor: Intel 486SX or compatible (no FPU required)
  • Memory:
    • Default: 16MiB RAM (8MiB swap recommended)
    • Maximal: 32MiB RAM (recommended), 24MiB RAM + 8MiB swap (acceptable)
    • Plus: 24MiB RAM + 8MiB swap (recommended), 16MiB RAM + 16MiB swap (acceptable)
    • Offline: 12MiB RAM (8MiB swap recommended)
    • Minimal: 8MiB RAM
  • IDE or SCSI disk:
    • Default: 100MiB
    • Maximal: 500MiB
    • Plus: 480MiB
    • Offline: 60MiB
    • Minimal: 8MiB
  • Graphics: IBM VGA or compatible (for most programs); VBE 2.0-compatible (for shorkgui and VBE resolutions in shorkset)
  • Monitor: VGA (640x480) or higher

BusyBox

addgroup, adduser, ar, arch, ascii, ash, awk, base32, base64, basename, bc, beep, blkid, bunzip2, bzcat, bzip2, cal, cat, cksum, chgrp, chmod, chown, chpasswd, chroot, chvt, clear, comm, cp, cpio, crc32, crontab, cryptpw, cut, date, dc, dd, delgroup, deluser, df, diff, dirname, dmesg, dos2unix, du, echo, ed, egrep, eject, env, expand, expr, factor, fallocate, false, fdflush, fdformat, fdisk, fgrep, find, fold, free, ftpget, ftpput, fuser, getfattr, getopt, getty, grep, gunzip, gzip, halt, head, hexdump, hexedit, hostid, hostname, hwclock, id, ifconfig, init, install, iostat, ip, kill, killall, less, link, ln, loadkmap, login, logname, losetup, ls, lsblk, lscpu, lsof, lspci, lsscsi, lsusb, lzcat, lzma, lzop, lzopcat, man, mdev, md5sum, mkdir, mkdosfs/mkfs.ext2, mke2fs/mkfs.vfat, mkfifo, mknod, mkpasswd, mktemp, mkswap, more, mount, mountpoint, mv, netcat, nice, nl, nohup, nproc, od, partprobe, passwd, paste, patch, pgrep, pidof, ping, pkill, pmap, printenv, printf, ps, pstree, pwd, pwdx, readlink, realpath, rev, rm, rmdir, route, sed, seq, setfattr, setfont, sha1sum, sha256sum, sha384sum, sha3sum, sha512sum, shred, showkey, shuf, sleep, sort, split, stat, strings, stty, su, sulogin, sum, swapoff, swapon, sync, tac, tail, tar, taskset, tee, telnet, test, time, timeout, top, touch, tr, traceroute, tree, true, truncate, tsort, tty, udhcpc, umount, uname, uncompress, unexpand, uniq, unix2dos, unlink, unlzma, unlzop, unxz, unzip, uptime, users, usleep, uuidgen, vi, vmstat, volname, w, watch, wc, wget, which, who, whoami, whois, xargs, xxd, xz, xzcat, yes, zcat

Bundled software

Default

Name Command(s) Version Purpose Licence(s)
dialog dialog 1.3 Shell script TUI widgets LGPLv2.1
Dropbear scp, ssh 2026.92 SCP and SSH clients MIT + BSD 2-Clause
file file 5_48 File identification BSD 2-Clause
Git git 2.55.0 Source control client GPLv2
GNU nano nano 9.1 Pico-style text editor GPLv3
htop htop 3.5.1 Interactive process viewer GPLv2
Lynx lynx 2-9-3a Terminal web browser GPLv2
Mg mg 4.0 Emacs-style text editor Unlicense
MicroPython micropython 1.28.0 Python 3.4-syntax intepreter MIT
mt-st mt, stinit 1.8 Tape drive tools GPLv2
sc-im sc-im 0.8.5 Terminal spreadsheet editor BSD 4-Clause
strace strace 7.1 System calls & signals tracer LGPLv2.1
Tiny C Compiler§ tcc e5eedc0 C compiler LGPLv2.1
tmux tmux 3.7b Terminal multiplexer ISC
tnftp ftp 20260211 FTP client BSD 2-Clause
util-linux partx, sfdisk, whereis 2.42.2 Extra Linux utilities GPLv2

Plus & maximal/optional with custom

Name Command(s) Version Purpose Licence(s)
Cscope cscope 15.9 C/C++ code browser BSD 3-Clause
cURL curl 8.21.0 HTTP client & transfer utility MIT
GCC‡§ gcc, g++, gfortran 11.2.1 C, C++ and Fortran compilers GPLv3 + GCC RLE
GNU Binutils e.g. ar*, as, gprof, ld, nm, objdump, ranlib,readelf, strings*, strip 2.37 Binary tools to compliment GCC GPLv3
GNU Indent indent 2.2.13 C code formatter GPLv3
GNU Make make 4.4.1 Build automation tool GPLv3
Joe's Own Editor joe 4.8 WordStar & Emacs-blend text editor GPLv2
mpg321 mpg321 0.3.2-1 MP3 player GPLv2
NASM nasm, ndisasm 3.02 Portable x86 assembler & disassembler BSD 2-Clause
tn5250 tn5250 0.18.0 TCP/IP 5250 terminal emulator LGPLv2.1
Universal Ctags ctags, readtags 6.2.0 Source code object indexing GPLv2
x3270 c3270 4.5ga5 3270 terminal emulator BSD 3-Clause
Vim ex, view, rvim, rview, vim, vimdiff, vimtutor, xxd* 9.2 Vi IMproved text editor Vim
  • * This replaces a BusyBox version of the same utility
  • † Their inclusion is experimental - expect bugs
  • ‡ GCC and GNU Binutils are separate projects but are bundled together as one complete toolchain
  • § These include musl for their libc

Libraries & prerequisites

Name Version For Licence(s)
libao 1.2.2 mpg321 GNU GPLv2
libevent 2.1.13 tmux BSD 3-Clause
libid3tag 0.15.1b mpg321 GNU GPLv2
libmad 0.15.1b mpg321 GNU GPLv2
libxlsxwriter 1.2.4 sc-im BSD 2-Clause
libxml2 2.15.3 sc-im, Universal Ctags MIT
libzip 1.11.4 sc-im BSD 3-Clause
musl 1.2.6 GCC, Tiny C Compiler MIT
ncurses 6.4 htop, Lynx, nano, sc-im, tic, tmux, tn5250, util-linux, x3270 MIT
OpenSSL 3.6.3 curl, Git, Lynx, tn5250 Apache 2.0
zlib 1.3.2 Git, libzip zlib

SHORK Utilities (shorkutils)

  • shorkdir - Lightweight terminal-based file browser.
  • shorkfetch - Displays basic system and environment information. Similar to fastfetch, neofetch, etc.
  • shorkhelp - Informs of SHORK 486's capabilities and provides guidance.
  • shorkoff - A shutdown helper that safely brings the system to a controlled halt before a manual power off.
  • shorkset - A settings program for changing display resolution (VGA, and if compatible, VBE), keyboard layout (keymap), system sound volume, the terminal's PSF font, and the terminal's font colour.

SHORK Entertainment (shorktainment)

  • shorklocomotive - A shark-themed take on sl (Steam Locomotive) that kindly pokes fun at making typos when trying to type ls. Available as sl and shorklocomotive.
  • shorkmatrix - A quick, blue-themed take on the CMatrix "digital rain" vertical scrolling text screensaver. Available as cmatrix and shorkmatrix.
  • shorkmines - A terminal-based minesweeper game based on terminal-mines. Available as shorkmines and terminal-mines.
  • shorksay - A shark-themed take on cowsay, a "simple and silly" program that outputs an ASCII art shark and speech bubble containing a message of your choice. Available as shorksay and cowsay.

Planned, todo & under consideration

shorkutils & shorktainment

  • shorkchess (chess game)
  • shorkdisk (disk mounting, unmounting and ejecting)
  • shorknet (network connection management)
  • shorksnek (snake-like game)
  • shorkvader (space invaders-like game)

Bundled software

  • autoreconf
  • automake
  • BASIC interpreter (exact one TBD)
  • bison
  • cmake
  • cfdisk
  • flex
  • GDB
  • IRC client (exact one TBD)
  • libtool
  • pkg-config
  • w3m

SHORK 486 on modern hardware

SHORK 486 can be used on some newer hardware if you so desire, but there are some considerations.

  • SHORK 486 can work with newer x86 processors, although a default SHORK 486 build will not recognise more than 1 core/thread. The "smp" configuration option is available to enable symmetric multiprocessing support. Whilst SHORK 486 can work on an x86-64 processor, the system is still limited to supporting 32-bit software.

  • A default SHORK 486 system will not recognise more than ~875MiB of memory. The "highmem" configuration option is available to address this, though the minimum system memory requirement is raised to 24MiB/16MiB + 8MiB swap.

  • A default SHORK 486 system only supports IDE or SCSI hard drives. The "sata" configuration option is available to address this, though the recommended system memory amount is raised to 24MiB/16MiB + 8MiB swap.

The planned SHORK 686 will make these modern system-orientated options obsolete in the future.

SHORK DISC

SHORK DISC is a specialised version of the SHORK 486 Operating System that can be burned to a CD or DVD. Only a subset of BusyBox commands, utilities and software are available for it, it is only offered as a single-user (root) system, and has no persistent storage. It is envisioned as a completely immutable system or diagnostic aid, and is to be used as SHORK 486's installation media.

Hardware requirements

  • BIOS: El Torito supported
  • Processor: Intel 486SX or compatible (no FPU required)
  • Memory: 8MiB RAM
  • Disc: any CD+/-R/RW
  • Graphics: IBM VGA or compatible
  • Monitor: VGA (640x480) or higher

BusyBox

ar, ash, awk, basename, bunzip2, bzcat, bzip2, cat, clear, cp, cpio, date, dd, df, diff, dirname, dmesg, echo, ed, eject, expr, fdformat, fdisk, free, grep, gunzip, gzip, hexdump, hostname, init, less, ln, ls, lsblk, lscpu, lzcat, lzma, lzop, lzopcat, mdev, mkdir, mount, mv, patch, printenv, printf, pwd, rev, rm, sed, sync, tar, tee, test, touch, true, umount, uname, uncompress, unlzma, unlzop, unxz, unzip, vi, which, xxd, xz, xzcat, zcat

Bundled software

Name Command(s) Version Purpose Licence(s)
file file 5_48 File identification BSD 2-Clause
strace strace 7.1 System calls & signals tracer LGPLv2.1
util-linux partx, sfdisk, whereis 2.42.2 Extra Linux utilities GPLv2

SHORK Utilities (shorkutils)

SHORK Entertainment (shorktainment)

SHORK DISKETTE

SHORK DISKETTE is a specialised version of the SHORK 486 Operating System that is cut-down enough to fit on a 1.44MB floppy diskette. Only a subset of BusyBox commands and utilities and SHORK Utilities are available for it due to space constraints, and is only offered as a single-user (root) system with a small amount of persistent storage in /home. It is envisioned as a diagnostic aid or a CD-ROM boot disk (2.88MB only at present).

Hardware requirements

  • Processor: Intel 486SX or compatible (no FPU required)
  • Memory: 16MiB RAM
  • Diskette: 1.44 or 2.88MB
  • Graphics: IBM VGA or compatible
  • Monitor: VGA (640x480) or higher

BusyBox

ash, awk, basename, cat, clear, cp, date, dd, df, echo, expr, free, grep, hostname, init, less, ln, ls, lsblk, mdev, mkdir, mount, mv, printenv, printf, pwd, rev, rm, sed, sync, tee, test, touch, true, umount, uname, vi, which

SHORK Utilities (shorkutils)

Building

SHORK 486, DISC and DISKETTE do not presently have released compilations or media, so it must be compiled. The result are raw disk, disc or diskette images you can write to real hardware or use as-is in emulation or virtualisation software. Building may require up to 5GiB of disk space. Please read "Notice & disclaimers" at the end of this readme before proceeding.

Configuration

Whilst you can build SHORK 486 proper immediately, it is recommended to first run the SHORK 486 Build Configurator (config.sh) whilst in the shork-486 directory to select SHORK DISC or SHORK DISKETTE if needed, and to tailor SHORK 486 to your liking.

Native building

If you are using an Arch, Debian or Fedora-based Linux distribution, run build.sh whilst in the shork-486 directory. If you have not used the configurator, you will be prompted some questions to answer throughout the process.

WSL building

If you are using Windows, SHORK 486 can be built under Windows Subsystem for Linux 2 if you install and use Debian as the distribution choice. WSL1 is not supported as it cannot run 32-bit binaries (which is needed as the cross-compiler SHORK 486 uses is 32-bit).

Dockerised building

If you are using Windows, macOS (x86-64), a Linux distribution that has not been tested with native building, or want some kind of "sandbox" around the build process, you can try Dockerised building instead. It will create a Docker container with a minimal Debian 13 installation that is active for just the lifetime of the build process. You simply run docker-compose up.

After building

Once built, one or more disk images and an after-build report (report.txt) should be present in the images folder. The possible images are as follows:

  • shork-486.img: Can be used as-is with PC emulation software like 86Box or written to a real disk using (e.g.) dd.
  • shork-486.vmdk: Can be used as-is with VMware Workstation or Player.
  • shork-disc.iso Can be used as-is as an inserted optical disc on most PC emulation and virtualisation software or burned to a real disc using burning software.
  • shork-diskette.img Can be used as-is as an inserted floppy diskette on most PC emulation and virtualisation software or written to a real diskette using (e.g.) dd.

It is recommended to move or copy the images out of this directory before extensive or serious use because they will be replaced if the build process is rerun. The after-build report is provided to confirm whether the build was completed as intended. It confirms the type of build made, the time it took to create, the minimum system memory requirement, some handy disk/disc/diskette image statistics, and which programs or features are included or excluded.

Scripts & configuration

  • build.sh: Contains the complete download and compilation process that produces a working SHORK 486 system on two disk images.

  • config.sh: Contains an interactive configurator used to tailor SHORK 486 to your liking before building.

  • clean.sh: Deletes anything that was downloaded, created or generated by build.sh.

Build configuration

When running the SHORK 486 Build Configurator, you will be prompted to select the following:

  • Build environment (Arch native, Debian native/Dockerised or Fedora native)
  • Target distribution (SHORK 486, SHORK DISC or SHORK DISKETTE)
  • Linux kernel version (7.2-rc4, 7.1.5 or 7.0.14)
  • If SHORK 486:
    • Build type (default, maximal, plus, offline, minimal or custom)
    • Target disk size (size in MiB)
    • Swap partition size (size in MiB)
  • If SHORK DISKETTE:
    • Target diskette size (1.44MB or 2.88MB)
  • Keyboard scancode set (skip, set 2 or set 3)
  • If SHORK 486:
    • If not "Minimal" build type selected:
      • Keyboard layout (keymap) (single choice)
  • Hostname (text input)
  • If SHORK 486:
    • If not "Minimal" build type selected:
      • Multi-user support (yes/no)
        • Root password (text input)
    • Serial console mode (yes/no)
      • Serial console port (text input)
    • If "Custom" build type selected:
      • Ethernet networking support (yes/no)
  • Patched EXTLINUX/SYSLINUX (yes/no)
  • If SHORK 486:
    • If "Custom" build type selected:
      • Bundled software (multiple choice)
      • Options (all other configuration) (multiple choice)

Below are further explanations for options that could not fit into the configurator itself.

Keyboard Scancode Set

Allows you to specify an IBM scancode set for SHORK 486 to request. For most AT and PS/2 keyboards, this is likely not needed and can be skipped. But some specific keyboards or computers with integrated keyboards have been known to require a specific one.

  • Skipping is typically recommended as most 486 and P5 era keyboards should work as-is.
  • Set 2 is what all AT keyboards are limited to, and should also be supported by a compliant PS/2 keyboard.
  • Set 3 is what many '80s and '90s IBM Display Station keyboards (315X, 316X, 3179, 3180, 319X, 3270 PC, 3290-2 and InfoWindow) are limited to, and should also be supported by a compliant PS/2 keyboard. The following are also known to require set 3:
    • IBM 9545 ThinkPad 755C

Multi-User Support

Selecting "Yes" here will enable multi-user and password-protected user support in SHORK 486. BusyBox will include implementations for the addgroup, adduser, chgrp, chown, chpasswd, chroot, cryptpw, delgroup, deluser, getty, id, login, logname, mkpasswd, passwd, su, sulogin, users, w and who commands. You will be asked to input a root password in the following prompt.

Ethernet Networking Support

Selecting "Yes" here will enable ethernet networking support in SHORK 486. BusyBox will include implementations for the ftpget, ftpput, ifconfig, ip, netcat, ping, route, telnet, traceroute, udhcpc, wget and whois commands. You will be allowed to select bundled software and options that require an internet connection in the subsequent prompts.

Patched EXTLINUX/ISOLINUX/SYSLINUX

EXTLINUX (SHORK 486), ISOLINUX (SHORK DISC) and SYSLINUX (SHORK DISKETTE) are the default bootloaders used for the SHORK 486 family. Selecting "Yes" here will tell the build script to use my forked SYSLINUX repository instead of your host Linux distribution's maintained packaged version. This version addresses a memory detection error to resolve the "Booting kernel failed: Invalid argument" or boot menu looping issue that the stock EXTLINUX/SYSLINUX may encounter with some BIOSes when attempting to boot the kernel with.

  • Some people need this, some people do not - see the list below, or try without first, then enable this if this error or something like it occurs.
  • Known hardware that need this includes: Chicony NB5 & derivatives, HP OmniBook 800CT, IBM 2625 ThinkPad 365E/365ED, IBM 6381 PS/ValuePoint
    • If you discover more hardware that needs this, please get in touch so I can update this list for future users!
  • This may significantly increase total build time, but it does not affect system requirements.
  • The patch was discovered by akeym - thank you!
  • Note: If enabled and making a custom build, the option to use GRUB 2.x instead of EXTLINUX offered later will be ignored.

Bundled Software

  • file: Adds the file command, which can identify a file's type by checking its contents against a database of possible magic signatures. Due to the size of said database, 16MiB RAM is required for it to work correctly.

  • gcc: Adds the GNU Assembler, GCC's C, C++ and Fortran compiler and musl C standard library. Using g++ requires more system memory than usual, hence it is not included by default. Memory requirements are ideally 32MiB system memory if no swap partition, 24MiB with 8MiB swap or 16MiB with 16MiB swap.

  • shorktainment: Includes the SHORK Entertainment programs bundle: shorklocomotive, shorkmatrix, shorkmines, and shorksay.

  • vim: Adds the Vi IMproved (Vim) text editor. Some of its features like syntax highlighting seem be memory-intensive for 486-era levels of RAM, so memory requirements are ideally 32MiB system memory if no swap partition, 24MiB with 8MiB swap or 16MiB with 16MiB swap. In the worst case scenario, SHORK 486 will automatically create a swapfile between 16-128MiB to help keep Vim running.

Options

  • grub: Uses a GRUB 2.x bootloader instead of EXTLINUX. The build script overrides this if you said "Yes" to using SHORK's patched fork of EXTLINUX.

  • gui: Includes SHORK 486's graphical environment ("SHORKGUI"). This includes kernel-level framebuffer, VESA and enhanced VGA support, TinyX display server, TWM window manager, various supporting X11 utilities, st terminal emulator, and the shorkgui utility.

    • SHORKGUI is an experimental feature - expect quirks and incompleteness!
    • As it is subject to big changes, the system requirements are not set in stone. But the following should provide a usable experience for now:
      • IntelDX4 (ideally; 486SX, 486DX, etc. works but are very slow)
      • 24MiB system memory with no swap partition, or 16MiB with 8MiB swap
      • A PCI graphics card supported by vesafb
  • highmem: Adds kernel-level high memory support and declares that non-reserved physical memory starts at 16MiB instead of 1MiB. In general, this is provided in case someone wanted to try SHORK 486 on a more modern system with more than 875MiB RAM. It is not needed for most '90s hardware. Its RAM requirements are 24MiB with no swap partition or 16MiB with 8MiB swap.

  • no-vdso32: Adds vdso32=0 to the Linux kernel command line to disable 32-bit vDSO and its SEP-based (SYSENTER/SYSEXIT) syscall path in favour of the universal int $0x80. This is enabled by default as it does not affect 486/586 performance but prevents a kernel panic with Intel Pentium Pro and Socket 8 Pentium II OverDrive processors that report SEP via CPUID but in fact do not work with it. If you plan to use SHORK 486 on 'real' Intel Pentium II or newer processors, you can disable this for a marginal performance gain.

  • pci.ids: Includes a database of graphics card PCI vendor and device IDs. It is safe to exclude it, but shorkfetch will not be able to identify any installed graphics cards.

  • pcmcia: Adds kernel-level CardBus/PCMCIA/PC Card support. It is primarily needed to support PCMCIA-based network controllers for laptops or unique desktop PCs like the IBM PS/2 E. For most desktop PCs, it is safe to exclude it.

  • sata: Adds kernel-level SATA AHCI support. This is provided in case someone wanted to try SHORK 486 on a more modern system with SATA devices, or has installed a PCI-based SATA controller in a '90s system. It is not needed for most '90s hardware. Its RAM requirements are 24MiB with no swap partition or 16MiB with 8MiB swap.

  • smp: Adds kernel-level symmetric multiprocessing (e.g., multi-core) support. This is provided in case someone wanted to try SHORK 486 on a more modern system with a multi-core processor. It is not needed for any '90s hardware. It may add ~1-2MiB to idle RAM usage.

  • usb: Adds kernel-level USB and HID support and enables BusyBox's lsusb implementation. This is provided in case someone wanted to try SHORK 486 on a system with USB peripherals and/or mass storage devices.

Build automation

These build script parameters are provided to help automate its use, especially for successive runs. It is useful if you want to rebuild SHORK 486 when the only differences are changes to sysfiles or the target disk image and swap partition sizes, and not to the kernel, selected bundled programs or features. It is not recommended to use the "skip BusyBox" or "skip kernel" parameters when making a build after running the build configurator or pulling any updates from the SHORK 486 GitHub repository, as it results in using stale compilations that do not reflect configuration or repository changes.

  • Always (re)build (--always-build): Used to ensure the kernel is always (re)built. This will skip the prompt that appears if the kernel is already downloaded and built, acting like the user selected the "Reset & clean" option.

    • This does nothing if the "skip kernel" parameter is also used.
  • Is Arch (--is-arch): Used to skip the host Linux distribution selection prompt and the build script will assume it is running on an Arch-based system.

  • Is Debian (--is-debian): Used to skip the host Linux distribution selection prompt and the build script will assume it is running on a Debian-based system.

  • Is Fedora (--is-fedora): Used to skip the host Linux distribution selection prompt and the build script will assume it is running on a Fedora-based system.

  • Skip BusyBox (--skip-busybox): Used to skip recompiling BusyBox.

    • This parameter requires at least one complete build.
  • Skip kernel (--skip-kernel): Used to skip recompiling the kernel.

    • This parameter requires at least one complete build.

Directories

  • build: Contains the source code repositories, the root file system and the kernel image downloaded or made by the build process.

    • Created after a build attempt is made.
    • Do not directly modify or add files to this directory, as the directory may be deleted and recreated upon running the build script again.
  • configs: Contains configuration files used when compiling certain software, most notably SHORK 486's tailored Linux kernel and BusyBox .config files.

  • images: Contains the result raw disk images and an after-build report created by the build process.

    • Created after a build attempt is made.
  • patches: Contains diff patches for the Linux kernel and BusyBox to restore removed functionality/implement new functionality required for SHORK 486.

  • payload: A place to put files you wish to bundle into a SHORK DISC image.

  • release:

  • shorkutils: Contains custom SHORK Utilities to be copied into the root file system

  • sysfiles: Contains important system files to be copied into the root file system.

Notice & disclaimers

Building SHORK 486

Running build.sh directly for natively building SHORK 486 will automatically perform several tasks on the host computer and operating system, including enabling 32-bit packages (Debian), installing prerequisite packages, modifying PATH, and creating some environment variables. I would advice you review what the script does to ensure it does not conflict with your existing configuration. Consider Dockerised building to minimise impact to your host operating system.

Running clean.sh will delete everything build.sh has downloaded, created or generated; the build and images directories and their contents. If you have made any manual changes to anything inside those directories, they will be lost when running this shell script.

Using SHORK 486

When built as a single-user system or a multi-user system with no additional users, you will be the root user when using SHORK 486. Make sure to act accordingly, and use it considerately and responsibly.

AI policy

SHORK 486 itself, SHORK Utilities and SHORK Entertainment are developed under a no LLM-generated code or documentation policy. PR requests that contain contributions from an LLM bot or are obviously LLM-generated/vibecoded will be denied. I cannot vouch this for third-party bundled software, or that the tutorials I'm learning from and sources I'm reading weren't influenced by LLM content unbeknownst to me, but I will do my best to recognise such and ensure this doesn't affect the things I control. Even considering locally-trained models or limiting LLM usage to speeding up repetitive tasks (etc.), my wish is for the SHORK family to be a human-made project. :)

Acknowledgements

  • This product includes software developed by Andrés Martinelli andmarti@gmail.com (sc-im).

About

A Linux distribution for 486 and Pentium (P5) vintage PCs

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages