<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Unix &amp;mdash; cos</title>
    <link>https://apintandaparma.club/cos/tag:Unix</link>
    <description></description>
    <pubDate>Wed, 15 Apr 2026 08:03:31 +0000</pubDate>
    <item>
      <title>Falling down a rabbit hole of nostalgia, episode 1 - SunOS 4</title>
      <link>https://apintandaparma.club/cos/falling-down-a-rabbit-hole-of-nostalgia-episode-1-sunos-4</link>
      <description>&lt;![CDATA[(or: running SunOS 4 on an emulated SPARCstation in 2025 with QEMU 10.1.)&#xA;&#xA;A colleague from one of my previous jobs recently wrote about running VMS on an emulated VAX 11/780. I figured I&#39;d give it a go, as I&#39;d passed up the opportunity early in my career to spend more time with VMS (twice, in fact). I didn&#39;t get very far, but something caught my eye at the end of his blog post - he&#39;d also been playing with emulating a SPARCstation. Ooh. That thoroughly nerd-sniped me for the weekend.&#xA;&#xA;Why?&#xA;&#xA;At my first job, in the early 1990s, I found myself working on a SPARCstation 10 writing software in C for a project our company did with a local telco. It was my first time using SunOS, as my university was a DEC shop. Over time, I took it upon myself to maintain the fleet of SPARCstations and its surrounding network - keeping the software on them in sync, introducing new, useful open source software, and solving problems our developers had while using them. I just couldn&#39;t help myself - it needed doing, so I did it. The company eventually noticed, so one day our boss asked me, &#34;How about you focus on just doing this? We&#39;ll call you a System Administrator.&#34; &#xA;&#xA;So, then - SunOS has a very special place in my heart as the first Unix I used for work. Running actual old hardware is something I don&#39;t have enough room for, though. So emulation it is!&#xA;&#xA;Aren&#39;t there already instructions to do this?&#xA;&#xA;Blog posts about stuff like this seem to age like milk - inevitably different things go wrong as the years progress and emulators get tweaked. There was nothing out there that just worked in this, the year of 2025.&#xA;&#xA;Here&#39;s what I&#39;ve discovered in order to get it working, then, building on posts from nonspecialist and a few others.&#xA;&#xA;While my final instructions focus on macOS, I&#39;d also experimented with running QEMU on Ubuntu 24.04 and 25.10 VMs, just in case it helped. You should be fine with them too, keeping in mind the tweaks around display and network connectivity.&#xA;&#xA;Getting to the initial installation&#xA;&#xA;John Millikin&#39;s post is probably the most useful one I&#39;ve found across the internet. Among other things, it reminds us about keeping the RAM sized under 100MB unless you can be bothered tweaking the size of the swap partition on disk. 96MB of RAM works fine, for instance.&#xA;&#xA;I had trouble using QEMU&#39;s default OpenBIOS to try and boot off the CD image - it said No valid state has been set by load or init-program.&#xA;&#xA;nonspecialist&#39;s second post covers getting it to use the Sun ROM. I also had that emotional feeling of seeing that font and that Sun logo popping up on a white screen. Woah.&#xA;&#xA;Since 2023, though, something has changed in QEMU and you won&#39;t see that &#34;Wrong packet length&#34; error in his screenshots - instead, you&#39;ll see a &#34;Timeout waiting for ARP/RARP packet&#34; message repeating.&#xA;&#xA;If you&#39;ve used Sun hardware in the past, you&#39;ll remember being able to press Stop-A on the keyboard to get into the boot monitor. How do you do that in QEMU? Well, if you&#39;ve connected the monitor somewhere, you can!&#xA;&#xA;I added -monitor stdio to the end of my sprawling qemu command (see below). That lets me type a command like this in the terminal / shell (pty if you want to get technical) where I ran the qemu command:&#xA;&#xA;QEMU 10.1.0 monitor - type &#39;help&#39; for more information&#xA;(qemu) sendkey stop-a&#xA;&#xA;From here, a boot cdrom at the Sun OpenBoot PROM (OBP) prompt worked, enabling me to:&#xA;&#xA;boot from the CD image to install the miniroot&#xA;boot from the miniroot and install the OS from the CD image by running suninstall &#xA;&#xA;Steps to follow on macOS to get this far&#xA;&#xA;Assuming you&#39;ve installed Homebrew on your Mac, you can do this:&#xA;&#xA;brew install qemu&#xA;fetch the SPARCstation 5 ROM image and SunOS 4.1.4 CD image - yep, SunOS 4 was retrospectively named &#34;Solaris 1&#34;, and Solaris 1.1.2 / SunOS 4.1.4 was the final release&#xA;qemu-img create -f qcow2 disk1.qcow2 2G to make the disk image&#xA;put the script just below into a file called run-sparc5.sh&#xA;   if you&#39;re not on macOS, you&#39;ll need to customise the -display and -nic sections&#xA;boot the VM by running ./run-sparc5.sh - it should then say QEMU 10.1.2 monitor - type &#39;help&#39; for more information and the cursor should be next to (qemu)&#xA;when you see &#34;Timeout waiting for ARP/RARP packet&#34;, enter sendkey stop-a in that same window where you&#39;d typed ./run-sparc5.sh (ie. just next to (qemu))&#xA;pop over to the VM&#39;s window and boot cdrom&#xA;when it reboots, do the same sendkey stop-a but this time boot disk&#xA;you&#39;ll be dropped at a root prompt (starting with a #) where you can type suninstall and follow the prompts to install the OS to the disk&#xA;&#xA;run-sparc5.sh&#xA;&#xA;! /bin/bash&#xA;qemu-system-sparc \&#xA;    -name mysparc5 \&#xA;    -L . -bios ss5.bin \&#xA;    -machine SS-5 \&#xA;    -m 96 \&#xA;    -drive file=disk1.qcow2,if=scsi,bus=0,unit=3,media=disk \&#xA;    -device scsi-cd,channel=0,scsi-id=6,id=cdrom,drive=cdrom,physicalblocksize=512 \&#xA;    -drive file=sunos4.iso,if=none,id=cdrom,media=cdrom,readonly=on \&#xA;    -nic vmnet-bridged,model=lance,mac=52:54:00:11:22:33,ifname=en0 \&#xA;    -vga cg3 \&#xA;    -display cocoa \&#xA;    -monitor stdio&#xA;&#xA;Hiccup number one&#xA;&#xA;At this point, I was excited to boot into the working OS but instead, it only got a little further before QEMU crashed with a Trap 0x29 (Data Access Error) while interrupts disabled, Error state error.&#xA;&#xA;I found some discussion in this issue in the qemu repo which led to a second issue that gave me some further help when someone suggested:&#xA;&#xA;  One thing I remember from using real Sun systems is that if you do a &#34;Stop-A&#34; while it&#39;s trying to boot (from the net, or whatever), you can leave the device environment in a bad state, and you typically had to fix up your NVRAM environment to get the boot device you wanted and issue a &#34;reset&#34; to the PROM monitor and start again.&#xA;&#xA;Making that work, though, needs us to stop it trying to boot off the net when it resets., so that we don&#39;t need to press &#39;Stop-A&#39;. A quick refresher on Sun OpenBoot PROM commands reminded me that I could type this:&#xA;&#xA;setenv auto-boot? false&#xA;reset&#xA;&#xA;It&#39;d then reset the VM, and I could boot disk from there.&#xA;&#xA;Hiccup number two&#xA;&#xA;Reading a bit further down issue 2015 I saw someone say:&#xA;&#xA;  Unfortunately, at this point it&#39;s currently freezing having mounted root, swap, and dump.&#xA;&#xA;which matched what happened to me. Ugh.&#xA;&#xA;sad trombone - it hangs right here after mounting the filesystems&#xA;&#xA;Randomly trying things until they work, part 1&#xA;&#xA;I tried other SPARCstation types - I could get a SPARCstation 20 partially booting if I added -machine SS-20 -cpu TI-SuperSparc-60 and used the appropriate ROM, but it crashed in other ways and I still haven&#39;t got it completely working. I also couldn&#39;t get it to make more than 1 CPU visible, but that&#39;s no big deal - Solaris 2 used multiple CPUs much more effectively, I seem to remember.&#xA;&#xA;Randomly trying things until they work, part 2&#xA;&#xA;At this point, I could&#39;ve gone and built QEMU from source, trying some of the patches mentioned in that repo issue. I was feeling a bit lazy, though, and figured I&#39;d try a few other things before giving up and going that way. One experiment was to swap out the Sun ROM for QRMU&#39;s default OpenBIOS...&#xA;&#xA;...which worked!&#xA;&#xA;The finally-working QEMU script for macOS, then&#xA;&#xA;! /bin/bash&#xA;qemu-system-sparc \&#xA;    -name mysparc5 \&#xA;    -machine SS-5 \&#xA;    -m 96 \&#xA;    -drive file=disk1.qcow2,if=scsi,bus=0,unit=3,media=disk \&#xA;    -device scsi-cd,channel=0,scsi-id=6,id=cdrom,drive=cdrom,physicalblocksize=512 \&#xA;    -drive file=sunos4.iso,if=none,id=cdrom,media=cdrom,readonly=on \&#xA;    -nic vmnet-bridged,model=lance,mac=52:54:00:11:22:33,ifname=en0 \&#xA;    -vga cg3 \&#xA;    -display cocoa \&#xA;    -monitor stdio&#xA;&#xA;ie. I&#39;ve just removed the &#34;roms&#34; line from the one above.&#xA;&#xA;So all of this means that you should:&#xA;&#xA;use the first script (with SPARCstation 5 ROM) for initial installation&#xA;use the second script (without the ROM line) for running it normally&#xA;&#xA;Hurrah!&#xA;&#xA;Ok, so I could boot up, enter boot disk3:a at the OpenBIOS prompt to get into the installed OS, do that final configuration, and make the network work per John Millikin&#39;s post.&#xA;&#xA;I have a weird netmask on my network for historical reasons, so I had to add an entry to /etc/netmasks and configure /etc/defaultrouter.&#xA;&#xA;How do I get files onto it?&#xA;&#xA;You might notice John Millikin&#39;s post talks about compiling recv.c on the VM to get a basic program to receive files over a bare network connection from elsewhere. I was going to use this, but had another thought, about using ancient internet technology that still works today.&#xA;&#xA;I remembered that SunOS 4 has a bunch of network services accessible by default (a security nightmare if you connected it up to the Internet, unexposed!). One of these is FTP, the venerable File Transfer Protocol. Checking /etc/inetd.conf confirmed my memory that an FTP server would, indeed, run on demand.&#xA;&#xA;On my Mac, Homebrew still has lftp available, so I installed that, and could transfer stuff by running lftp -u username host or IP and then put file (or mput file to send a few at once).&#xA;&#xA;Netscape works per John&#39;s post, and when looking for stuff earlier in my adventures, I&#39;d found a copy of Lucid Emacs(!) on archive.org, which seems to run.&#xA;&#xA;a working desktop!&#xA;&#xA;Historical artefacts&#xA;&#xA;What was truly useful, though, was suddenly remembering that I still had these books on my bookshelf - a few issues of Rich Morin&#39;s Prime Time Freeware for Unix from the mid-90s. These were from the days when people had slow, or even only occasional internet access. Having local copies of software was super useful. The CDs still work, and I was able to copy the source for two pieces of software  - gzip and zsh -  that were essential way back then, onto my VM and compile them.&#xA;&#xA;three Prime Time Freeware books with CDs&#xA;&#xA;What&#39;s next?&#xA;&#xA;Well. I&#39;ll probably:&#xA;&#xA;dig up a 3-button mouse, as Sun&#39;s OPEN LOOK Window environment really just doesn&#39;t work without one&#xA;compile a few more memories that I can find on the PTF CDs - olvwm for one, and probably a heritage version of GNU Emacs - maybe 18.59 for real nostalgia&#xA;make it look more colourful!&#xA;see how much semi day-to-day stuff I can do from it&#xA;wonder if I can make it properly boot automatically* (ideas welcome!)&#xA;&#xA;...and what else_ is next?&#xA;&#xA;Beyond getting back to that VMS emulation, I&#39;m also wondering how easy it is to emulate a DECstation, so I can relive my student days? Definitely tasks for some other time, though.&#xA;&#xA;Final thoughts&#xA;&#xA;SunOS existed in a time before journaling filesystems, so make sure you shut the VM down properly (via a su -c &#39;shutdown -h now&#39;) rather than just switching it off, or you&#39;ll find yourself needing to learn how fsck works.&#xA;&#xA;#SunOS #Unix #Emulation #RetroComputing #SPARCstation&#xA;&#xA;hr&#xD;&#xA;&#xD;&#xA;p class=&#34;sig&#34;This was a post from a href=&#34;https://andrew.j.cosgriff.name/&#34;Cos/a./p&#xD;&#xA;&#xD;&#xA;p class=&#34;sig&#34;You can follow this blog on the Fediverse at code@cos@apintandaparma.club/code or a href=&#34;https://apintandaparma.club/cos/feed&#34;subscribe in your RSS reader/a./p&#xD;&#xA;&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>(or: <em>running SunOS 4 on an emulated SPARCstation in 2025 with QEMU 10.1</em>.)</p>

<p>A colleague from one of my previous jobs recently wrote about <a href="https://write.as/nonspecialist/running-vms-4-4-on-an-emulated-vax-11-780" rel="nofollow">running VMS on an emulated VAX 11/780</a>. I figured I&#39;d give it a go, as I&#39;d passed up the opportunity early in my career to spend more time with VMS (twice, in fact). I didn&#39;t get very far, but something caught my eye at the end of his blog post – <a href="https://write.as/nonspecialist/an-adventure-into-sparc" rel="nofollow">he&#39;d also been playing with emulating a SPARCstation</a>. <em>Ooh</em>. That thoroughly nerd-sniped me for the weekend.</p>

<h1 id="why">Why?</h1>

<p>At my first job, in the early 1990s, I found myself working on a <a href="https://en.wikipedia.org/wiki/SPARCstation_10" rel="nofollow">SPARCstation 10</a> writing software in C for a project our company did with a local telco. It was my first time using SunOS, as my university was a DEC shop. Over time, I took it upon myself to maintain the fleet of SPARCstations and its surrounding network – keeping the software on them in sync, introducing new, useful open source software, and solving problems our developers had while using them. I just couldn&#39;t help myself – it needed doing, so I did it. The company eventually noticed, so one day our boss asked me, “How about you focus on just doing this? We&#39;ll call you a System Administrator.”</p>

<p>So, then – SunOS has a very special place in my heart as the first Unix I used for work. Running <em>actual old hardware</em> is something I don&#39;t have enough room for, though. So emulation it is!</p>

<h1 id="aren-t-there-already-instructions-to-do-this">Aren&#39;t there already instructions to do this?</h1>

<p>Blog posts about stuff like this seem to age like milk – inevitably different things go wrong as the years progress and emulators get tweaked. There was nothing out there that <em>just worked</em> in this, the year of 2025.</p>

<p>Here&#39;s what I&#39;ve discovered in order to get it working, then, building on posts from <code>nonspecialist</code> and a few others.</p>

<p>While my final instructions focus on macOS, I&#39;d also experimented with running QEMU on Ubuntu 24.04 and 25.10 VMs, just in case it helped. You should be fine with them too, keeping in mind the tweaks around display and network connectivity.</p>

<h1 id="getting-to-the-initial-installation">Getting to the initial installation</h1>

<p><a href="https://john-millikin.com/running-sunos-4-in-qemu-sparc" rel="nofollow">John Millikin&#39;s post</a> is probably the most useful one I&#39;ve found across the internet. Among other things, it reminds us about keeping the RAM sized under 100MB unless you can be bothered tweaking the size of the swap partition on disk. 96MB of RAM works fine, for instance.</p>

<p>I had trouble using QEMU&#39;s default OpenBIOS to try and boot off the CD image – it said <code>No valid state has been set by load or init-program</code>.</p>

<p><code>nonspecialist</code>&#39;s <a href="https://write.as/nonspecialist/an-adventure-into-sparc-part-2" rel="nofollow">second post</a> covers getting it to use the Sun ROM. I also had that emotional feeling of seeing <em>that font</em> and <em>that Sun logo</em> popping up on a white screen. Woah.</p>

<p>Since 2023, though, something has changed in QEMU and you won&#39;t see that “Wrong packet length” error in his screenshots – instead, you&#39;ll see a “Timeout waiting for ARP/RARP packet” message repeating.</p>

<p>If you&#39;ve used Sun hardware in the past, you&#39;ll remember being able to press Stop-A on the keyboard to get into the boot monitor. How do you do that in QEMU? Well, if you&#39;ve connected the monitor somewhere, you can!</p>

<p>I added <code>-monitor stdio</code> to the end of my sprawling <code>qemu</code> command (see below). That lets me type a command like this in the terminal / shell (<code>pty</code> if you want to get technical) where I ran the <code>qemu</code> command:</p>

<pre><code>QEMU 10.1.0 monitor - type &#39;help&#39; for more information
(qemu) sendkey stop-a
</code></pre>

<p>From here, a <code>boot cdrom</code> at the Sun OpenBoot PROM (OBP) prompt worked, enabling me to:</p>
<ul><li>boot from the CD image to install the miniroot</li>
<li>boot from the miniroot and install the OS from the CD image by running <code>suninstall</code></li></ul>

<h1 id="steps-to-follow-on-macos-to-get-this-far">Steps to follow on macOS to get this far</h1>

<p>Assuming you&#39;ve installed <a href="https://brew.sh/" rel="nofollow">Homebrew</a> on your Mac, you can do this:</p>
<ul><li><code>brew install qemu</code></li>
<li>fetch the <a href="http://vtda.org/bits/ROMs/Sun/ss5.bin" rel="nofollow">SPARCstation 5 ROM image</a> and <a href="https://archive.org/details/solaris112sparc" rel="nofollow">SunOS 4.1.4 CD image</a> – yep, SunOS 4 was retrospectively named “Solaris 1”, and Solaris 1.1.2 / SunOS 4.1.4 was the final release</li>
<li><code>qemu-img create -f qcow2 disk1.qcow2 2G</code> to make the disk image</li>
<li>put the script just below into a file called <code>run-sparc5.sh</code>
<ul><li>if you&#39;re <em>not</em> on macOS, you&#39;ll need to customise the <code>-display</code> and <code>-nic</code> sections</li></ul></li>
<li>boot the VM by running <code>./run-sparc5.sh</code> – it should then say <code>QEMU 10.1.2 monitor - type &#39;help&#39; for more information</code> and the cursor should be next to <code>(qemu)</code></li>
<li>when you see “Timeout waiting for ARP/RARP packet”, enter <code>sendkey stop-a</code> in that same window where you&#39;d typed <code>./run-sparc5.sh</code> (ie. just next to <code>(qemu)</code>)</li>
<li>pop over to the VM&#39;s window and <code>boot cdrom</code></li>
<li>when it reboots, do the same <code>sendkey stop-a</code> but this time <code>boot disk</code></li>
<li>you&#39;ll be dropped at a <code>root</code> prompt (starting with a <code>#</code>) where you can type <code>suninstall</code> and follow the prompts to install the OS to the disk</li></ul>

<h2 id="run-sparc5-sh">run-sparc5.sh</h2>

<pre><code>#! /bin/bash
qemu-system-sparc \
    -name mysparc5 \
    -L . -bios ss5.bin \
    -machine SS-5 \
    -m 96 \
    -drive file=disk1.qcow2,if=scsi,bus=0,unit=3,media=disk \
    -device scsi-cd,channel=0,scsi-id=6,id=cdrom,drive=cdrom,physical_block_size=512 \
    -drive file=sunos4.iso,if=none,id=cdrom,media=cdrom,readonly=on \
    -nic vmnet-bridged,model=lance,mac=52:54:00:11:22:33,ifname=en0 \
    -vga cg3 \
    -display cocoa \
    -monitor stdio
</code></pre>

<h1 id="hiccup-number-one">Hiccup number one</h1>

<p>At this point, I was excited to boot into the working OS but instead, it only got a little further before QEMU crashed with a <code>Trap 0x29 (Data Access Error) while interrupts disabled, Error state</code> error.</p>

<p>I found some discussion in <a href="https://gitlab.com/qemu-project/qemu/-/issues/2723" rel="nofollow">this issue in the qemu repo</a> which led to a <a href="https://gitlab.com/qemu-project/qemu/-/issues/2015" rel="nofollow"><em>second</em> issue</a> that gave me some further help when someone suggested:</p>

<blockquote><p>One thing I remember from using real Sun systems is that if you do a “Stop-A” while it&#39;s trying to boot (from the net, or whatever), you can leave the device environment in a bad state, and you typically had to fix up your NVRAM environment to get the boot device you wanted and issue a “reset” to the PROM monitor and start again.</p></blockquote>

<p>Making that work, though, needs us to stop it trying to boot off the net when it resets., so that we don&#39;t need to press &#39;Stop-A&#39;. A <a href="https://adminschoice.com/sun-openboot-parameters-and-commands/" rel="nofollow">quick refresher on Sun OpenBoot PROM commands</a> reminded me that I could type this:</p>

<pre><code>setenv auto-boot? false
reset
</code></pre>

<p>It&#39;d then reset the VM, and I could <code>boot disk</code> from there.</p>

<h1 id="hiccup-number-two">Hiccup number two</h1>

<p>Reading a bit further down <a href="https://gitlab.com/qemu-project/qemu/-/issues/2015" rel="nofollow">issue 2015</a> I saw someone say:</p>

<blockquote><p>Unfortunately, at this point it&#39;s currently freezing having mounted root, swap, and dump.</p></blockquote>

<p>which matched what happened to me. Ugh.</p>

<p><img src="https://ajc.me/i/sunos4-hang-after-mount.jpg" alt="sad trombone - it hangs right here after mounting the filesystems"></p>

<h1 id="randomly-trying-things-until-they-work-part-1">Randomly trying things until they work, part 1</h1>

<p>I tried other SPARCstation types – I could get a SPARCstation 20 partially booting if I added <code>-machine SS-20 -cpu TI-SuperSparc-60</code> and used the appropriate ROM, but it crashed in other ways and I still haven&#39;t got it completely working. I also couldn&#39;t get it to make more than 1 CPU visible, but that&#39;s no big deal – Solaris 2 used multiple CPUs <em>much</em> more effectively, I seem to remember.</p>

<h1 id="randomly-trying-things-until-they-work-part-2">Randomly trying things until they work, part 2</h1>

<p>At this point, I could&#39;ve gone and built QEMU from source, trying some of the patches mentioned in that repo issue. I was feeling a bit lazy, though, and figured I&#39;d try a few other things before giving up and going that way. One experiment was to swap out the Sun ROM for QRMU&#39;s default OpenBIOS...</p>

<p>...which worked!</p>

<h1 id="the-finally-working-qemu-script-for-macos-then">The finally-working QEMU script for macOS, then</h1>

<pre><code>#! /bin/bash
qemu-system-sparc \
    -name mysparc5 \
    -machine SS-5 \
    -m 96 \
    -drive file=disk1.qcow2,if=scsi,bus=0,unit=3,media=disk \
    -device scsi-cd,channel=0,scsi-id=6,id=cdrom,drive=cdrom,physical_block_size=512 \
    -drive file=sunos4.iso,if=none,id=cdrom,media=cdrom,readonly=on \
    -nic vmnet-bridged,model=lance,mac=52:54:00:11:22:33,ifname=en0 \
    -vga cg3 \
    -display cocoa \
    -monitor stdio
</code></pre>

<p>ie. I&#39;ve just removed the “roms” line from the one above.</p>

<p>So all of this means that you should:</p>
<ul><li>use the first script (with SPARCstation 5 ROM) for initial installation</li>
<li>use the second script (without the ROM line) for running it normally</li></ul>

<h1 id="hurrah">Hurrah!</h1>

<p>Ok, so I could boot up, enter <code>boot disk3:a</code> at the OpenBIOS prompt to get into the installed OS, do that final configuration, and make the network work per John Millikin&#39;s post.</p>

<p>I have a weird netmask on my network for historical reasons, so I had to add an entry to <code>/etc/netmasks</code> and configure <code>/etc/defaultrouter</code>.</p>

<h1 id="how-do-i-get-files-onto-it">How do I get files onto it?</h1>

<p>You might notice John Millikin&#39;s post talks about compiling <code>recv.c</code> on the VM to get a basic program to receive files over a bare network connection from elsewhere. I was going to use this, but had another thought, about using <em>ancient internet technology</em> that still works today.</p>

<p>I remembered that SunOS 4 has a bunch of network services accessible by default (a security nightmare if you connected it up to the Internet, unexposed!). One of these is FTP, the venerable File Transfer Protocol. Checking <code>/etc/inetd.conf</code> confirmed my memory that an FTP server would, indeed, run on demand.</p>

<p>On my Mac, Homebrew still has <code>lftp</code> available, so I installed that, and could transfer stuff by running <code>lftp -u username _host or IP_</code> and then <code>put file</code> (or <code>mput file*</code> to send a few at once).</p>

<p>Netscape works per John&#39;s post, and when looking for stuff earlier in my adventures, I&#39;d found <a href="https://archive.org/details/lucid_emacs_19.5_cdrom" rel="nofollow">a copy of Lucid Emacs(!) on archive.org</a>, which seems to run.</p>

<p><img src="https://ajc.me/i/sunos4-working-desktop.jpg" alt="a working desktop!"></p>

<h1 id="historical-artefacts">Historical artefacts</h1>

<p>What was truly useful, though, was suddenly remembering that I still had these books on my bookshelf – a few issues of Rich Morin&#39;s <em>Prime Time Freeware for Unix</em> from the mid-90s. These were from the days when people had slow, or even only occasional internet access. Having local copies of software was super useful. The CDs still work, and I was able to copy the source for two pieces of software  – <code>gzip</code> and <code>zsh</code> –  that were essential way back then, onto my VM and compile them.</p>

<p><img src="https://ajc.me/i/sunos4-ptf-1k.jpg" alt="three Prime Time Freeware books with CDs"></p>

<h1 id="what-s-next">What&#39;s next?</h1>

<p>Well. I&#39;ll probably:</p>
<ul><li>dig up a 3-button mouse, as Sun&#39;s <a href="https://en.wikipedia.org/wiki/OPEN_LOOK" rel="nofollow">OPEN LOOK</a> Window environment really just doesn&#39;t work without one</li>
<li>compile a few more memories that I can find on the PTF CDs – <code>olvwm</code> for one, and probably a heritage version of GNU Emacs – maybe 18.59 for real nostalgia</li>
<li>make it look more colourful!</li>
<li>see how much semi day-to-day stuff I can do from it</li>
<li><em>wonder if I can make it properly boot automatically</em> (ideas welcome!)</li></ul>

<h1 id="and-what-else-is-next">...and what <em>else</em> is next?</h1>

<p>Beyond getting back to that VMS emulation, I&#39;m also wondering how easy it is to emulate a <a href="https://en.wikipedia.org/wiki/DECstation" rel="nofollow">DECstation</a>, so I can relive my student days? Definitely tasks for some other time, though.</p>

<h1 id="final-thoughts">Final thoughts</h1>

<p>SunOS existed in a time before journaling filesystems, so make sure you shut the VM down properly (via a <code>su -c &#39;shutdown -h now&#39;</code>) rather than just switching it off, or you&#39;ll find yourself needing to learn how <code>fsck</code> works.</p>

<p><a href="/cos/tag:SunOS" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">SunOS</span></a> <a href="/cos/tag:Unix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Unix</span></a> <a href="/cos/tag:Emulation" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Emulation</span></a> <a href="/cos/tag:RetroComputing" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">RetroComputing</span></a> <a href="/cos/tag:SPARCstation" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">SPARCstation</span></a></p>

<hr>

<p class="sig">This was a post from <a href="https://andrew.j.cosgriff.name/" rel="nofollow">Cos</a>.</p>

<p class="sig">You can follow this blog on the Fediverse at <code><a href="https://apintandaparma.club/@/cos@apintandaparma.club" class="u-url mention" rel="nofollow">@<span>cos@apintandaparma.club</span></a></code> or <a href="https://apintandaparma.club/cos/feed" rel="nofollow">subscribe in your RSS reader</a>.</p>
]]></content:encoded>
      <guid>https://apintandaparma.club/cos/falling-down-a-rabbit-hole-of-nostalgia-episode-1-sunos-4</guid>
      <pubDate>Sun, 23 Nov 2025 06:35:18 +0000</pubDate>
    </item>
    <item>
      <title>g&#39;day</title>
      <link>https://apintandaparma.club/cos/gday</link>
      <description>&lt;![CDATA[Hi! I’m Cos, and I run this service. My pronouns are he/him and I live in #Naarm / #Melbourne in Australia with my wife and cats.&#xA;&#xA;I’ve been hanging around the Internet since the days of UUCP connections. The distributed / less-centralized nature of those times is something that still appeals to me, which is why I’m still here #selfhosting and hosting for others - I’ve loved empowering friends to get their thoughts up and into the Internet so that it’s not just the same old nerds like me in here.&#xA;&#xA;I’m trying out WriteFreely as a way to better aggregate my writing and some other information. This post serves as both an #introduction and a test.&#xA;&#xA;!--more--&#xA;&#xA;what do I like to do?&#xA;&#xA;A significant part of my brain seems to be filled with #music - lots of it. I used to try and blog about it long ago, but now I&#39;d rather just keep listening than finding ever-more convoluted ways to describe it.&#xA;&#xA;I love #walking, especially as a way to explore #FilmPhotography (or digital #photography). I’m not scared of #PublicTransport and quite like #trains.&#xA;&#xA;My photography goes way back on Flickr, a little less further back on Instagram and I&#39;ve more recently been experimenting with Pixelfed - see @cos@pixelfed.social or @cos@pixelfed.au. Either way, I try to find beauty in the everyday with my images. I&#39;m particularly fascinated by blankness.&#xA;&#xA;a data-flickr-embed=&#34;true&#34; data-header=&#34;true&#34; data-footer=&#34;true&#34; href=&#34;https://www.flickr.com/photos/lonelyradio/52518231471/in/dateposted/&#34; title=&#34;needing direction&#34;img src=&#34;https://live.staticflickr.com/65535/52518231471bfb8fcbd6dc.jpg&#34; width=&#34;800&#34; height=&#34;530&#34; alt=&#34;needing direction&#34;/ascript async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;/script&#xA;&#xA;what do I care about?&#xA;&#xA;The world&#39;s a better place when we don&#39;t feel we need to hide who we really are. To me, this means (among other things):&#xA;&#xA;Trans rights are human rights.&#xA;Black lives matter.&#xA;Human beings are not &#34;illegal&#34;. &#xA;Love is love.&#xA;People should have control over their own bodies.&#xA;Science is real.&#xA;Kindness is everything.&#xA;&#xA;where can I be found on social media?&#xA;&#xA;These days, the Fediverse is where it&#39;s at - you can find me at @cos@aus.sociala rel=&#34;me&#34; href=&#34;https://aus.social/@cos&#34;./a&#xA;&#xA;what do I do for work?&#xA;&#xA;I spent a long time as a systems administrator, network engineer, systems engineer and otherwise, but these days I focus on the people aspects of #DevOps, #SRE or #PlatformEngineering by managing teams, growing people, and helping everyone understand that Software’s Not Just For Christmas. If you want to know more, you can read my LinkedIn Profile.&#xA;&#xA;a data-flickr-embed=&#34;true&#34; data-header=&#34;true&#34; data-footer=&#34;true&#34; href=&#34;https://www.flickr.com/photos/lonelyradio/50373335293/in/photolist-u8ZG4-xqkYs-2jKjvAV-keeuw-3bj1N-4ZrzsF-65gREq-6one8U-6y7Nhg&#34; title=&#34;tomorrow&#34;img src=&#34;https://live.staticflickr.com/65535/503733352938fbff5ab84z.jpg&#34; width=&#34;640&#34; height=&#34;640&#34; alt=&#34;tomorrow&#34;/ascript async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;/script&#xA;&#xA;what&#39;s some other tech-related stuff that I&#39;m interested in?&#xA;&#xA;#emacs is not a dirty word. Given my change of work focus, I’d guess that 98% of my time in it nowadays is spent using #orgmode to keep notes on what’s going on at work.&#xA;&#xA;Once upon a time, I helped some friends start a #Linux User Group called LUV. It&#39;s been a long time since I was involved, but I&#39;m glad that it kept going for all these years - plenty of other people put in a lot of work to make it so, and more power to them! Despite that love for Linux, I&#39;ve enthusiastically used other #Unix / Unix-like operating systems over the years too, and happily use a Mac desktop these days - it&#39;s all ok by me.&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>Hi! I’m Cos, and I run <a href="/about" rel="nofollow">this service</a>. My pronouns are he/him and I live in <a href="/cos/tag:Naarm" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Naarm</span></a> / <a href="/cos/tag:Melbourne" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Melbourne</span></a> in Australia with my wife and cats.</p>

<p>I’ve been hanging around the Internet since the days of UUCP connections. The distributed / less-centralized nature of those times is something that still appeals to me, which is why I’m still here <a href="/cos/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</span></a> and hosting for others – I’ve loved empowering friends to get <em>their</em> thoughts up and into the Internet so that it’s not just the same old nerds like me in here.</p>

<p>I’m trying out <a href="https://writefreely.org/" rel="nofollow">WriteFreely</a> as a way to better aggregate my writing and some other information. This post serves as both an <a href="/cos/tag:introduction" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">introduction</span></a> and a test.</p>



<h2 id="what-do-i-like-to-do">what do I like to do?</h2>

<p>A significant part of my brain seems to be filled with <a href="/cos/tag:music" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">music</span></a> – <a href="https://www.last.fm/user/ajcos" rel="nofollow">lots of it</a>. I used to try and blog about it long ago, but now I&#39;d rather just keep listening than finding ever-more convoluted ways to describe it.</p>

<p>I love <a href="/cos/tag:walking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">walking</span></a>, especially as a way to explore <a href="/cos/tag:FilmPhotography" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">FilmPhotography</span></a> (or digital <a href="/cos/tag:photography" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">photography</span></a>). I’m not scared of <a href="/cos/tag:PublicTransport" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">PublicTransport</span></a> and quite like <a href="/cos/tag:trains" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">trains</span></a>.</p>

<p>My photography goes <em>way back</em> <a href="https://flickr.com/photos/lonelyradio/" rel="nofollow">on Flickr</a>, a little less further back <a href="https://instagram.com/cos" rel="nofollow">on Instagram</a> and I&#39;ve more recently been experimenting with Pixelfed – see <a href="https://apintandaparma.club/@/cos@pixelfed.social" class="u-url mention" rel="nofollow">@<span>cos@pixelfed.social</span></a> or <a href="https://apintandaparma.club/@/cos@pixelfed.au" class="u-url mention" rel="nofollow">@<span>cos@pixelfed.au</span></a>. Either way, I try to find beauty in the everyday with my images. I&#39;m particularly fascinated by <a href="https://apintandaparma.club/cos/the-blank-realm" rel="nofollow">blankness</a>.</p>

<p><a href="https://www.flickr.com/photos/lonelyradio/52518231471/in/dateposted/" title="needing direction" rel="nofollow"><img src="https://live.staticflickr.com/65535/52518231471_bfb8fcbd6d_c.jpg" width="800" height="530" alt="needing direction"></a></p>

<h2 id="what-do-i-care-about">what do I care about?</h2>

<p>The world&#39;s a better place when we don&#39;t feel we need to hide who we really are. To me, this means (among other things):</p>
<ul><li>Trans rights are human rights.</li>
<li>Black lives matter.</li>
<li>Human beings are not “illegal”.</li>
<li>Love is love.</li>
<li>People should have control over their own bodies.</li>
<li>Science is real.</li>
<li>Kindness is everything.</li></ul>

<h2 id="where-can-i-be-found-on-social-media">where can I be found on social media?</h2>

<p>These days, the Fediverse is where it&#39;s at – you can find me at <a href="https://apintandaparma.club/@/cos@aus.social" class="u-url mention" rel="nofollow">@<span>cos@aus.social</span></a><a href="https://aus.social/@cos" rel="nofollow">.</a></p>

<h2 id="what-do-i-do-for-work">what do I do for work?</h2>

<p>I spent a long time as a systems administrator, network engineer, systems engineer and otherwise, but these days I focus on the people aspects of <a href="/cos/tag:DevOps" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">DevOps</span></a>, <a href="/cos/tag:SRE" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">SRE</span></a> or <a href="/cos/tag:PlatformEngineering" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">PlatformEngineering</span></a> by managing teams, growing people, and helping everyone understand that Software’s Not Just For Christmas. If you want to know more, you can read my <a href="https://www.linkedin.com/in/andrewjcosgriff/" rel="nofollow">LinkedIn Profile</a>.</p>

<p><a href="https://www.flickr.com/photos/lonelyradio/50373335293/in/photolist-u8ZG4-xqkYs-2jKjvAV-keeuw-3bj1N-4ZrzsF-65gREq-6one8U-6y7Nhg" title="tomorrow" rel="nofollow"><img src="https://live.staticflickr.com/65535/50373335293_8fbff5ab84_z.jpg" width="640" height="640" alt="tomorrow"></a></p>

<h2 id="what-s-some-other-tech-related-stuff-that-i-m-interested-in">what&#39;s some other tech-related stuff that I&#39;m interested in?</h2>

<p><a href="/cos/tag:emacs" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">emacs</span></a> is not a dirty word. Given my change of work focus, I’d guess that 98% of my time in it nowadays is spent using <a href="/cos/tag:orgmode" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">orgmode</span></a> to keep notes on what’s going on at work.</p>

<p>Once upon a time, I helped some friends start a <a href="/cos/tag:Linux" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Linux</span></a> User Group called <a href="https://luv.asn.au" rel="nofollow">LUV</a>. It&#39;s been a <em>long</em> time since I was involved, but I&#39;m glad that it kept going for all these years – plenty of other people put in a lot of work to make it so, and more power to them! Despite that love for Linux, I&#39;ve enthusiastically used other <a href="/cos/tag:Unix" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Unix</span></a> / Unix-like operating systems over the years too, and happily use a Mac desktop these days – it&#39;s all ok by me.</p>
]]></content:encoded>
      <guid>https://apintandaparma.club/cos/gday</guid>
      <pubDate>Sun, 27 Nov 2022 07:34:04 +0000</pubDate>
    </item>
  </channel>
</rss>