AnyTux.org ... Linux beyond x86

AnyTux step by step: Linux on a SEGA Dreamcast

Stefan Lang, contributions by Maik Henker

While searching the web for information to put on AnyTux.org I found Dreamcast Linux, a Debian based distribution created especially for SEGA's game console. This was quite fascinating, so I got myself a Dreamcast along with keyboard and mouse on eBay and tried it out.

Dreamcast Linux is a "Live" CD like the famous Knoppix distribution for x86 systems. It makes full use of the available Dreamcast peripherals.

For whatever reason, the authors of Dreamcast Linux did not put full information about creating a bootable Dreamcast Linux CD on their site, so here is how it goes (it's really simple in fact).

Requirements

You need the following to bring Tux to your Dreamcast:

  • Dreamcast game console (obviously)
  • Dreamcast keyboard (or PC keyboard with adapter)
  • Dreamcast mouse (optional, to use the GUI)
  • Linux PC with CD writer and Internet access

Preparation

You will need about 350 MB of free space on your PC's harddisk to complete the preparation of the bootable CD. Most work will be done on the console.

  • Create a work directory, e.g. in your home directory:

    cd
    mkdir dreamcast_work
    cd dreamcast_work

  • Download the Dreamcast Linux distribution to that directory (Note: as the original FTP site is gone,.you may download the tarball directly from AnyTux.org)
    Unpack the tarball:

    tar xjfv dreamcast-linux-[version].tar.bz2

  • Download the bootstrap creation tool makeip to that directory.
    Unpack the tarball and compile the source:

    tar xzfv makeip.tar.gz
    gcc -o makeip makeip.c

Generating the Bootstrap

To make the CD boot, it must have bootable code (the bootstrap) within the first 16 sectors. This is created as a file called IP.BIN prior to creating the CD.
You might want to edit the file ip.txt and put your own "SW Maker Name" and "Game Title" there, but this is not required. After that, create IP.BIN with

./makeip ip.txt IP.BIN

Creating the CD

  • Find out the SCSI ID for your CD writer:

    cdrecord -scanbus

    If you have an IDE CD writer, you will probably get something like 0,0,0 or 0,1,0

  • This value must be put into the CD mastering script in the distributions root directory:

    cd dreamcast-linux-[version]
    vi master.sh (or use any editor of your liking)

    Put the numbers you found above into the line beginning with "CDRECORD=", e.g.

    CDRECORD="cdrecord dev=0,1,0"

    Save the modified master.sh script.

  • Insert an empty CD-R into your CD writer (CD-RW media will not work).
  • Start writing the CD-R:

    ./master.sh ../IP.BIN

  • After your CD is written you can put it into your Dreamcast and boot Linux. You can login as root with no password.

If you experience any problems booting into Linux, try Maik Henker's hints:

  • The cdrecord line in master.sh uses the parameter "-xa1". This parameter has a different meaning in some versions of cdrecord, resulting in the Dreamcast not booting but trying to play the audio track. This problem can be avoided by changing the parameter "-xa1". to "-xa".
  • If the Dreamcast starts booting but hangs during initialization of the initrd, try adding the parameter "-l" to the mkisofs line in master.sh. This will allow 31 character long file names in the ISO file system.

Resources

This document is based on information from the following pages:

See also Marcus Comstedt's Dreamcast Programming site for more information about Dreamcast hardware and programming.

ToDo

There are several things that remain to do for an improved version of Dreamcast Linux

  • Create a German localized version (I'm German, remember?)
  • Support for the built-in hardware clock is missing
  • Update kernel and applications to more recent versions - Dreamcast Linux is based on Debian unstable with kernel 2.4.5, release date is mid of June 2001.
  • Put more software on the CD
© Copyright 2004-2008 Stefan Lang | Sitemap | Imprint