Dreamcast NetBSD Investigation
Posted: Thu Jul 18, 2024 1:28 pm
This is not going to be my OCC next year, we're gonna get that out of the way first. If it were it'd be some serious style points though.
I don't really feel like writing up the results on a proper OCC page, so we'll make it some forum exclusive content.
You don't need a NetBSD box to bootstrap off of, but they have some tools that make it easier, so I went ahead and installed that on my laptop. They have a package called "dc-tools" to make booting on the Dreamcast easier, but it's not packaged. Apparently the first time you run pkgsrc (their ports system) it spends hours building a dependency tree. I think about 4 since I started the process just before 6 PM and wasn't burning CDs until 10 or so. When I got to that point the tool asks you which sets to install and offers X, which is a bit silly since if you include the X sets it's too big to fit onto a CD.
When I booted it, the display was all fucked up. The bottom 5 lines of text were cut off, as was the top line and the righmost column. It wasn't an overscan thing, it was present on multiple displays and configurations. I suspect this may be because I was using composite output rather than a VGA adapter, which I don't have. If I could fix that I miiiight consider it for OCC next year, but it made it impossible to do much of anything.
Of course that didn't stop me from trying to do things. I had it in my head that I could solve these problems if I could just get X running. For that I needed an NFS boot.
Now the documentation for the Dreamcast port says it's intended for beginners, that pretty well drops off at this point . The prep work I knew was fine, setting up NFS is actually really easy. The docs also mentioned having to configure dhcpd which I did but this is when the weird starts accumulating in the back of my head. The netbooting I was used to was PXE style, so what I assumed was when I told it to netboot it'd prompt me for an ip address and I could connect it up to my laptop, it'd tftp the exports file or whatever, mount that, etc.
Nah man. You're making a router. Incidentally this means if you have no wifi and only 1 ethernet port you're kinda screwed. At this point I'm not even OCCing because I need my laptop connected to wifi and its ethernet port hooked up to the Dreamcast and I have a twm session up with luakit to look up these bitrotted links in the wayback machine. I configure a two headed DHCP setup where the wifi is still the wifi and the ethernet port gets assigned DHCP server duties. Got that. Fought mountd to make it like all the exports. Started all the services. Made a swapfile. Booted. Aaaaaand.
We booted. I tried to xinit xterm. It took several minutes to open up X. It kept failing because of a bad config. Actually it has no config. Luckily it tried to make configs, so I renamed one of those to xorg.conf and... It hung for several minutes, then the session closed. I tried a few more times, no luck. Maybe X isn't the way. I try installing dvtm so that I can split the display for a tiny console which at least fits. No luck without a PKG_PATH. Do you know how hard it is to blind-type a PKG_PATH? Still nothing. Oops, forgot a firewall rule on my laptop to forward ethernet traffic to wifi. Run pkg_add and it immediately crashes. Try it a few other ways, no luck. Run top. Realize there's no swap because it booted in single user mode. Did I mention the Dreamcast has 16MB of RAM? swapon and try it again. Fun fact: pkg_add took 69MB of RAM to run at all. Installation of anything takes at least 5 minutes with swap-over-NFS. I also messed up blind-typing PKG_PATH a few more times.
Did I mention I'm stuck with a dumb terminal here? Like I can't even use vi. I have to use ed, I can't scroll up, etc. Eventually I get dvtm installed and it insta-crashes. I tried tmux for good measure, insta-crashes. I try exporting TERM=vt100, this actually works(!) for some things, like vi and less. dvtm and tmux still insta-crash.
At this point I just want to humbly announce my achievement in the OCC channel, something along the lines of "Look who's posting this from a dreamcast, bitches!" you know.
There are no lightweight irc clients packaged for the sh3el architecture and irssi crashes on launch because it can't find libperl for some reason.
I go to bed.
I don't really feel like writing up the results on a proper OCC page, so we'll make it some forum exclusive content.
You don't need a NetBSD box to bootstrap off of, but they have some tools that make it easier, so I went ahead and installed that on my laptop. They have a package called "dc-tools" to make booting on the Dreamcast easier, but it's not packaged. Apparently the first time you run pkgsrc (their ports system) it spends hours building a dependency tree. I think about 4 since I started the process just before 6 PM and wasn't burning CDs until 10 or so. When I got to that point the tool asks you which sets to install and offers X, which is a bit silly since if you include the X sets it's too big to fit onto a CD.
When I booted it, the display was all fucked up. The bottom 5 lines of text were cut off, as was the top line and the righmost column. It wasn't an overscan thing, it was present on multiple displays and configurations. I suspect this may be because I was using composite output rather than a VGA adapter, which I don't have. If I could fix that I miiiight consider it for OCC next year, but it made it impossible to do much of anything.
Of course that didn't stop me from trying to do things. I had it in my head that I could solve these problems if I could just get X running. For that I needed an NFS boot.
Now the documentation for the Dreamcast port says it's intended for beginners, that pretty well drops off at this point . The prep work I knew was fine, setting up NFS is actually really easy. The docs also mentioned having to configure dhcpd which I did but this is when the weird starts accumulating in the back of my head. The netbooting I was used to was PXE style, so what I assumed was when I told it to netboot it'd prompt me for an ip address and I could connect it up to my laptop, it'd tftp the exports file or whatever, mount that, etc.
Nah man. You're making a router. Incidentally this means if you have no wifi and only 1 ethernet port you're kinda screwed. At this point I'm not even OCCing because I need my laptop connected to wifi and its ethernet port hooked up to the Dreamcast and I have a twm session up with luakit to look up these bitrotted links in the wayback machine. I configure a two headed DHCP setup where the wifi is still the wifi and the ethernet port gets assigned DHCP server duties. Got that. Fought mountd to make it like all the exports. Started all the services. Made a swapfile. Booted. Aaaaaand.
We booted. I tried to xinit xterm. It took several minutes to open up X. It kept failing because of a bad config. Actually it has no config. Luckily it tried to make configs, so I renamed one of those to xorg.conf and... It hung for several minutes, then the session closed. I tried a few more times, no luck. Maybe X isn't the way. I try installing dvtm so that I can split the display for a tiny console which at least fits. No luck without a PKG_PATH. Do you know how hard it is to blind-type a PKG_PATH? Still nothing. Oops, forgot a firewall rule on my laptop to forward ethernet traffic to wifi. Run pkg_add and it immediately crashes. Try it a few other ways, no luck. Run top. Realize there's no swap because it booted in single user mode. Did I mention the Dreamcast has 16MB of RAM? swapon and try it again. Fun fact: pkg_add took 69MB of RAM to run at all. Installation of anything takes at least 5 minutes with swap-over-NFS. I also messed up blind-typing PKG_PATH a few more times.
Did I mention I'm stuck with a dumb terminal here? Like I can't even use vi. I have to use ed, I can't scroll up, etc. Eventually I get dvtm installed and it insta-crashes. I tried tmux for good measure, insta-crashes. I try exporting TERM=vt100, this actually works(!) for some things, like vi and less. dvtm and tmux still insta-crash.
At this point I just want to humbly announce my achievement in the OCC channel, something along the lines of "Look who's posting this from a dreamcast, bitches!" you know.
There are no lightweight irc clients packaged for the sh3el architecture and irssi crashes on launch because it can't find libperl for some reason.
I go to bed.