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.
In general, the instructions are made to be able to copy/paste, but read the text before and after the commands to make sure you understand them in case you need to adjust paramaters to your liking.
Building NetBSD source from scratch
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 obj toolchain dest release src-tars xsrc-tars
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
cd ~/netbsd for file in src-tars/*.tar.gz; do tar -zxf $file; done for file in xsrc-tars/*.tar.gz; do tar -zxf $file; done
First, we need to build the cross-compiler to compile SuperH code on your desktop machine.
cd ~/netbsd/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.
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
options IOM_RAM_SIZE=0x02000000 # 32MB
You can pick GENERIC, GENERIC_MD (memory disk), or G1ATA kernel types. You can also copy one of them to a new file in the same dir and edit to configure your own kernel options for a custom kernel type.
If you have a serial or USB coder's cable and want to run headless, or don't have a Dreamcast keyboard and want to use your computer keyboard for input, you may want to set
options SCIFCONSOLE in your kernel config to communicate over serial connection.
Run nbconfig on your kernel config:
Enter the configuration directory:
Then build dependencies and kernel:
~/netbsd/toolchain/bin/nbmake-dreamcast depend ~/netbsd/toolchain/bin/nbmake-dreamcast
netbsd.bin is your kernel file and Dreamcast executable (e.g. it can be sent over dcload-ip to boot NetBSD, or it can be scrambled and burned to CD-R as 1ST_READ.BIN).
cp netbsd.bin ~/netbsd/NetBSD-10.0_BETA-GENERIC.bin
You can repeat these steps to build multiple kernels.
cd ~/netbsd/src ./build.sh -U -O ~/netbsd/obj -T ~/netbsd/toolchain -D ~/netbsd/dest -R ~/netbsd/release -j2 -u -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 -O ~/netbsd/obj -T ~/netbsd/toolchain -D ~/netbsd/dest -R ~/netbsd/release -x -X ~/netbsd/xsrc -j2 -u -m dreamcast release
(-x is to build the X server, -X is the path of the X source code)
~/netbsd/destwill contain a copy of your NetBSD/Dreamcast userland.
~/netbsd/release/dreamcast/binarywill contain packaged copies of kernels and userland sets for resharing with others.
options NFS_BOOT_BOOTSTATIC options NFS_BOOTSTATIC_MYIP="\"192.168.0.100\"" options NFS_BOOTSTATIC_GWIP="\"192.168.0.1\"" options NFS_BOOTSTATIC_MASK="\"255.255.255.0\"" options NFS_BOOTSTATIC_SERVADDR="\"192.168.0.2\"" options NFS_BOOTSTATIC_SERVER="\"192.168.0.2:/home/user/netbsdmount\"" options NFS_BOOT_RWSIZE=1024