{"id":2915,"date":"2010-09-15T22:31:49","date_gmt":"2010-09-16T05:31:49","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=2915"},"modified":"2010-10-15T10:59:21","modified_gmt":"2010-10-15T17:59:21","slug":"dreamcast-operating-systems","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/dreamcast-operating-systems\/","title":{"rendered":"Dreamcast Operating Systems"},"content":{"rendered":"<p>The Sega Dreamcast was famously emblazoned with a logo proudly announcing that it was compatible with Windows CE:<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/dreamcast-windows-ce.jpg\" alt=\"\" title=\"Sega Dreamcast - Windows CE logo\" width=\"350\" height=\"258\" class=\"aligncenter size-full wp-image-2916\" srcset=\"https:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/dreamcast-windows-ce.jpg 350w, https:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/dreamcast-windows-ce-300x221.jpg 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><br \/>\n<\/center><\/p>\n<p>It&#8217;s quite confusing. The console certainly doesn&#8217;t boot into some version of Windows to launch games. Apparently, there was a special version of CE developed for the DC and game companies had the option to leverage it. I do recall that some game startup screens would similarly advertise Windows CE.<\/p>\n<p>Once the homebrew community got ahold of the device, the sky was the limit. I think NetBSD was the first alternative OS to <a href=\"http:\/\/www.netbsd.org\/ports\/dreamcast\/\">support the Dreamcast<\/a>. Meanwhile, I have recollections of <a href=\"http:\/\/www.dcevolution.net\/index.php?id=dc_linux\">DC Linux<\/a> and <a href=\"http:\/\/linuxdc.sourceforge.net\/\">LinuxDC<\/a> projects along with more generic <a href=\"http:\/\/linux-sh.org\/cgi-bin\/moin.cgi\">Linux-SH<\/a> and <a href=\"http:\/\/sh-linux.org\/\">SH-Linux<\/a> projects.<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/dc-linux-cdr.jpg\" alt=\"\" title=\"CD-R with DC Linux 2.4.5\" width=\"350\" height=\"276\" class=\"aligncenter size-full wp-image-2917\" srcset=\"https:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/dc-linux-cdr.jpg 350w, https:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/dc-linux-cdr-300x236.jpg 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><br \/>\n<\/center><\/p>\n<p><a href=\"http:\/\/www.dcevolution.net\/index.php?id=dc_linux\">DC Evolution hosts a disc image available for download with an unofficial version of DC Linux<\/a>, assembled by one Adrian O&#8217;Grady. I figured out how to burn the disc (burning DC discs is a blog post of its own) and got it working in the console.<\/p>\n<p>It&#8217;s possible to log in directly via the physical keyboard or through a serial terminal provided that you have a coder&#8217;s cable. That reminds me&#8211; my local Fry&#8217;s had a selection of USB-to-serial cables. I think this is another area that is sufficiently commoditized that just about any cable ought to work with Linux out of the box. Or maybe I&#8217;m just extrapolating from the experience of having the cheapest cable in the selection (made by io connect) plug and play with Linux.<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/io-connect-usb-to-serial.jpg\" alt=\"\" title=\"io connect USB to serial converter\" width=\"350\" height=\"237\" class=\"aligncenter size-full wp-image-2920\" srcset=\"https:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/io-connect-usb-to-serial.jpg 350w, https:\/\/multimedia.cx\/eggs\/wp-content\/uploads\/2010\/09\/io-connect-usb-to-serial-300x203.jpg 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><br \/>\n<\/center><\/p>\n<p>Look! No messy converter box in the middle as in <a href=\"http:\/\/multimedia.cx\/eggs\/dreamcast-anniversary-programming\/\">the Belkin case<\/a>. The reason I went with this cable is that the packaging claimed it was capable of up to 500 Kbits\/sec. Most of the cables advertised a max of 115200 bps. I distinctly recall being able to use the DC coder&#8217;s cable at 230400 bps a long time ago. Alas, 115200 seems to be the speed limit, even with this new USB cable.<\/p>\n<p>Anyway, the distribution is based on a 2.4.5 kernel circa 2001. I tried to make PPP work over the serial cable but the kernel doesn&#8217;t have support. If you&#8217;re interested, here is some basic information about the machine from Linux&#8217;s perspective, gleaned from some simple commands. This helps remind us of a simpler time when Linux was able to run comfortably on a computer with 16 MB of RAM.<\/p>\n<pre>\r\nDebian GNU\/Linux testing\/unstable dreamcast ttsc\/1\r\n\r\ndreamcast login: root\r\nLinux dreamcast 2.4.5 #27 Thu May 31 07:06:51 JST 2001 sh4 unknown\r\n\r\nMost of the programs included with the Debian GNU\/Linux system are\r\nfreely redistributable; the exact distribution terms for each program\r\nare described in the individual files in \/usr\/share\/doc\/*\/copyright\r\n\r\nDebian GNU\/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\r\npermitted by applicable law.\r\n\r\ndreamcast:~# uname -a\r\nLinux dreamcast 2.4.5 #27 Thu May 31 07:06:51 JST 2001 sh4 unknown\r\n\r\ndreamcast:~# cat \/proc\/cpuinfo <!--more-->\r\ncpu family      : SH-4\r\ncache size      : 8K-byte\/16K-byte\r\nbogomips        : 199.47\r\n\r\nMachine: dreamcast\r\nCPU clock: 200.00MHz\r\nBus clock: 100.00MHz\r\nPeripheral module clock: 50.00MHz\r\n\r\ndreamcast:~# top -b\r\n\r\n\r\n 09:14:54 up 14 min,  1 user,  load average: 0.04, 0.03, 0.03\r\n15 processes: 14 sleeping, 1 running, 0 zombie, 0 stopped\r\nCPU states:   1.1% user,   5.8% system,   0.0% nice,  93.1% idle\r\nMem:     14616K total,    11316K used,     3300K free,     2296K buffers\r\nSwap:        0K total,        0K used,        0K free,     5556K cached\r\n\r\n  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND\r\n  219 root      18   0  1072 1068   868 R     5.6  7.3   0:00 top\r\n    1 root       9   0   596  596   512 S     0.0  4.0   0:01 init\r\n    2 root       9   0     0    0     0 SW    0.0  0.0   0:00 keventd\r\n    3 root       9   0     0    0     0 SW    0.0  0.0   0:00 kswapd\r\n    4 root       9   0     0    0     0 SW    0.0  0.0   0:00 kreclaimd\r\n    5 root       9   0     0    0     0 SW    0.0  0.0   0:00 bdflush\r\n    6 root       9   0     0    0     0 SW    0.0  0.0   0:00 kupdated\r\n    7 root       9   0     0    0     0 SW    0.0  0.0   0:00 kmapled\r\n   39 root       9   0   900  900   668 S     0.0  6.1   0:00 devfsd\r\n   91 root       8   0   652  652   556 S     0.0  4.4   0:00 pump\r\n   96 daemon     9   0   524  524   420 S     0.0  3.5   0:00 portmap\r\n  149 root       9   0   944  944   796 S     0.0  6.4   0:00 syslogd\r\n  152 root       9   0   604  604   456 S     0.0  4.1   0:00 klogd\r\n  187 root       9   0   540  540   456 S     0.0  3.6   0:00 getty\r\n  201 root       9   0  1380 1376  1112 S     0.0  9.4   0:01 bash\r\n<\/pre>\n<p><em>Note that at this point I had shutdown both gpm and inetd. The rest of the processes, save for bash, are default. The above stats only report about 14 MB of RAM; where are the other 2 MB?<\/em><\/p>\n<pre>\r\ndreamcast:~# df -h\r\nFilesystem            Size  Used Avail Use% Mounted on\r\n\/dev\/rd\/1             2.0M  560k  1.4M  28% \/\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Running an ancient version of the Linux operating system on the Sega Dreamcast<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[221],"tags":[],"class_list":["post-2915","post","type-post","status-publish","format-standard","hentry","category-sega-dreamcast"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/2915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=2915"}],"version-history":[{"count":6,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/2915\/revisions"}],"predecessor-version":[{"id":2963,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/2915\/revisions\/2963"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=2915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=2915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=2915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}