Latest release v7.1.2 · 7.1.2 kernel

// GNU/Linux on the Sega Dreamcast · SH4

A full Linux distribution
for the Sega Dreamcast

A modern 7.x kernel, a BusyBox base and a ~140-package userland — booting on real Dreamcast hardware from a humble GD-ROM. Kernel built in a Docker environment; userland cross-compiled with T2 SDE.

✓ Tested on real hardware · MIT licensed · No emulator required

ttySC1 — Dreamcast serial console · 115200 baud
Linux version 7.1.2 (root@build) (sh4-linux-gcc (GCC) 15.2.0, GNU ld 2.45.1) #3 PREEMPT Sat Jun 27 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 - 0x8c395408   (3665 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: 10524K/16384K available (3661K kernel code, 205K rwdata, 916K rodata, 160K init, 102K bss, 5244K 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 Keyboard: function 0x40: at (2, 0)
maple (null): detected Dreamcast Controller: function 0x1: at (3, 0)
maple (null): detected Visual Memory: function 0xE: at (3, 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
Dreamcast_visual_memory 3:01.E: VMU LCD at (3, 1) registered as vmu_lcd0
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
Dreamcast_visual_memory 3:01.E: VMU device at partition 0 has 240 user blocks with a root block at 255
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/2: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
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: 160K
Run /init as init process
ISO 9660 Extensions: RRIP_1991A

root@dreamcast:/$ _

Real boot log — Linux 7.1.2 on actual Dreamcast hardware, scroll it. ▶ Watch it boot · raw dmesg

# Gallery

Dreamcast Linux running on real hardware. Click any shot to enlarge.

7.xLinux kernel
~140userland packages
16MBsystem RAM
SH4200 MHz CPU

# What's inside

A real, usable Linux system on 28-year-old console hardware — not a tech demo.

🖥️ Framebuffer console

A 640×480 pvr2fb console on the PowerVR2 — plug in a TV/Monitor and a Dreamcast keyboard and you have a terminal.

🌐 Networking & NFS

Broadband Adapter (RTL8139) support with full TCP/IP, NFS mounts and remote login over the wire.

💾 VMU support

Read and write the Visual Memory Unit as a block device, including the on-VMU LCD and vmufat filesystem.

💿 GD-ROM

Native GD-ROM driver — boot and mount the giga-disc directly, or run from GDEMU / dcload.

📦 overlayfs userland

~140 packages on the GD-ROM, mounted writable via overlayfs. Available as musl or uClibc builds.

🎮 Maple bus

Controllers, keyboards and peripherals on the Maple bus are probed and exposed as standard input devices.

🐧 Modern kernel

A current 7.x SH4 kernel with a kernel-integrated initramfs — no separate initrd juggling required.

⬆️ Upstream first

Every sane kernel change is sent upstream to mainline rather than kept as a private fork — so Dreamcast support keeps improving for everyone, not just this distro.

📚 T2 SDE userland

The ~140 userland packages are cross-compiled with T2 SDE, the System Development Environment for fully source-based distributions.

👹 Yes, it runs DOOM

fbdoom ships in the userland — DOOM rendered straight to the Dreamcast framebuffer.

🪶 5 KB init

A tiny custom init — just ~5 KB — brings the system up while using as little of the 16 MB as possible. Every byte counts here.

🐚 mksh shell

The lightweight mksh (MirBSD Korn Shell) is the default shell — small, fast and a comfortable fit for a memory-tight system.

# Downloads

Grab a bootable image from the latest release. Burn the CDI, drop it on a GDEMU, or load the raw binary with dcload.

v7.1.2 Linux 7.1.2 kernel · released June 2026 Full notes
  • Updated to the Linux 7.1.2 kernel for SH4.
  • VMU LCD display support by adaptation of Christian Berger's original driver
  • vmufat support as filesystem of VMUs with Adrian McMenamin's code
  • fbdoom shipped in the userland.
  • Added packages: fbset, libsdl, inetutils (for telnet), xinetd (to start telnetd), cmatrix, text2lcd, vmu_lcd_text
ImageWhat it isFor
base-busybox Kernel + initrd with a minimal BusyBox shell. NFS, GD-ROM mounts and more. Smallest bootable system / debugging
with-userland Full system, ~140 packages on GD-ROM via overlayfs. musl or uClibc. The complete distro
userland Just the userland files, no kernel. Custom roll-your-own images
kernel-boot.bin Plain executable. Loading via dcload-serial
1ST_READ.BIN Scrambled executable. Burning a self-booting CD

# Tested hardware

It runs on metal. Add your console via a PR to the repo.

Boot mediumRevisionStatus
GDEMU · dcload-serial · dcload-ipHKT-3030, PAL E, Rev. 1✓ Works
GD-ROM · dcload-serialHKT-3000, NTSC-J (670-14071E)✓ Works
GD-ROM · dcload-serialHKT-3020, NTSC-U, Rev. 1 (670-14081B)✓ Works
GDEMUHKT-3020, NTSC-U, Rev. 1 (670-14081M)✓ Works
GDEMUHKT-3020, NTSC-U, Rev. 1 (670-14081K)✗ Stuck at SEGA screen
Emulators (flycast, lxdream, redream, GXemul)various✗ Not yet

Full per-device notes and emulator analyses live in the repo's debuggings/ directory and the README.

# Standing on the shoulders of giants

Linux on the Dreamcast is not new. Back in 2000–2001, the GNU/Linux on SEGA Dreamcast team made the impossible boot — a full Linux distribution on a 2.4 kernel, running on a games console with just 16 MB of RAM. In the years since, the Linux-SH developers carried that work into the mainline kernel — which is why a modern 7.x kernel boots on this hardware today. This project exists to carry that torch forward, and it owes everything to the people who got there first.

Niibe Yutaka

Who started the Linux/SuperH port back in 1998 — building the GNU toolchain and the sh3/sh4 architecture support that every Dreamcast kernel since has been built on.

Founder of Linux/SH

Yaegashi Takeshi

Author of the original GNU/Linux on SEGA Dreamcast — the patched 2.4.5 kernel and Debian-based live CD with working X11, networking and framebuffer, back in 2001.

m17n.org/linux-sh/dreamcast

Paul Mundt

Long-time maintainer of the SuperH (arch/sh) architecture upstream — the reason Dreamcast support lives in the mainline kernel at all.

Linux-SH maintainer

Adrian Glaubitz

The current SuperH maintainer — who stepped in to keep arch/sh from being removed from the kernel and still actively cares for the architecture. The direct reason a modern 7.x kernel boots on this hardware today.

Keeping SH alive today

Adrian McMenamin

Author of much of the Dreamcast's mainline hardware support — the VMU maple-bus driver, the vmu-flash MTD device and the vmufat filesystem this distro still builds on.

VMU · maple · VMUFAT

Marcus Comstedt

Whose reverse-engineering and documentation of the Dreamcast — the boot process, the IP.BIN format and the makeip / scramble tools — are what let this distro build a self-booting disc at all.

mc.pp.se/dc

Adrian O'Grady

Who packaged and shared the unofficial DcLinux DiscJuggler image (2001) so the rest of us could actually boot it.

DcLinux-010605 · fivemouse.com

…and everyone else

The Linux-SH kernel hackers, the homebrew and dcemulation scene, the GCC / binutils / glibc and T2 SDE maintainers, and every contributor whose name didn't fit on a card. These few are named for what this project leans on directly — but none of it works without the many. Thank you.

The whole community