NetBSD/Dreamcast
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. Example is using 10.0_BETA
References: How to fetch NetBSD sources, How to build NetBSD
Example
Initial folder setup
Create a working directory in your home folder and enter it:
mkdir ~/netbsd cd netbsd
Create additional directories for files:
mkdir -p usr obj src-tars xsrc-tars
Download files
Download from ftp.netbsd.org/pub/NetBSD/NetBSD-release-10/tar_files/src/ and place files into directory src-tars
Download 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 -C usr; done for file in xsrc-tars/*.tar.gz; do tar -zxf $file -C usr; done
Build toolchain
cd usr/src /build.sh -U -O ~/netbsd/obj -j2 -m dreamcast tools
(-U is unprivileged, -O is where to store object files, -j is number of threads during build, -m is machine type, tools is toolchain)
run the following command and take note of your tooldir name, e.g. on Linux:
ls -l ~/netbsd/obj
will returns something like...
- tooldir.Linux-6.0.15-gentoo-x86_64 - tools
The one with "tooldir" in the name is the directory to note.
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/obj/<YOUR_TOOLDIR_NAME>/bin/nbmake-dreamcast depend ~/netbsd/obj/<YOUR_TOOLDIR_NAME>/bin/nbmake-dreamcast
Build userland
cd ~/netbsd/usr/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
./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)