Dreamcast Linux

A Linux distribution for the Sega Dreamcast: a 7.x kernel, a BusyBox base and about 140 userland packages, booting from a GD-ROM on the original 200 MHz SH4 with 16 MB of RAM. Tested on real hardware.

The kernel is built in a Docker environment, the userland is cross-compiled with T2 SDE.

Download v7.2.9

Dreamcast Linux booted to a console, showing system info
Booted to a console
X11 desktop on Dreamcast Linux: JWM with htop in rxvt and xeyes
X11 with JWM
DOOM running via fbdoom on Dreamcast Linux
fbdoom

Boot log

Linux 7.2.9 on a real Dreamcast, captured on the serial console (ttySC1, 115200 baud). There is also a video of the boot and the raw dmesg.

Linux version 7.2.9 (root@build) (sh4-linux-gcc (GCC) 15.2.0, GNU ld 2.45.1) #8 PREEMPT Wed Oct 7 2026
Booting machvec: Sega Dreamcast
Kernel command line: console=ttySC1,115200 panic=3 ip=dhcp
Zone ranges:
  Normal   [mem 0x000000000c000000-0x000000000cffffff]
PVR=040205c1 CVR=00000000 PRR=00000000
I-cache : n_ways=1 n_sets=256 way_incr=8192
D-cache : n_ways=1 n_sets=512 way_incr=16384
virtual kernel memory layout:
    lowmem  : 0x8c000000 - 0x8d000000   (  16 MB) (cached)
      .text : 0x8c001000 - 0x8c34b470   (3369 kB)
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
intc: Registered controller 'sh7750' with 20 IRQs
Calibrating delay loop (skipped)... 199.50 BogoMIPS PRESET (lpj=399012)
CPU: SH7750
Memory: 11336K/16384K available (3365K kernel code, 205K rwdata, 424K rodata, 148K init, 93K bss, 4436K reserved)
Performance Events: sh7750 support registered
Advanced Linux Sound Architecture Driver Initialized.
DMA: Registering g2_dmac handler (4 channels).
PCI host bridge to bus 0000:00
pci 0000:00:00.0: [11db:1234] type 00 class 0x020000 conventional PCI endpoint
PCI: Fixing up device 0000:00:00.0
maple: bus core now registered
NET: Registered PF_INET protocol family
TCP: Hash tables configured (established 1024 bind 1024)
sq: Registering store queue API.
maple (null): detected Dreamcast Mouse: function 0x200: at (0, 0)
maple (null): detected Dreamcast Controller: function 0x1: at (1, 0)
maple (null): detected Dreamcast Controller: function 0x1: at (2, 0)
maple (null): detected Keyboard: function 0x40: at (3, 0)
maple (null): detected Visual Memory: function 0xE: at (2, 1)
squashfs: version 4.0 (2009/01/31) Phillip Lougher
Console: switching to colour frame buffer device 80x30
fb0: NEC PowerVR2 (rev 1.1) frame buffer device, using 600k/8192k of video memory
fb0: Mode 640x480-16 pitch = 1280 cable: VGA video output: VGA
sqremap:    NEC PowerVR2  [2048 pages]  va 0xe0000000   pa 0xa5000000
SuperH (H)SCI(F) driver initialized
sh-sci.1: ttySC1 at MMIO 0xffe80000 (irq = 56, base_baud = 0) is a scif
printk: legacy console [ttySC1] enabled
pvr2_dc: /dev/pvr ready (VRAM 8MB, regs, TA FIFO, CH2-DMA submit)
Dreamcast_visual_memory 2:01.E: VMU LCD at (2, 1) registered as vmu_lcd0
lan_adapter (uninitialized): no MB86967 found (slot empty or modem fitted?)
Dreamcast_visual_memory 2:01.E: VMU device at partition 0 has 200 user blocks with a root block at 255
8139too 0000:00:00.0 eth0: RealTek RTL8139 at 0x(ptrval), 00:d0:f1:03:21:ca, IRQ 99
PPP generic driver version 2.4.2
SLIP: version 0.8.4-NET3.019-NEWTTY (dynamic channels, max=256).
gdrom: CD-ROM DRIVE     from SE               with firmware 6.42
gdrom: Registered with major number 254
cdrom: Uniform CD-ROM driver Revision: 3.20
input: Keyboard as /devices/maple/3:00.40/input/input0
input: Dreamcast Mouse as /devices/maple/0:00.200/input/input1
input: Dreamcast Controller as /devices/maple/1:00.1/input/input2
input: Dreamcast Controller as /devices/maple/2:00.1/input/input3
AICA AICA: ALSA Driver for Yamaha AICA Super Intelligent Sound Processor
random: crng init done
8139too 0000:00:00.0 eth0: link up, 100Mbps, full-duplex, lpa 0xC1E1
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 192.168.0.1, my address is 192.168.0.38
     device=eth0, hwaddr=00:d0:f1:03:21:ca, ipaddr=192.168.0.38, mask=255.255.255.0, gw=192.168.0.1
ALSA device list:
  #1: Yamaha AICA Super Intelligent Sound Processor for SEGA Dreamcast
Freeing unused kernel image (initmem) memory: 148K
Run /init as init process
ISO 9660 Extensions: RRIP_1991A

root@dreamcast:/$ 

Features

Framebuffer console
640×480 pvr2fb console on the PowerVR2. Plug in a TV or monitor and a Dreamcast keyboard and you have a terminal.
Networking and NFS
The Broadband Adapter (HIT-0400, RTL8139) and the LAN Adapter (HIT-0300) are both supported: TCP/IP, NFS mounts and remote login.
VMU
The Visual Memory Unit is readable and writable as a block device, with the vmufat filesystem and the VMU LCD.
GD-ROM
Native GD-ROM driver. Boot and mount the disc directly, or run from GDEMU or dcload.
Maple bus
Controllers, keyboards and mice are probed and show up as standard input devices.
Userland
About 140 packages on the GD-ROM, mounted writable through overlayfs, in musl or uClibc builds. mksh is the default shell, and fbdoom is included.
Kernel
A current 7.x SH4 kernel with a built-in initramfs, so there is no separate initrd. A custom init of about 5 KB brings the system up.
Upstream first
Kernel changes are sent to mainline where that makes sense, instead of being kept in a private fork.

Downloads

Images are on the releases page. Burn the CDI, put it on a GDEMU, or load the raw binary with dcload.

v7.2.9, October 2026

Full release notes

ImageContentsUse
base-busybox Kernel and initrd with a minimal BusyBox shell. NFS, GD-ROM mounts and more. Smallest bootable system, debugging
with-userland Full system, about 140 packages on GD-ROM via overlayfs. musl or uClibc. The complete distribution
userland Only the userland files, no kernel. Building your own images
kernel-boot.bin Plain executable. Loading via dcload-serial
1ST_READ.BIN Scrambled executable. Burning a self-booting CD

Heritage

Linux on the Dreamcast is not new. In 2000 and 2001 the GNU/Linux on SEGA Dreamcast team got a full distribution with a 2.4 kernel running on this console. The Linux-SH developers later carried that work into the mainline kernel, which is why a 7.x kernel boots on this hardware today. This project builds on the work of the people who got there first:

Niibe Yutaka
Started the Linux/SuperH port in 1998, with the GNU toolchain and the sh3/sh4 architecture support that every Dreamcast kernel since has been built on.
Yaegashi Takeshi
Author of the original GNU/Linux on SEGA Dreamcast: the patched 2.4.5 kernel and a Debian-based live CD with working X11, networking and framebuffer, in 2001.
Paul Mundt
Long-time upstream maintainer of the SuperH architecture (arch/sh), and the reason Dreamcast support is in the mainline kernel.
Adrian Glaubitz
The current SuperH maintainer, who stepped in to keep arch/sh from being removed from the kernel and still looks after it.
Adrian McMenamin
Wrote much of the Dreamcast's mainline hardware support: the VMU maple-bus driver, the vmu-flash MTD device and the vmufat filesystem.
Marcus Comstedt
His reverse-engineering and documentation of the boot process, the IP.BIN format and the makeip and scramble tools make it possible to build a self-booting disc.
Adrian O'Grady
Packaged and shared the unofficial DcLinux DiscJuggler image (DcLinux-010605, 2001).

Thanks also to the Linux-SH kernel developers, the homebrew and dcemulation scene, and the GCC, binutils, glibc and T2 SDE maintainers.