NetBSD/Dreamcast

From dreamcast.wiki
Revision as of 20:02, 4 January 2023 by Unknown user (talk)
Jump to navigation Jump to search

This article is a WIP. It is subject to rapid change. Beware!

Before building NetBSD, it's important to undertand release types and pick one of release, stable, or current types.

The example we'll follow here is using is using 10.0-release BETA.

References: How to fetch NetBSD sources, How to build NetBSD

Example

Initial folder setup

Create a working directory in your home folder to hold everything, and enter it:

mkdir ~/netbsd
cd netbsd

Create additional directories for files:

mkdir -p obj toolchain dest release src-tars xsrc-tars

Download files

Download all files from ftp.netbsd.org/pub/NetBSD/NetBSD-release-10/tar_files/src/ and place files into directory src-tars

Download all files from ftp.netbsd.org/pub/NetBSD/NetBSD-release-10/tar_files/xsrc/ and place files into directory xsrc-tars

Extract files

for file in src-tars/*.tar.gz; do tar -zxf $file; done
for file in xsrc-tars/*.tar.gz; do tar -zxf $file; done

Build toolchain

First, we need to build the cross-compiler to compile SuperH code on your desktop machine.

cd src
./build.sh -U -O ~/netbsd/obj -T ~/netbsd/toolchain -D ~/netbsd/dest -R ~/netbsd/release -j2 -m dreamcast tools

(-U is unprivileged, -O is where to store object files, -T is your toolchain directory, -D is the directory to place built NetBSD files, -R is the directory to place release files, -j is number of threads during build, -m is machine type, tools indcates you want to build toolchain) Be sure to adjust -j to the number of threads you want to use depending on how many cores/threads your processor provides.

Build kernel

cd sys/arch/dreamcast/conf

If your target Dreamcast is modded with 32MB of RAM and you wish to build for that, open std.dreamcast and replace

options 	IOM_RAM_SIZE=0x01000000         # 16MB

with

options 	IOM_RAM_SIZE=0x02000000         # 32MB

You can pick GENERIC, GENERIC_MD (memory disk), or G1ATA kernel types, or copy one of them to a new file in the same dir and edit to configure your own kernel options. Run nbconfig on your kernel config, putting in the tooldir you noted before:

~/netbsd/obj/<YOUR_TOOLDIR_NAME>/bin/nbconfig GENERIC

Then build dependencies and kernel:

~/netbsd/toolchain/bin/nbmake-dreamcast depend
~/netbsd/toolchain/bin/nbmake-dreamcast

Build userland

cd ~/netbsd/src
./build.sh -U -u -j2 -O ~/netbsd/obj -m dreamcast release

(-u is update-only so we use what we've already built before instead of building another toolchain, and don't forget -j is number of threads during build)

Build X Server

cd ~/netbsd/src
./build.sh -U -u -O ../../obj -j30 -x -X ../xsrc -m dreamcast release

(-x is to build the X server, -X is the path of the X source code)