<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>QEMU &#8211; Virtually Fun</title>
	<atom:link href="https://virtuallyfun.com/category/qemu/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Mon, 06 Apr 2026 09:18:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Running back to 2002 (the hard way)</title>
		<link>https://virtuallyfun.com/2026/04/06/running-back-to-2002-the-hard-way/</link>
					<comments>https://virtuallyfun.com/2026/04/06/running-back-to-2002-the-hard-way/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 06 Apr 2026 09:18:00 +0000</pubDate>
				<category><![CDATA[disk images]]></category>
		<category><![CDATA[hard disks]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[powerpc]]></category>
		<category><![CDATA[QEMU]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=15663</guid>

					<description><![CDATA[This honestly should have been much easier. Or maybe I’ve just forgotten how absolutely hostile early OS X could be. The mistake begins It started, as these things always do, with someone mentioning the PowerBook G4 Titanium. One quick eBay &#8230; <a href="https://virtuallyfun.com/2026/04/06/running-back-to-2002-the-hard-way/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2026/04/image-1.png"><img fetchpriority="high" decoding="async" width="768" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-1-768x1024.png" alt="" class="wp-image-15664" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-1-768x1024.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-1-225x300.png 225w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-1.png 820w" sizes="(max-width: 768px) 100vw, 768px" /></a><figcaption class="wp-element-caption">PowerBook G4 Titanium running OS X 10.2 &amp; Microsoft Office 2004</figcaption></figure>



<p class="wp-block-paragraph">This honestly should have been much easier.</p>



<p class="wp-block-paragraph">Or maybe I’ve just forgotten how absolutely hostile early OS X could be.</p>



<h2 class="wp-block-heading">The mistake begins</h2>



<p class="wp-block-paragraph">It started, as these things always do, with someone mentioning the <strong>PowerBook G4 Titanium</strong>. One quick eBay search later and, well £30 later I owned one.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/04/image-2.png"><img decoding="async" width="820" height="228" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-2.png" alt="" class="wp-image-15665" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-2.png 820w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-2-300x83.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-2-768x214.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-2-500x139.png 500w" sizes="(max-width: 820px) 100vw, 820px" /></a><figcaption class="wp-element-caption">“They got me.”</figcaption></figure>



<p class="wp-block-paragraph">It showed up absurdly fast (Sunday delivery? really?), in surprisingly good condition, and I already had a charger. So naturally, the <em>sensible</em> thing to do was…</p>



<p class="wp-block-paragraph">Install Tiger.<br>Which worked. Immediately. Of course it did.</p>



<h2 class="wp-block-heading">But that wasn’t good enough</h2>



<p class="wp-block-paragraph">Tiger is fine. Great, even.</p>



<p class="wp-block-paragraph">But it’s not <em>Jaguar</em>.</p>



<p class="wp-block-paragraph">10.2 was always my favorite early OS X, that weird in-between era where it still felt experimental but usable. And according to basically everything online, early Titanium PowerBooks should run it.</p>



<p class="wp-block-paragraph">So I grabbed a cheap “reproduction” 10.2 CD set.</p>



<p class="wp-block-paragraph">And this is where everything went wrong.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/04/image-3.png"><img decoding="async" width="820" height="615" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-3.png" alt="" class="wp-image-15666" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-3.png 820w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-3-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-3-768x576.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-3-400x300.png 400w" sizes="(max-width: 820px) 100vw, 820px" /></a><figcaption class="wp-element-caption">Kernel panic</figcaption></figure>



<p class="wp-block-paragraph">Not a great start.</p>



<p class="wp-block-paragraph">At first glance it looks like some kind of network address corruption, but in reality it’s just the kernel screaming because something is <em>very</em> wrong at a hardware level.</p>



<p class="wp-block-paragraph">Time to go verbose.</p>



<h2 class="wp-block-heading">Welcome back to Open Firmware</h2>



<p class="wp-block-paragraph">You can’t just hold <code>C</code> and <code>Cmd+V</code> like a normal person.</p>



<p class="wp-block-paragraph">No, this is 2002.</p>



<p class="wp-block-paragraph">So into Open Firmware we go:</p>



<pre class="wp-block-preformatted">boot cd:,\\:tbxi -v</pre>



<p class="wp-block-paragraph">Now we get actual output… and a much clearer failure.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/04/image-4.png"><img loading="lazy" decoding="async" width="820" height="615" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-4.png" alt="" class="wp-image-15667" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-4.png 820w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-4-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-4-768x576.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-4-400x300.png 400w" sizes="auto, (max-width: 820px) 100vw, 820px" /></a><figcaption class="wp-element-caption">Kernel panic in the FireWire driver</figcaption></figure>



<h2 class="wp-block-heading">FireWire: the red herring</h2>



<p class="wp-block-paragraph">The panic traces back to:</p>



<pre class="wp-block-preformatted">com.apple.driver.AppleFWOHCI</pre>



<p class="wp-block-paragraph">Ah yes — FireWire.</p>



<p class="wp-block-paragraph">Because of course it is.</p>



<p class="wp-block-paragraph">So the obvious thing to do is disable it from Open Firmware:</p>



<pre class="wp-block-preformatted">dev /pci@f4000000/firewire<br>" disabled" encode-string " status" property</pre>



<p class="wp-block-paragraph">And… it works.</p>



<p class="wp-block-paragraph">Kind of.</p>



<p class="wp-block-paragraph">The system gets further. No panic. Progress!</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2026/04/image-5.png"><img loading="lazy" decoding="async" width="820" height="615" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-5.png" alt="" class="wp-image-15668" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-5.png 820w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-5-300x225.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-5-768x576.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-5-400x300.png 400w" sizes="auto, (max-width: 820px) 100vw, 820px" /></a><figcaption class="wp-element-caption">The &#8216;stop sign&#8217; meaning this OS isn&#8217;t supported on this Mac</figcaption></figure>



<h2 class="wp-block-heading">And then: the stop sign</h2>



<p class="wp-block-paragraph">Instead of a crash, we now get a <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6ab.png" alt="🚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">The classic “this OS is not supported on this Mac” symbol.</p>



<p class="wp-block-paragraph">Which is when it finally clicks:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">This machine is a <strong>PowerBook3,5 (867MHz)</strong><br>And <strong>10.2.0 predates it</strong></p>
</blockquote>



<p class="wp-block-paragraph">So no, this was never going to work.</p>



<p class="wp-block-paragraph">The FireWire panic wasn’t the root problem; it was just the first thing new enough hardware broke.</p>



<h2 class="wp-block-heading">At this point, a normal person would stop</h2>



<p class="wp-block-paragraph">I did not stop.</p>



<h2 class="wp-block-heading">If Apple won’t build it, we will</h2>



<p class="wp-block-paragraph">If 10.2.0 won’t run, then clearly the answer is:</p>



<ul class="wp-block-list">
<li>build a <strong>10.2.8 install manually</strong></li>



<li>using <strong>QEMU</strong></li>



<li>on a completely different machine</li>



<li>then sneak it onto the laptop</li>
</ul>



<p class="wp-block-paragraph">Perfectly reasonable.</p>



<h2 class="wp-block-heading">Building Jaguar in exile</h2>



<p class="wp-block-paragraph">QEMU can emulate a G4 well enough to:</p>



<ol class="wp-block-list">
<li>Install Tiger</li>



<li>Install Jaguar</li>



<li>Update Jaguar → <strong>10.2.8</strong></li>
</ol>



<p class="wp-block-paragraph">Something like:</p>



<pre class="wp-block-preformatted">qemu-system-ppc \<br>  -M mac99 \<br>  -cpu G4 \<br>  -m 512 \<br>  -drive file=macosx_6gb.vmdk \<br>  -boot c</pre>



<p class="wp-block-paragraph">From there:</p>



<ul class="wp-block-list">
<li>swap disks around</li>



<li>update Jaguar</li>



<li>boot back into Tiger</li>



<li>use Disk Utility to create a compressed image</li>
</ul>



<p class="wp-block-paragraph">Eventually producing:</p>



<pre class="wp-block-preformatted">osx-10.2.8.dmg</pre>



<h2 class="wp-block-heading">Of course it&#8217;s not that easy!</h2>



<p class="wp-block-paragraph">First off is to get ISO images.  I actually started this process with the Tiger I already have in hand.  To grab an ISO under macOS 26 it&#8217;s a simple command:</p>



<pre class="wp-block-preformatted">hdiutil convert /dev/disk4 -format UDTO -o OSX_Tiger_10.5.iso</pre>



<p class="wp-block-paragraph">And about 20 minutes of the DVD drive spinning around I got my ISO image. </p>



<pre class="wp-block-preformatted"> % file OSX_Tiger_10.5.iso <br>OSX_Tiger_10.5.iso: Apple Driver Map, blocksize 512, blockcount 5531738, devtype 0, devid 0, driver count 1, contains[@0x200]: Apple Partition Map, map block count 4, start block 1, block count 63, name Apple, type Apple_partition_map, valid, allocated, contains[@0x400]: Apple Partition Map, map block count 4, start block 64, block count 8, name Macintosh, type Apple_Driver_ATAPI, boot arguments DMMY, valid, allocated, real driver, chain driver, contains[@0x600]: Apple Partition Map, map block count 4, start block 72, block count 5531656, name Mac_OS_X, type Apple_HFS, boot arguments goon, valid, allocated, readable, writable, mount at startup, contains[@0x800]: Apple Partition Map, map block count 4, start block 5531728, block count 10, type Apple_Free</pre>



<p class="wp-block-paragraph">Now to run it under qemu:</p>



<pre class="wp-block-preformatted">qemu-system-ppc \<br>    -L pc-bios \<br>    -M mac99,via=pmu \<br>    -cpu G4 \<br>    -m 512 \<br>    -prom-env 'auto-boot?=true' \<br>    -prom-env 'boot-args=-v' \<br>    -drive file=tiger.iso,media=cdrom,format=raw \<br>    -drive file=macosx_6gb.vmdk,format=vmdk,cache=unsafe \<br>    -boot d \<br>    -net none \<br>    -no-reboot</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="632" src="https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-9.41.23-AM.png" alt="" class="wp-image-15673" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-9.41.23-AM.png 802w, https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-9.41.23-AM-300x236.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-9.41.23-AM-768x605.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-9.41.23-AM-381x300.png 381w" sizes="auto, (max-width: 802px) 100vw, 802px" /><figcaption class="wp-element-caption">Tiger on QEMU / OS X Tahoe 26.4</figcaption></figure>



<p class="wp-block-paragraph">And in a minute or so on my mac mini running &#8220;QEMU emulator version 10.1.2&#8221; from homebrew I was up and running. yay. I don&#8217;t need or care about audio/networking as this is just to get a PowerPC OS up and running, using the media I have in hand.  Bring up the disk util, partition the VMDK, the install the OS. You&#8217;ve probably seen/done it a dozen times so nothing to really see here.</p>



<p class="wp-block-paragraph">Once my 10.2 reproduction media arrive, I went through the hardware boot to only find out that 10.2.0 just won&#8217;t run on my PowerBook G4.  This is where we use the emulation route.  Could I simply grab an ISO using hdiutil?</p>



<p class="wp-block-paragraph"><strong>NO</strong></p>



<p class="wp-block-paragraph">Of course not. Why would it work?  It comes down to the older versions of OS X being very MacOS 9 style disks, which hdiutil simply will not grab. You end up with meaningless data.  What about &#8216;dd&#8217; on /dev/disk4? /dev/rdisk4?  did you set bs=2048? YES YES YES&#8230; none worked.</p>



<p class="wp-block-paragraph">So back in homebrew I got the cdrutils from Joerg Schilling which gives me the readcd command, which finally let me grab the ISO&#8217;s </p>



<pre class="wp-block-preformatted">% file OSX_Jaguar_10.2-disc1.iso<br>OSX_Jaguar_10.2-disc1.iso: Apple Driver Map, blocksize 2048, blockcount 331264, devtype 1, devid 1, driver count 4, contains[@0x200]: Apple Partition Map, map block count 10, start block 1, block count 63, name Apple, type Apple_partition_map, valid, allocated, in use, readable, contains[@0x400]: Apple Partition Map, map block count 10, start block 64, block count 56, name Macintosh, type Apple_Driver43, boot arguments ptDR, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0x600]: Apple Partition Map, map block count 10, start block 120, block count 140, name Macintosh, type Apple_Driver43_CD, boot arguments CDrv, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0x800]: Apple Partition Map, map block count 10, start block 0, block count 0, type Apple_Void, contains[@0xA00]: Apple Partition Map, map block count 10, start block 260, block count 56, name Macintosh, type Apple_Driver_ATAPI, boot arguments ptDR, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0xC00]: Apple Partition Map, map block count 10, start block 316, block count 140, name Macintosh, type Apple_Driver_ATAPI, boot arguments ATPI, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0xE00]: Apple Partition Map, map block count 10, start block 456, block count 512, name Patch Partition, type Apple_Patches, valid, contains[@0x1000]: Apple Partition Map, map block count 10, start block 0, block count 0, type Apple_Void</pre>



<p class="wp-block-paragraph">As you can see it&#8217;s a lot of partitions, and various bits that it&#8217;s expecting.  Kind of annoying that the system utils cannot grab these kinds of images, but in the end we got there.</p>



<p class="wp-block-paragraph">Naturally, Jaguar has to be run differently as it&#8217;s just more tied to older hardware:</p>



<pre class="wp-block-preformatted">qemu-system-ppc \<br>-machine mac99 \<br>-cpu G4 -m 1G \<br>-name "Mac OS X 10.2" \<br>-hda "macosx_6gb.vmdk" \<br>-cdrom "OSX_Jaguar_10.2-disc1.iso" \<br>-device pci-ohci,id=usb1 \<br>-device usb-mouse,bus=usb1.0 \<br>-device usb-kbd,bus=usb-bus.0 \<br>-device usb-audio,bus=usb1.0,audiodev=audio \<br>-audiodev id=audio,driver=coreaudio \<br>-device sungem,netdev=network \<br>-netdev id=network,type=user \<br>-no-reboot \<br>-accel tcg \<br>-boot d</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="801" height="627" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-7.png" alt="" class="wp-image-15674" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-7.png 801w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-7-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-7-768x601.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-7-383x300.png 383w" sizes="auto, (max-width: 801px) 100vw, 801px" /><figcaption class="wp-element-caption">Jaguar installer</figcaption></figure>



<p class="wp-block-paragraph">The next catch is that the diskutil just hangs partitioning the hard disk. I&#8217;ve no idea why.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="456" height="172" src="https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-05-at-10.45.28-AM.png" alt="" class="wp-image-15675" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-05-at-10.45.28-AM.png 456w, https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-05-at-10.45.28-AM-300x113.png 300w" sizes="auto, (max-width: 456px) 100vw, 456px" /><figcaption class="wp-element-caption">It just currently hangs forever on 10.2</figcaption></figure>



<p class="wp-block-paragraph">So, the solution is to boot back into Tiger, add a second disk, partition it there, and then use that disk in the Jaguar boot.  After that it installs just fine.  I enabled the sound and network just to setup NTP so at least my image isn&#8217;t too stuck in 2002.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="756" height="497" src="https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-10.05.21-AM.png" alt="" class="wp-image-15676" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-10.05.21-AM.png 756w, https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-10.05.21-AM-300x197.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/Screenshot-2026-04-06-at-10.05.21-AM-456x300.png 456w" sizes="auto, (max-width: 756px) 100vw, 756px" /></figure>



<p class="wp-block-paragraph">Oh, one trick I found out decades too late, is that you can cloverQ the named registration, so you don&#8217;t have to make up bogus phone numbers and a semi valid mailing address.  I didn&#8217;t know is that, it&#8217;ll just kick you to the account creation screen, and you are good to go!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="808" height="632" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-8.png" alt="" class="wp-image-15677" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-8.png 808w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-8-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-8-768x601.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-8-384x300.png 384w" sizes="auto, (max-width: 808px) 100vw, 808px" /><figcaption class="wp-element-caption">OS X 10.2.0 installed into QEMU</figcaption></figure>



<p class="wp-block-paragraph">After that it&#8217;s just a matter of running the 10.2.8 combination patch, to bring the VM up to 10.2.8</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="623" height="444" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-9.png" alt="" class="wp-image-15678" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-9.png 623w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-9-300x214.png 300w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-9-421x300.png 421w" sizes="auto, (max-width: 623px) 100vw, 623px" /><figcaption class="wp-element-caption">10.2.8 Combo update</figcaption></figure>



<p class="wp-block-paragraph">From there the final hurdel is to create a RAW disk image to transfer the Tiger diskutil &#8216;disk image&#8217; to.  This way you can easily mount the RAW image by renaming the extension to .dmg and OS X (thankfully) still supprots HFS+ so you can simply use finder or &#8216;cp&#8217; to copy off the compressed disk image onto a USB drive, and now we are ready to image the PowerBook using our updated OS X Jaguar!<br></p>



<h2 class="wp-block-heading">The USB betrayal</h2>



<p class="wp-block-paragraph">Naturally, the Tiger installer refused to mount USB.</p>



<p class="wp-block-paragraph">Because of course it did.</p>



<h2 class="wp-block-heading">The final workaround</h2>



<p class="wp-block-paragraph">So instead:</p>



<ol class="wp-block-list">
<li>Repartition internal disk
<ul class="wp-block-list">
<li>small staging partition (~4GB)</li>



<li>main target partition (remainder of the disk)</li>
</ul>
</li>



<li>Install Tiger (again)</li>



<li>Copy <code>10.2.8.dmg</code> to staging partition</li>



<li>Boot Tiger installer</li>



<li>Use Disk Utility → <strong>Restore image onto main partition</strong></li>
</ol>



<p class="wp-block-paragraph">And finally…</p>



<figure class="wp-block-image size-large"><a href="https://virtuallyfun.com/wp-content/uploads/2026/04/image-6.png"><img loading="lazy" decoding="async" width="768" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2026/04/image-6-768x1024.png" alt="" class="wp-image-15669" srcset="https://virtuallyfun.com/wp-content/uploads/2026/04/image-6-768x1024.png 768w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-6-225x300.png 225w, https://virtuallyfun.com/wp-content/uploads/2026/04/image-6.png 820w" sizes="auto, (max-width: 768px) 100vw, 768px" /></a><figcaption class="wp-element-caption">10.2.8 running on the PowerBook G4</figcaption></figure>



<h2 class="wp-block-heading">Success</h2>



<p class="wp-block-paragraph">Jaguar 10.2.8.</p>



<p class="wp-block-paragraph">On a machine that absolutely refused to run 10.2.0.</p>



<p class="wp-block-paragraph">With Office 2004, because why not.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Lessons learned</h2>



<ul class="wp-block-list">
<li>Early OS X is <strong>tightly hardware-bound</strong>, not just “older”</li>



<li>Kernel panics are often <strong>symptoms, not causes</strong></li>



<li>FireWire was innocent (this time)</li>



<li>USB support in installers was… optimistic</li>
</ul>



<p class="wp-block-paragraph">And most importantly:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Just because you <em>can</em> reconstruct a historically accurate install pipeline via emulation and disk imaging…<br>doesn’t mean you should.</p>
</blockquote>



<h2 class="wp-block-heading">The obvious solution (that I ignored)</h2>



<p class="wp-block-paragraph">A single FireWire cable.</p>



<p class="wp-block-paragraph">Target Disk Mode.</p>



<p class="wp-block-paragraph">Done in 20 minutes, by using my B&amp;W G3 PowerMac that is currently running Windows NT, but it wouldn&#8217;t matter as I could just hold option and select the FireWire target disk to boot to/from as it&#8217;ll happily boot/install 10.2.0 without a hitch.  It being a G3 makes no difference as the same kernel works on G3/G4 processors.</p>



<h2 class="wp-block-heading">But where’s the fun in that?</h2>



<p class="wp-block-paragraph">For those brave enough to get to the end of the post, I uploaded all my <a href="https://archive.org/details/osx-jaguar-10.2-2disc">Jaguar images onto archive.org</a>.  I&#8217;m sure it&#8217;s been preserved before, but since I was in the mood, I also uploaded <a href="https://archive.org/details/microsoft-office-2004_202604">Office 2004</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2026/04/06/running-back-to-2002-the-hard-way/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Installing HP-UX 11i v1 (11.11) 32bit PA1.1 on QEMU 10.1</title>
		<link>https://virtuallyfun.com/2025/10/26/installing-hp-ux-11i-v1-11-11-32bit-pa1-1-on-qemu-10-1/</link>
					<comments>https://virtuallyfun.com/2025/10/26/installing-hp-ux-11i-v1-11-11-32bit-pa1-1-on-qemu-10-1/#respond</comments>
		
		<dc:creator><![CDATA[tenox]]></dc:creator>
		<pubDate>Sun, 26 Oct 2025 23:20:23 +0000</pubDate>
				<category><![CDATA[guest post]]></category>
		<category><![CDATA[HPPA]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[unix]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=15494</guid>

					<description><![CDATA[(This is a guest post by Antoni Sawicki aka Tenox) Definitely not the first person doing this. In fact this has been quite widely documented, in particular by astr0baby and openpa.net. Just my personal observations and tweaks. Install ISOs from &#8230; <a href="https://virtuallyfun.com/2025/10/26/installing-hp-ux-11i-v1-11-11-32bit-pa1-1-on-qemu-10-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>(This is a guest post by Antoni Sawicki aka Tenox)</em></p>



<p class="wp-block-paragraph">Definitely not the first person doing this. In fact this has been quite widely documented, in particular by <a href="https://astr0baby.wordpress.com/2021/04/21/running-hp-ux-11-11-on-the-apple-m1/">astr0baby</a> and <a href="https://www.openpa.net/qemu_pa-risc_emulation.html">openpa.net</a>. Just my personal observations and tweaks.</p>



<h2 class="wp-block-heading">Install</h2>



<p class="wp-block-paragraph"><a href="http://tenox.pdp-11.ru/os/hpux/OS/11.11/2006-12%20MCOE,%20Apps/">ISOs from 2006 MCOE</a> work just fine</p>



<pre class="wp-block-code"><code>qemu-img create -f qcow2 hpux.img 20G

qemu-system-hppa \
-machine B160L \
-smp cpus=4 \
-accel tcg,thread=multi \
-boot d \
-drive if=scsi,bus=0,index=6,file=hpux.img,format=qcow2 \
-m 512 \
-d nochain \
-cdrom mcoe.1_5.iso \
-net nic,model=tulip \
-net user
</code></pre>



<p class="wp-block-paragraph">I installed mostly the defaults, removed Java spyware and Web based management.</p>



<p class="wp-block-paragraph">I recommend using advanced mode and editing File Systems to your desired size or just leaving /stand and / and deleting everything else. Otherwise, if you do defaults, you will be facing resizing them in single user mode later.</p>



<p class="wp-block-paragraph">Forget any serial console, telnet stdio or forwarding X over SSH nonsense. Graphical console now works fully end to end without any issues, except for <code>nsswitch.conf</code>. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="845" src="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxlogin-1024x845.png" alt="" class="wp-image-15496" srcset="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxlogin-1024x845.png 1024w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxlogin-300x247.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxlogin-768x633.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxlogin-364x300.png 364w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxlogin.png 1290w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">When trying to login via CDE you will get an error about unable to start desktop messaging system. Login either via text console or failsafe session. Copy <code>/etc/nsswitch.files</code> to <code>/etc/nsswitch.conf</code>. Also make sure that your hostname can resolve via <code>/etc/hosts</code>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="876" height="405" src="https://virtuallyfun.com/wp-content/uploads/2025/10/Screenshot-2025-10-26-at-1.33.00-AM.png" alt="" class="wp-image-15495" srcset="https://virtuallyfun.com/wp-content/uploads/2025/10/Screenshot-2025-10-26-at-1.33.00-AM.png 876w, https://virtuallyfun.com/wp-content/uploads/2025/10/Screenshot-2025-10-26-at-1.33.00-AM-300x139.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/10/Screenshot-2025-10-26-at-1.33.00-AM-768x355.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/10/Screenshot-2025-10-26-at-1.33.00-AM-500x231.png 500w" sizes="auto, (max-width: 876px) 100vw, 876px" /></figure>



<p class="wp-block-paragraph">Once this is done you should be able to login via CDE:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="840" src="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxcde-1024x840.png" alt="" class="wp-image-15497" srcset="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxcde-1024x840.png 1024w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxcde-300x246.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxcde-768x630.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxcde-366x300.png 366w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxcde.png 1296w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">If you left filesystem defaults, you will be facing this:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="881" height="366" src="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxalloc.png" alt="" class="wp-image-15499" srcset="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxalloc.png 881w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxalloc-300x125.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxalloc-768x319.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxalloc-500x208.png 500w" sizes="auto, (max-width: 881px) 100vw, 881px" /></figure>



<p class="wp-block-paragraph">To fix this, add <code>-boot menu=on</code> to qemu parameters, run <code>boot pri</code> then answer yes to interact with IPL and then type <code>hpux -is</code>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="641" height="366" src="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsingle.png" alt="" class="wp-image-15500" srcset="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsingle.png 641w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsingle-300x171.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsingle-500x285.png 500w" sizes="auto, (max-width: 641px) 100vw, 641px" /></figure>



<p class="wp-block-paragraph">This will land you in single user mode where you can extend volumes like so:</p>



<pre class="wp-block-code"><code># cat /etc/fstab
....
lvextend -L 4096 /dev/vg00/lvol7
extendfs /dev/vg00/lvol7
....
</code></pre>



<p class="wp-block-paragraph">But ideally this should be done ahead of time during install in File Systems tabs (advanced mode).</p>



<p class="wp-block-paragraph">I like to disable some slow starting and unnecessary services on startup, to do so go to <code>/etc/rc.config.d</code> and edit bunch of files changing value from <code>=1</code> to <code>=0</code>. I typically disable SNMP, CIM and Mailserver, Webadmin, Diagnostics, EMS, nettl, icod, etc at minimum. Also some stubborn services need to be disabled by renaming or removing them from <code>/sbin/rcX.d</code> &#8230;</p>



<h2 class="wp-block-heading">Software Install</h2>



<p class="wp-block-paragraph">Note that this emulates <strong>PA-RISC 1.1</strong> (32bit) and software built for <strong>PA-RISC 2.0</strong> (64bit) will not work. Very little software is marked which platform is it for, so your mileage will vary. You will encounter errors and crashes. To avoid confusion check the binary with <code>file(1)</code> utility.</p>



<p class="wp-block-paragraph">I have a bunch of handy tools like bash/gmake/gzip/gtar/ncftp bundled up <a href="http://tenox.pdp-11.ru/os/hpux/OS/11.11/tools/tools-hpux11iv1.tar.lz">here</a>. There is GCC 4.0.2 <a href="http://tenox.pdp-11.ru/os/hpux/OS/11.11/hppa1.1-hp-hpux11.11/gcc-4.0.2.depot.tar.lz">here</a> as a depot and <a href="http://tenox.pdp-11.ru/os/hpux/OS/11.11/tools/gcc-core-402-hpux11v1.tar.lz">here</a> as a tarball. I also installed a bunch of tools and enhancements from Soft Pack and Apps cdroms.</p>



<p class="wp-block-paragraph">Most importantly SimCity!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="839" src="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsim-1024x839.png" alt="" class="wp-image-15506" srcset="https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsim-1024x839.png 1024w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsim-300x246.png 300w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsim-768x629.png 768w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsim-366x300.png 366w, https://virtuallyfun.com/wp-content/uploads/2025/10/hpuxsim.png 1299w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">More games can be found <a href="https://www.openpa.net/hp-ux_games_software.html">here</a>. However this emulated HP-UX doesn&#8217;t have working OpenGL so don&#8217;t expect much.</p>



<p class="wp-block-paragraph">Finally, to shut down the os:</p>



<pre class="wp-block-code"><code>reboot -h</code></pre>



<p class="wp-block-paragraph">The ready to run image is available <a href="http://tenox.pdp-11.ru/os/hpux/Qemu/hpux11v1-qemu.tar.lz">here</a>. It works with QEMU 10.1. It has bash &amp; gcc pre-installed. Login as root/root.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2025/10/26/installing-hp-ux-11i-v1-11-11-32bit-pa1-1-on-qemu-10-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Manually converting a Proxmox VM to Qemu</title>
		<link>https://virtuallyfun.com/2024/10/15/manually-converting-a-proxmox-vm-to-qemu/</link>
					<comments>https://virtuallyfun.com/2024/10/15/manually-converting-a-proxmox-vm-to-qemu/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 15:05:25 +0000</pubDate>
				<category><![CDATA[proxmox]]></category>
		<category><![CDATA[QEMU]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14964</guid>

					<description><![CDATA[I know this is a weird one. I got handed a backup of a broken VM and have to fix it. I was given a vma file which of course you basically need a Proxmox machine to use the vma &#8230; <a href="https://virtuallyfun.com/2024/10/15/manually-converting-a-proxmox-vm-to-qemu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I know this is a weird one.  I got handed a backup of a broken VM and have to fix it.  I was given a vma file which of course you basically need a Proxmox machine to use the vma command to unpack it.</p>



<p class="wp-block-paragraph">Luckily you can happily install Proxmox into a VM that can&#8217;t properly run Proxmox, but it&#8217;ll give access to the utility to extract it.</p>



<p class="wp-block-paragraph">It&#8217;s pretty self-explanatory other than the &#8216;tmp&#8217; directory to extract to mustn&#8217;t exist. Weird.</p>



<pre class="wp-block-code"><code>vma extract vzdump-qemu-101-2024_10_07-12_26_33.vma tmp</code></pre>



<p class="wp-block-paragraph">In this case it extracted 2 raw files, and a config file.</p>



<pre class="wp-block-code"><code>disk-drive-sata0.raw
disk-drive-sata1.raw
qemu-server.conf</code></pre>



<p class="wp-block-paragraph">And looking at the config file we have:</p>



<pre class="wp-block-code"><code>boot: order=sata1;sata0;ide2;net0
cores: 4
cpu: x86-64-v2-AES
ide2: none,media=cdrom
memory: 8192
meta: creation-qemu=8.0.2,ctime=1691052188
name: KSA-ZABBIX-01
net0: virtio=C2:39:27:42:56:6B,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: l26
sata0: local-lvm:vm-101-disk-0,size=500G
sata1: local-lvm:vm-101-disk-1,size=10G
scsihw: virtio-scsi-single
smbios1: uuid=6e0757ff-565e-429d-8f47-3b425b89253e
sockets: 2
vmgenid: 70b4cbfe-de9f-4690-b7a1-64e68f4c5c30
#qmdump#map:sata0:drive-sata0:local-lvm:raw:
#qmdump#map:sata1:drive-sata1:local-lvm:raw:</code></pre>



<p class="wp-block-paragraph">Ok the first thing is those raw files are ENORMOUS.  Convert them to a better container, I went with vmdk because &#8230; reasons.</p>



<pre class="wp-block-code"><code>qemu-img convert -f raw -O vmdk disk-drive-sata0.raw disk-drive-sata0.vmdk
qemu-img convert -f raw -O vmdk disk-drive-sata1.raw disk-drive-sata1.vmdk</code></pre>



<p class="wp-block-paragraph">I then could copy the VMDK&#8217;s to my machine and then destroy the Proxmox VM.</p>



<p class="wp-block-paragraph">Since I&#8217;m weird I&#8217;m going to do this on Windows, using the <a href="https://qemu.weilnetz.de/w64/" target="_blank" rel="noreferrer noopener">Win64 port of Qemu</a>.  Because, why not?  Also, I&#8217;m going to setup a different NAT network, and some port redirect:</p>



<pre class="wp-block-code"><code>"\Program Files\qemu\qemu-system-x86_64.exe" -net none -serial none ^
        -m 8192 ^
        -device virtio-net-pci,mac=C2:39:27:42:56:6B,netdev=net0 ^
        -netdev user,id=net0,net=192.168.1.0/24,dhcpstart=192.168.1.10,hostfwd=tcp::8080-:80,hostfwd=tcp::8022-:22 ^
        -device ahci,id=ahci ^
        -drive id=disk,file=disk-drive-sata0.vmdk,if=none ^
        -device ide-hd,drive=disk,bus=ahci.0,bootindex=2 ^
        -drive id=disk2,file=disk-drive-sata1.vmdk,if=none ^
        -device ide-hd,drive=disk2,bus=ahci.1,bootindex=1 ^
        -boot order=c,menu=on ^
        -smp 2 ^</code></pre>



<p class="wp-block-paragraph">So, I managed to keep the virtio network device, bind it to a DHCP network of 192.168.1.0/24 with the first address starting at 192.168.1.10.  I also redirect port 8080 to port 80, along with 8022 to 22, allowing basic HTTP &amp; SSH access into the VM.</p>



<p class="wp-block-paragraph">The weird requirement is the 2 SATA disks, where the 2nd disk is the bootable one.  I don&#8217;t know why it was configured this way, but I just preserved it.</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-boot.png"><img loading="lazy" decoding="async" width="743" height="464" src="https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-boot.png" alt="" class="wp-image-14965" srcset="https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-boot.png 743w, https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-boot-300x187.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-boot-480x300.png 480w" sizes="auto, (max-width: 743px) 100vw, 743px" /></a></figure>



<p class="wp-block-paragraph">I had to reset the root password, so this was a bit weird as I had to clear so much nonsense of the boot setup, basically pruning everything after ro, to add &#8220;rd.break enforcing=0&#8221;</p>



<figure class="wp-block-image size-full"><a href="https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-reset-password.png"><img loading="lazy" decoding="async" width="729" height="290" src="https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-reset-password.png" alt="" class="wp-image-14966" srcset="https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-reset-password.png 729w, https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-reset-password-300x119.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/10/set-linux-to-single-user-mode-reset-password-500x199.png 500w" sizes="auto, (max-width: 729px) 100vw, 729px" /></a></figure>



<p class="wp-block-paragraph">With that, it was a matter of mounting the /sysroot as readwrite, chrooting into it, and then setting the password. yay.</p>



<p class="wp-block-paragraph">Now I can reboot the VM on my desktop and have it running on Qemu, where I could bring up the WebUI for the mystery product and have it all running as a tame user mode application.</p>



<p class="wp-block-paragraph">Nice!</p>



<p class="wp-block-paragraph">The CLI syntax is always evolving and getting complex but don&#8217;t give up hope!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/10/15/manually-converting-a-proxmox-vm-to-qemu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Installing older version of QEMU on MacOS using Homebrew</title>
		<link>https://virtuallyfun.com/2024/07/01/installing-older-version-of-qemu-on-macos-using-homebrew/</link>
					<comments>https://virtuallyfun.com/2024/07/01/installing-older-version-of-qemu-on-macos-using-homebrew/#comments</comments>
		
		<dc:creator><![CDATA[tenox]]></dc:creator>
		<pubDate>Mon, 01 Jul 2024 01:23:09 +0000</pubDate>
				<category><![CDATA[guest post]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[QEMU]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14606</guid>

					<description><![CDATA[(this is a guest post by Antoni Sawicki aka Tenox) I often need to install a specific / older version of QEMU on a Mac using Homebrew. If you search for how to do it, typical answers are create a &#8230; <a href="https://virtuallyfun.com/2024/07/01/installing-older-version-of-qemu-on-macos-using-homebrew/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>(this is a guest post by Antoni Sawicki aka Tenox)</em></p>



<p class="wp-block-paragraph">I often need to install a specific / older version of QEMU on a Mac using Homebrew. If you search for how to do it, typical answers are create a local tap, extract some files and other nonsense. Building from sources is equally retarded because configure can&#8217;t easily find includes and libraries installed by Homebrew.</p>



<p class="wp-block-paragraph">This is how to do it in a simplest possible way. Find <a href="https://github.com/Homebrew/homebrew-core/blob/master/Formula/q/qemu.rb" data-type="link" data-id="https://github.com/Homebrew/homebrew-core/blob/master/Formula/q/qemu.rb">QEMU Homebrew Formula file on Github</a>. Then click history on the top right corner. Browse for the desired version. Then on the right of the version, click a little icon saying &#8220;View code at this point&#8221;. It should show you an older version of the same formula. You can click download raw file or copy the URL and use <code>curl</code> to fetch it. Then simply run <code>brew install ~/Downloads/qemu.rb</code> or wherever you saved it. Magic! Hope it helps!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/07/01/installing-older-version-of-qemu-on-macos-using-homebrew/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Two things that really annoy me!</title>
		<link>https://virtuallyfun.com/2024/06/14/two-things-that-really-annoy-me/</link>
					<comments>https://virtuallyfun.com/2024/06/14/two-things-that-really-annoy-me/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 14 Jun 2024 08:36:19 +0000</pubDate>
				<category><![CDATA[disk images]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[random updates]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14540</guid>

					<description><![CDATA[Moving homes. again. First off, I got a new VPS to house this on, size wise, I&#8217;d just plain outgrown the old one, even with SquashFS. Over on lowend box, I had spotted this one: LuxVPS It&#8217;s not an AD, &#8230; <a href="https://virtuallyfun.com/2024/06/14/two-things-that-really-annoy-me/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Moving homes. again.</h2>



<p class="wp-block-paragraph">First off, I got a new VPS to house this on, size wise, I&#8217;d just plain outgrown the old one, even with <a href="https://virtuallyfun.com/2024/06/11/squeezing-the-bytes-out-of-webhosting-linux-with-squashfs-overlay/" target="_blank" rel="noreferrer noopener">SquashFS</a>. Over on <a href="https://lowendbox.com/" target="_blank" rel="noreferrer noopener">lowend box</a>, I had spotted this one: <a href="https://luxvps.net/" target="_blank" rel="noreferrer noopener">LuxVPS</a></p>



<figure class="wp-block-image size-full"><a href="https://lowendbox.com/blog/happy-birthday-luxvps-now-lets-cut-the-cake-on-these-celebration-deals-and-giveaway-%f0%9f%a5%b3/" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="704" height="199" src="https://virtuallyfun.com/wp-content/uploads/2024/06/luxvps.png" alt="" class="wp-image-14541" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/luxvps.png 704w, https://virtuallyfun.com/wp-content/uploads/2024/06/luxvps-300x85.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/luxvps-500x141.png 500w" sizes="auto, (max-width: 704px) 100vw, 704px" /></a></figure>



<p class="wp-block-paragraph">It&#8217;s not an AD, just thought the pricing seemed pretty good for 5€.  One of the nice things about converting so much of my data to SquashFS is that moving single files is WAY easier to deal with!</p>



<h2 class="wp-block-heading">Mice in my 1970&#8217;s teletype text editor?!</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-1.png" alt="" class="wp-image-14542" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-1.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-1-300x300.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-1-150x150.png 150w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-1-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Using Mice with a 1970&#8217;s text editor</figcaption></figure>



<p class="wp-block-paragraph">But editing text files had me facing off some feature of VIM I&#8217;d somehow not dealt with that Debian 11 set by default, and that is mouse integration!</p>



<p class="wp-block-paragraph"><strong>CAN YOU BELIVE IT?</strong></p>



<p class="wp-block-paragraph">Somewhere out there, is people who use a mouse with a VI clone.&nbsp;</p>



<p class="wp-block-paragraph">It bares repeating</p>



<p class="wp-block-paragraph"><strong>SOMEONE THINKS YOU NEED A MOUSE TO USE VI.</strong></p>



<p class="wp-block-paragraph">So much so, it&#8217;s the system default.</p>



<p class="wp-block-paragraph"><strong>G</strong>ood lor<strong>d</strong>.</p>



<p class="wp-block-paragraph">The fix is to edit /etc/vim/vimrc:</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>set mouse=
set ttymouse=</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Problem solved.  Obviously, I&#8217;m not going to remember this, but now I can right click/paste the way G&#8217;d intended it!</p>



<h2 class="wp-block-heading">Stale encryption</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-3.png" alt="" class="wp-image-14543" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-3.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-3-300x300.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-3-150x150.png 150w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-3-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Old rusty locks</figcaption></figure>



<p class="wp-block-paragraph">The next source of annoyance is the ancient <a href="https://www.stunnel.org/">stunnel</a> 4.17 that I use for <a href="https://altavista.superglobalmegacorp.com/altavista">altavista.superglobalmegacorp.com</a>.  I&#8217;m kind of trapped with this setup as it needs to be a 32bit &#8216;workstation&#8217; OS, and I don&#8217;t want to run something as heavy as XP or Vista when NT 4.0 is more than enough.  Anyways OpenSSL won&#8217;t talk to this ancient encryption, throwing this error trying to do a connection with &#8220;openssl s_client -connect 192.168.23.6:443&#8221;:</p>



<pre class="wp-block-code"><code>error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
Unable to establish SSL connection.</code></pre>



<p class="wp-block-paragraph">The fix, thanks to <a href="https://stackoverflow.com/users/2868801/dave-thompson-085">dave_thompson_085</a> is simple enough.</p>



<p class="wp-block-paragraph">Basically, modify /etc/ssl/openssl.conf and place this at the top:</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>openssl_conf = default_conf
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">then place this at the bottom:</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>&#91; default_conf ]

ssl_conf = ssl_sect

&#91;ssl_sect]

system_default = ssl_default_sect

&#91;ssl_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT:@SECLEVEL=1</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Now when I connect to stunnel, I can verify that I am indeed using ancient crap level security:</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>New, SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 19D20D30E0026E8417E00402DE939E90770D4658C3A9CFE4DB4E5F2A5454DE9D
    Session-ID-ctx:
    Master-Key: 498C648E77E9B9C944A8B1D16242240A161A05A087881C6AD300718DD9B8C443EA12FB76440B666B7C6634A7E7DBE9D5
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1718352960
    Timeout   : 7200 (sec)
    Verify return code: 10 (certificate has expired)
    Extended master secret: no
---
DONE</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">I don&#8217;t care about the encryption, I could as a matter of fact just run without it, as I only need the reverse proxy aspect of it, to make the AltaVista web server accessible over the LAN/WAN/INTERNET.  It&#8217;s all fronted with CloudFlare so from the end use POV it&#8217;s all encrypted anyways</p>



<h2 class="wp-block-heading">A rainbow of happiness</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-4.png" alt="" class="wp-image-14544" srcset="https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-4.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-4-300x300.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-4-150x150.png 150w, https://virtuallyfun.com/wp-content/uploads/2024/06/Designer-4-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Sunshine &amp; rainbows!</figcaption></figure>



<p class="wp-block-paragraph">Another nice side benefit of this SquashFS setup is that I can forever rebase the disks as the content never changes.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>#!/bin/bash
# rebase the disk
rm /usr/local/vm/AltaVista/altavista-c.vmdk
rm /usr/local/vm/AltaVista/altavista-d.vmdk
rm /usr/local/vm/AltaVista/altavista-u.vmdk

qemu-img create -f vmdk -b /usr/local/vmdk/AltaVista_C/altavista-c.vmdk -F vmdk /usr/local/vm/AltaVista/altavista-c.vmdk
qemu-img create -f vmdk -b /usr/local/vmdk/AltaVista_D/altavista-d.vmdk -F vmdk /usr/local/vm/AltaVista/altavista-d.vmdk
qemu-img create -f vmdk -b /usr/local/vmdk/AltaVista_U/altavista-u.vmdk -F vmdk /usr/local/vm/AltaVista/altavista-u.vmdk

qemu-system-i386 -vga std -cpu pentium -m 64 \
        -vnc 192.168.23.1:6 \
        -net none  \
        -hda /usr/local/vm/AltaVista/altavista-c.vmdk \
        -hdb /usr/local/vm/AltaVista/altavista-d.vmdk \
        -hdd /usr/local/vm/AltaVista/altavista-u.vmdk \
        -device pcnet,netdev=alta,mac=5a:00:11:55:22:22  \
        -netdev tap,ifname=tap6,id=alta,script=/usr/local/vm/AltaVista/alta-up,downscript=/usr/local/vm/AltaVista/alta-down</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">One thing is for sure, it makes hosting AltaVista a bit easier to deal with.  And for the sake of archiving, I uploaded a pre-loaded &amp; indexed dataset <a href="https://archive.org/details/altavista-preloaded_squashfs">Altavista Pre-Loaded (squashfs)</a>.  I found that you can just copy the databases into a new VM, as long as you keep the drive letters the same as your source.  So luckily, I had kept the OS on C:, installed AltaVista on D: with all the usenet posts on U:.  Even better, for those strapped for space, you don&#8217;t technically need the U: drive, if you just want to search.  Of course, you probably do want to look at them, <a href="https://virtuallyfun.com/2016/04/21/fun-with-apache-mod_proxy-mod_rewrite-stunnel-and-altavista-personal-search/" target="_blank" rel="noreferrer noopener">but we&#8217;ve gone down this road before</a>.  And we know where it leads.</p>



<figure class="wp-block-image size-full"><img decoding="async" src="https://virtuallyfun.com/wp-content/uploads/2014/10/Screen-Shot-2014-10-29-at-10.06.14-PM.png" alt="" class="wp-image-4698"/><figcaption class="wp-element-caption">Index All the things!</figcaption></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/06/14/two-things-that-really-annoy-me/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Rebuilding Darwin from source: Part 3 Debian makes the world go &#8217;round</title>
		<link>https://virtuallyfun.com/2024/04/24/rebuilding-darwin-from-source-part-3-debian-makes-the-world-go-round/</link>
					<comments>https://virtuallyfun.com/2024/04/24/rebuilding-darwin-from-source-part-3-debian-makes-the-world-go-round/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Wed, 24 Apr 2024 15:22:52 +0000</pubDate>
				<category><![CDATA[Darwin]]></category>
		<category><![CDATA[NeXTSTEP]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14375</guid>

					<description><![CDATA[In the previous posts, we&#8217;ve gone through the excruciating fun of installing Rhapsody DR2, and of course built the Rhapsody kernel from source. But now it&#8217;s time to build the software that can build software. Enter the apt* Of course &#8230; <a href="https://virtuallyfun.com/2024/04/24/rebuilding-darwin-from-source-part-3-debian-makes-the-world-go-round/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In the previous posts, we&#8217;ve gone through the excruciating fun of installing <a href="/2024/04/22/rebuilding-darwin-from-source-part-1-qemu/#comment-370181" target="_blank" rel="noreferrer noopener">Rhapsody DR2</a>, and of course built the <a href="/2024/04/23/rebuilding-darwin-from-source-part-2-building-the-kernel/" target="_blank" rel="noreferrer noopener">Rhapsody kernel from source</a>.  But now it&#8217;s time to build the software that can build software.</p>



<p class="wp-block-paragraph">Enter the apt*</p>



<p class="wp-block-paragraph">Of course we can&#8217;t just start building apt, rather we need to start at the 1990&#8217;s super star scripting language that revolutionized massive, shared code libraries, accelerating web development, and building the modern web, of course I&#8217;m talking about PERL.</p>



<p class="wp-block-paragraph">Even back in the original effort building Perl was a slog. Even with temporary wins with miniperl it quickly fell apart from missing symbols.  When it comes to the system libraries Darwin is not complete, rather it&#8217;s a lot of amputations from OPENSTEP.  Which of course, itself was amputated from NeXTSTEP.  I&#8217;m not sure what held back NeXTSTEP from being &#8216;open&#8217; back when &#8216;open&#8217; meant published specifications, not open source, or open in any other sense of the way, like The Open Group being a gatekeeping organization that is NOT open at all.</p>



<p class="wp-block-paragraph">Anyways, Perl from the Darwin 0.1 downloads &amp; the 0.3 CD-ROM don&#8217;t build.  I gave up and moved to the OS X Server version and that one did build!  As much as I could diff them out and find the breaking difference, honestly, it&#8217;s just easier to stick with what works.</p>



<figure class="wp-block-image size-full"><a href="https://web.archive.org/web/20150713033543/http://nextftp.onionmixer.net/next.68k.org/otto/html/pub/Darwin/PublicSource/Darwin/index.html" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="734" height="721" src="/wp-content/uploads/2024/04/darwin-0.1-ftp-listing.png" alt="" class="wp-image-14377" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/darwin-0.1-ftp-listing.png 734w, https://virtuallyfun.com/wp-content/uploads/2024/04/darwin-0.1-ftp-listing-300x295.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/darwin-0.1-ftp-listing-305x300.png 305w" sizes="auto, (max-width: 734px) 100vw, 734px" /></a><figcaption class="wp-element-caption"><strong>/pub/Darwin/PublicSource/Darwin</strong></figcaption></figure>



<p class="wp-block-paragraph">I should point out that the source to Darwin was preserved on this now defunct site &#8220;<a href="https://web.archive.org/web/20150713033543/http://nextftp.onionmixer.net/next.68k.org/otto/html/pub/Darwin/PublicSource/Darwin/index.html">next.68k.org&#8221;</a>, which in turn was also preserved on the defunct site &#8220;<a href="https://web.archive.org/web/20150713033543/http://nextftp.onionmixer.net/next.68k.org/otto/html/pub/Darwin/PublicSource/Darwin/index.html">nextftp.onionmixer.net</a>&#8220;.  Amazing how mirrors go.  Other fun things on the ftp site include <a href="https://web.archive.org/web/20150713021238/http://nextftp.onionmixer.net/next.68k.org/otto/html/pub/MacOSX-Server/Sources/index.html" target="_blank" rel="noreferrer noopener">MacOSX-Server public sources</a>, which did include the Perl that we built.</p>



<figure class="wp-block-image size-full"><a href="https://archive.org/details/Darwin0.3CDCaseFront" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="650" height="561" src="https://virtuallyfun.com/wp-content/uploads/2024/04/darwin-fake-cd-cover-1.png" alt="" class="wp-image-15225" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/darwin-fake-cd-cover-1.png 650w, https://virtuallyfun.com/wp-content/uploads/2024/04/darwin-fake-cd-cover-1-300x259.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/darwin-fake-cd-cover-1-348x300.png 348w" sizes="auto, (max-width: 650px) 100vw, 650px" /></a><figcaption class="wp-element-caption">Darwin 0.3</figcaption></figure>



<p class="wp-block-paragraph">Darwin 0.3 however was pressed onto CD-ROM, and distributed out to the masses.  It took me a short while to get a tip to a hidden server that had a copy, which really was a massive breakthrough as it had a far more complete set of files than the 0.1 ftp dump.  However at the same time there are files in the 0.1 dump that are not in the 0.3.  Was there ever a 0.2?  I have no idea, the mailing lists don&#8217;t seem to have been preserved so I really don&#8217;t know.  Does anyone have any other ftp site archives?  Not to my knowledge but I&#8217;d be more than happy to be wrong.</p>



<p class="wp-block-paragraph">With a working Perl the next thing to do is to patch the buildtools &amp; dpkg to not be PowerPC centric.  It&#8217;s no secret that all the official effort going on was to get OpenSTEP up and running on Apple PowerPC&#8217;s and to transition away from OPENSTEP to Rhapsody, the MacOS 8 Platinum feeling type OS, where everyone was going to love the &#8216;Coca&#8217; API, and dump the old MacOS stuff or be forced to run it in the &#8216;BlueBox&#8217; MacOS 8 emulator.  Obviously this future didn&#8217;t happen as developers were not interested in rewriting for Steve&#8217;s decade+ fever dream of a Unix for the &#8216;rest of us&#8217;, instead they wanted their existing software to &#8216;just work&#8217; and the Carbon API had to be created, along with a drastically different and modern looking OS X.</p>



<pre class="wp-block-code"><code>-    $flags-&gt;{'RC_CFLAGS'} = '-arch i386 -arch ppc ' . &amp;liststring (@cflags);
-    $flags-&gt;{'RC_ARCHS'} = 'i386 ppc';
+    $flags-&gt;{'RC_CFLAGS'} = '-arch i386 ' . &amp;liststring (@cflags);
+    $flags-&gt;{'RC_ARCHS'} = 'i386';</code></pre>



<p class="wp-block-paragraph">Frequently in the build tools it&#8217;s a matter of looking for ppc/powerpc and replacing them with i386.  It&#8217;s really no surprise that Darwin always built on intel, and it had to, as it&#8217;s life depended on it.  Back when NeXT hit their first real big stumbling blocks of being a vertical platform is that they just couldn&#8217;t compete in the hardware space.  But dumping the 68k based black boxes, they could now take their software and port it to the much more coveted RISC platforms, and shipping with NeXTSTEP 3.3 they supported both SPARC &amp; HPPA.  There had always been talks of further platforms like MIPS or DEC Alpha, but these never materialized, much like the i860 which had been relegated to a simple Postscript co-processor.</p>



<p class="wp-block-paragraph">Anyways.. Keeping with yesterday&#8217;s setup, and of course the .<a href="https://sourceforge.net/projects/aapl-darwin/files/Revived/darwin-builder-04-23-2024.iso/download" target="_blank" rel="noreferrer noopener">darwin-builder-04-23-2024.iso</a> CD-ROM with all the stuff we need, let&#8217;s DOIT!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="661" height="418" src="/wp-content/uploads/2024/04/phase-2-complted.png" alt="" class="wp-image-14380" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/phase-2-complted.png 661w, https://virtuallyfun.com/wp-content/uploads/2024/04/phase-2-complted-300x190.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/phase-2-complted-474x300.png 474w" sizes="auto, (max-width: 661px) 100vw, 661px" /><figcaption class="wp-element-caption">phase 2 completed</figcaption></figure>



<p class="wp-block-paragraph">With phase 3 completed we are now ready to build the rest of the system.  I hope you are excited!  As I&#8217;m sure hoping you kept the original disk layout from the prior setup, or I&#8217;ve totally trashed your system by now.</p>



<p class="wp-block-paragraph">I should say that deb files are just specially tagged &#8216;ar&#8217; archives, that contain a data &amp; control files telling apt how to process them.  In this case I&#8217;ve taken the cc_783.1-1_i386-apple-darwin.deb file and modified it to contain the OS X 10.0 modified CC compiler.  Apt had stumbled on building it, and I&#8217;m not interested into troubleshooting why or how.  Basically, use ar to extract the contents of the deb, then tar to expand the data, replace the files, tar to put the files back into the data tar file, and ar to rebuild the archive.</p>



<pre class="wp-block-code"><code>ar r cc_783.1-1_i386-apple-darwin.deb debian-binary control.tar.gz data.tar.gz</code></pre>



<p class="wp-block-paragraph">In this case, debian-binary is a text file that simply contains &#8216;2.0&#8217;.  Amazing!</p>



<p class="wp-block-paragraph">The first thing to do is build a manifest of what needs to be built.  I just simply extract all the &#8216;fixed&#8217; source that I&#8217;d used last time to build Darwin, apply patches were needed, and then kick off the process with a darwin-buildall.</p>



<pre class="wp-block-code"><code>ls -l | awk '{print "dir /usr/src/"$9 " all"}' | tail -n +2 | grep -v gdb |grep -v cc- &gt; /tmp/manifest.txt
</code></pre>



<p class="wp-block-paragraph">In this case I skip building the C compiler, as it takes too long, and I&#8217;ve already done it.  If you really want to do it, you can do so at your own leisure.  GDB has issues building, and I haven&#8217;t even begun to tackle them. As you can guess the format of the manifest is pretty simple:</p>



<pre class="wp-block-code"><code>dir /usr/src/CoreOSMakefiles-1/ all
dir /usr/src/Csu-1/ all
dir /usr/src/Libc-1/ all
dir /usr/src/LibcAT-1/ all</code></pre>



<p class="wp-block-paragraph">Debian uses deb&#8217;s to populate a fake root directory in order to cross compile the packages.  This is like installing multiple copies of the operating system, and that is why we use a separate scratch disk.  This can consume several gigabytes when it&#8217;s done.</p>



<p class="wp-block-paragraph">Also this presented the chicken/egg problem with how do you make debs from a system that needs debs?  Thankfully NCommander had done extensive work with Debian / Canonical and was able to fake enough of a &#8216;build-base&#8217; fakery that satisfied the build system just enough to start building stuff.  In this weird way all roads lead back to the first build-base.  Thankfully we live in the future where VMs are fast, and virtual disks are cheap.</p>



<p class="wp-block-paragraph">I then create the /built directory, where the compiled deb&#8217;s will be populated, and copy in my modified compiler Debian into the built directory so that it&#8217;s used in all the compiling.  On the CD-ROM I have 2 selections of deb files, the &#8216;deb&#8217; directory from when I&#8217;d originally done this back in 2017, and the &#8216;fresh&#8217; directory that I&#8217;ve just built.  You can always manually source where the debs some come.</p>



<p class="wp-block-paragraph">Kicking off the build is as simple as running:</p>



<pre class="wp-block-code"><code>darwin-buildall /tmp/manifest.txt /source/fresh /built</code></pre>



<p class="wp-block-paragraph">This will take.. a while.  It&#8217;s a lot of files to copy &amp; expand, and compiling takes a fair bit of a toll on the olde CPU.</p>



<p class="wp-block-paragraph">By default, 118 of the 127 can be built.</p>



<ul class="wp-block-list">
<li>boot-2  the sarld won&#8217;t compile as.. there is nothing to compile. I&#8217;m lost.  Also some driverkit headers didn&#8217;t make it into the packe!</li>



<li>cvs-1 is upset about bison grammar not being in usr local lib?!</li>



<li>flex is also upset about bison grammar locations.</li>



<li>libgpp ppc/ppc-nextstep/_G_config.h missing?!</li>



<li>perl.. should be patched __environ vs _environ</li>



<li>bootstrap-cmds &#8220;multiple definitions of symbol _migcom_untypd_VERS_STRING&#8221;</li>



<li>volfs seems plain broken but subdirecotories okay?</li>



<li>netinfo missing netinfo.defs and headers?! arpa/nameser.h missing (can just touch)</li>
</ul>



<p class="wp-block-paragraph">That just leaves AppleTalk &amp; HFS not building.  Which I believe is period correct.</p>



<p class="wp-block-paragraph">The good news is that the kernel that was built boots up seemingly fine.</p>



<figure class="wp-block-image size-full"><a href="https://archive.org/details/darwin-builder-04-23-2024" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-mach-5.5.png" alt="" class="wp-image-14385" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-mach-5.5.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-mach-5.5-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-mach-5.5-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-mach-5.5-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></a><figcaption class="wp-element-caption">Rhapsody Kernel 5.5</figcaption></figure>



<p class="wp-block-paragraph">The NeXTSTEP, of course is to now setup a new disk image, and see what is involved in booting up!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/04/24/rebuilding-darwin-from-source-part-3-debian-makes-the-world-go-round/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Rebuilding Darwin from source: Part 2 Building the kernel</title>
		<link>https://virtuallyfun.com/2024/04/23/rebuilding-darwin-from-source-part-2-building-the-kernel/</link>
					<comments>https://virtuallyfun.com/2024/04/23/rebuilding-darwin-from-source-part-2-building-the-kernel/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Tue, 23 Apr 2024 23:16:16 +0000</pubDate>
				<category><![CDATA[Darwin]]></category>
		<category><![CDATA[disk images]]></category>
		<category><![CDATA[NeXTSTEP]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[virtual networking]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14358</guid>

					<description><![CDATA[Re-creating the steps from 7 years ago the first phase was to build the Darwin kernel. Like everything else, once you know what is involved, it&#8217;s not all that difficult. But as always finding out the steps to get there &#8230; <a href="https://virtuallyfun.com/2024/04/23/rebuilding-darwin-from-source-part-2-building-the-kernel/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Re-creating the steps from 7 years ago the first phase was to build the Darwin kernel.  Like everything else, once you know what is involved, it&#8217;s not all that difficult. But as always finding out the steps to get there is half the fun!</p>



<p class="wp-block-paragraph">I&#8217;m going to assume if you want to follow along, that you&#8217;ve completed the <a href="https://virtuallyfun.com/2024/04/22/rebuilding-darwin-from-source-part-1-qemu/" target="_blank" rel="noreferrer noopener">first part of this exercise</a>, and you have a Rhapsody DR 2 system up and running.  Due to some issues I&#8217;ve had with creating a lot of files &amp; filesystem corruption, we are going to create and add two more disks to the system. On Qemu we need to add them via the CLI:</p>



<pre class="wp-block-code"><code>qemu-img create -f vmdk source.vmdk 8G<br>qemu-img create -f vmdk scratch.vmdk 8G</code></pre>



<p class="wp-block-paragraph">Adding them to the command line gives us something like this:</p>



<pre class="wp-block-code"><code>qemu -L pc-bios -m 512 ^
-k en-us ^
-rhapsodymouse ^
-hda rhapsody.vmdk ^
-hdb source.vmdk ^
-hdd scratch.vmdk ^
-cdrom darwin-builder-04-23-2024.iso ^
-fda nic.flp ^
-net nic,model=ne2k_pci,vlan=1 ^
-net socket,udp=127.0.0.1:5001,remote=127.0.0.1:5000,vlan=1 ^
-boot c ^
%1 %2 %3 %4 %5 %6 %7</code></pre>



<p class="wp-block-paragraph">Additionally you&#8217;ll also need to download the current &#8216;darwin builder&#8217; ISO that I&#8217;ve put up on <a href="https://sourceforge.net/projects/aapl-darwin/files/Revived/" target="_blank" rel="noreferrer noopener">sourceforge</a>. As of today it is <a href="https://sourceforge.net/projects/aapl-darwin/files/Revived/darwin-builder-04-23-2024.iso/download" target="_blank" rel="noreferrer noopener">darwin-builder-04-23-2024.iso</a></p>



<p class="wp-block-paragraph">Step one is to boot into single user mode.  As we need to prep &amp; format the disks under Darwin before the system starts up.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-phase1-01.png" alt="" class="wp-image-14359" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-01.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-01-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-01-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">We need to check the hard disk, and then create the device names for the third hard disk.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-phase1-02.png" alt="" class="wp-image-14360" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-02.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-02-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-02-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<pre class="wp-block-code"><code>fsck -y /dev/rhd0a
mount -w /
cd /dev
./MAKEDEV hd2</code></pre>



<p class="wp-block-paragraph">Now we need to run the &#8216;disk&#8217; command which will abstract the whole volume creation.  There are numerous flags, but we don&#8217;t need all that many.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-phase1-03.png" alt="" class="wp-image-14361" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-03.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-03-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-03-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<pre class="wp-block-code"><code>disk -i -l 'src' /dev/rhd1a<br>disk -i -l 'scratch' /dev/rhd2a</code></pre>



<p class="wp-block-paragraph">The output scrolls off the screen, so I didn&#8217;t capture it, but you&#8217;ll see all the inodes being created, it&#8217;s a lot of output!</p>



<p class="wp-block-paragraph">With the disks created, we can now shut down the VM</p>



<pre class="wp-block-code"><code>shutdown -h now</code></pre>



<p class="wp-block-paragraph">and then restart Qemu, and let it boot up normally.  We&#8217;ll get to the login screen, login as the root user.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-phase1-04.png" alt="" class="wp-image-14362" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-04.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-04-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-04-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-04-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">The first thing I&#8217;d recommend is to drag the Terminal.app from /System/Administration to the desktop to make it easier to get to.  Rhapsody, unlike NeXTSTEP &amp; OPENSTEP doesn&#8217;t have any dock, as the goal back then was to make Rhapsody look and feel more like Platinum MacOS.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-phase1-05.png" alt="" class="wp-image-14363" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-05.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-05-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-05-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-05-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">The next thing to do is to make the system very insecure by allowing remote root logins.  It&#8217;s just easier to deal with.  You could use sed or just copy the one I provided from the CD-ROM.  </p>



<pre class="wp-block-code"><code>cp /source/ttys /etc</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-phase1-06.png" alt="" class="wp-image-14364" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-06.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-06-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-06-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-phase1-06-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">And with that in place, its easy enough to telnet into the VM so you can copy/paste stuff in and out with ease!</p>



<p class="wp-block-paragraph">You should now be able to verify that all 3 disks are mounted:</p>



<pre class="wp-block-code"><code># mount | grep hd.a
/dev/hd0a on / (local)
/dev/hd1a on /src (local)
/dev/hd2a on /scratch (local)</code></pre>



<p class="wp-block-paragraph">From here it should be very simple to kick off the build process:</p>



<pre class="wp-block-code"><code>/source/phase1.sh</code></pre>



<p class="wp-block-paragraph">And this will kick off the build, recreating all the fun steps I&#8217;d gone through so many years ago.  These projects now are building in the following order:</p>



<ul class="wp-block-list">
<li>kernel-1</li>



<li>driverkit-139.1-1</li>



<li>cc-798</li>



<li>bootstrap_cmds-1</li>



<li>objc-1</li>
</ul>



<p class="wp-block-paragraph">The first phase of the script will unpack both the kernel &amp; driverkit and install their respective header files into the OS.  NeXT a bunch of symlinks are created to link the system to the driverkit.  Next I decided to build the ObjectiveC compiler from 10.0, hoping it&#8217;s more bugfixed and slightly more optimized than what was available back in 1999.  Building the compiler is a little involved, as a good GCC tradition is to be cross compiled first, then re-compile itself with itself, then do that again and verify that the 3rd recompile outputs the same as the second one.  Yes it&#8217;s a thing. Yes it&#8217;s slow.  Yes you are lucky to live in the future, this was really painful back in the day.</p>



<p class="wp-block-paragraph">With the kernel compiled, we can then compile the bootstrap commands, and the objectiveC runtime that is used by the kernel.  Nothing too exciting here.</p>



<p class="wp-block-paragraph">DriverKit however&#8230;.</p>



<p class="wp-block-paragraph">The PCMCIA code was not included in any of the 0.x Darwins, so for laptop enthusiasts you are basically SOL.  As a matter of fact, a lot of weird stuff was pruned out, that either could be &#8216;touched&#8217; or borrowed from the PowerPC port and massaged into place.  Luckily I had at least figured out a simple fix for PCIKernBus.h so at least PCI works.</p>



<p class="wp-block-paragraph">Likewise for the kernel, there was some guessing on the EISA config, which also overlaps ISA, along with having to remove the PCMCIA cardbus .. bus.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="644" height="507" src="/wp-content/uploads/2024/04/rhapsody-apm-crash.png" alt="" class="wp-image-14371" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-apm-crash.png 644w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-apm-crash-300x236.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-apm-crash-381x300.png 381w" sizes="auto, (max-width: 644px) 100vw, 644px" /><figcaption class="wp-element-caption">APM crash</figcaption></figure>



<p class="wp-block-paragraph">I had issues with the APM (Advanced Power Management), another laptopisim I suspect. I had to amputate that.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://github.com/neozeed/Darwin_0.1/blob/e02df2480e6e5b0193fdce53f6431f892c09878c/kernel/machdep/i386/i386_init.c#L281"><img loading="lazy" decoding="async" width="447" height="240" src="/wp-content/uploads/2024/04/cpu-detect-is-a-hack.png" alt="" class="wp-image-14392" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/cpu-detect-is-a-hack.png 447w, https://virtuallyfun.com/wp-content/uploads/2024/04/cpu-detect-is-a-hack-300x161.png 300w" sizes="auto, (max-width: 447px) 100vw, 447px" /></a><figcaption class="wp-element-caption">for testing purposes</figcaption></figure>
</div>


<p class="wp-block-paragraph">Naturally the cpuid code is broken much like early NT (I wonder if both were contributed by intel?), so it doesn&#8217;t detect any half way modern Pentium processors correctly which causes it to fall all the way back to the i386, which unfortunately, Rhapsody is compiled as 486 (remember NeXTSTEP had fat binaries allowing you to recompile for different processors and ship a single binary that can be &#8216;lipo&#8217;d into the appropriate one for the host).  So being degraded to a 386 means nothing works.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="644" height="507" src="/wp-content/uploads/2024/04/rhapsody-bad-cpu-type.png" alt="" class="wp-image-14372" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-bad-cpu-type.png 644w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-bad-cpu-type-300x236.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-bad-cpu-type-381x300.png 381w" sizes="auto, (max-width: 644px) 100vw, 644px" /><figcaption class="wp-element-caption">bad CPU type in library!</figcaption></figure>



<p class="wp-block-paragraph">yay.</p>



<p class="wp-block-paragraph">Luckily patching the cpuid was pretty simple just force it always to be a Pentium.  It is 1999 afterall.</p>



<p class="wp-block-paragraph">I&#8217;ve done my best to make this a single script to run, and all being well you&#8217;ll get something that looks like errors, but it should be fine?!</p>



<pre class="wp-block-code"><code>System/Library/Frameworks/System.framework/Versions/B/Headers/bsd/i386/table.h
System/Library/Frameworks/System.framework/Versions/B/Headers/bsd/i386/types.h
System/Library/Frameworks/System.framework/Versions/B/Headers/bsd/i386/user.h
System/Library/Frameworks/System.framework/Versions/B/Headers/bsd/i386/vmparam.h
private/
private/dev/
private/dev/MAKEDEV
private/tftpboot/
private/tftpboot/mach_kernel
mach_kernel
tar: private/dev: Could not change access and modification times: Permission denied
tar: private/dev: Cannot change mode to 0755: Permission denied
tar: private/dev: Cannot chown to uid 0 gid 0: Permission denied
tar: Error exit delayed from previous errors</code></pre>



<p class="wp-block-paragraph">A quick look around shows that there is tgz files indicating that things have been compiled.  I did backup the old original kernel as &#8220;rhapsody-gcc.tgz&#8221; in case you ever need it.  Can&#8217;t imagine why but who knows?</p>



<pre class="wp-block-code"><code>qemu:13# ls -l /usr/src/*.tgz
-rw-r--r--  1 root  wheel   173706 Apr 23 15:25 /usr/src/bootstrap_cmds.bin.tgz
-rw-r--r--  1 root  wheel  2184460 Apr 23 15:33 /usr/src/cc-798-bin.tgz
-rw-r--r--  1 root  wheel  2747289 Apr 23 15:36 /usr/src/driverkit-kern-bin.tgz
-rw-r--r--  1 root  wheel  1264957 Apr 23 15:26 /usr/src/kernel-driverkit-hdrs.tgz
-rw-r--r--  1 root  wheel   116343 Apr 23 15:26 /usr/src/objc-bin.tgz
-rw-r--r--  1 root  wheel  2173005 Apr 23 15:26 /usr/src/rhapsody-gcc.tgz
qemu:14# ls -l /mach_kernel*
-r--r--r--  2 root  wheel  1459520 Apr 23 15:36 /mach_kernel
-r--r--r--  1 root  wheel  1404116 Apr 23 15:38 /mach_kernel-rhapsody</code></pre>



<p class="wp-block-paragraph">You should now be able to reboot into the kernel that you&#8217;d compiled!</p>



<p class="wp-block-paragraph"><a href="/2024/04/24/rebuilding-darwin-from-source-part-3-debian-makes-the-world-go-round/" target="_blank" rel="noreferrer noopener">Next up is Phase 2</a>, where we compile the tools to enter the dark magic that is the Debian build system. Yes, you read that right, Apple/NeXT was all in on Debian.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/04/23/rebuilding-darwin-from-source-part-2-building-the-kernel/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Rebuilding Darwin from source: Part 1 Qemu</title>
		<link>https://virtuallyfun.com/2024/04/22/rebuilding-darwin-from-source-part-1-qemu/</link>
					<comments>https://virtuallyfun.com/2024/04/22/rebuilding-darwin-from-source-part-1-qemu/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Mon, 22 Apr 2024 17:43:42 +0000</pubDate>
				<category><![CDATA[Darwin]]></category>
		<category><![CDATA[mingw]]></category>
		<category><![CDATA[NeXTSTEP]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[Win32]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14278</guid>

					<description><![CDATA[Back in the old old.. It&#8217;s hard to believe it&#8217;s been 7 years ago since I reproduced Ncommander&#8216;s adventure in building the Mach kernel from Darwin 0.1 sources that had been found years ago. At one point we&#8217;d managed to &#8230; <a href="https://virtuallyfun.com/2024/04/22/rebuilding-darwin-from-source-part-1-qemu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Back in the old old..</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/04/7-years-ago-darwin.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="825" height="545" src="/wp-content/uploads/2024/04/7-years-ago-darwin.png" alt="" class="wp-image-14279" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/7-years-ago-darwin.png 825w, https://virtuallyfun.com/wp-content/uploads/2024/04/7-years-ago-darwin-300x198.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/7-years-ago-darwin-768x507.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/7-years-ago-darwin-454x300.png 454w" sizes="auto, (max-width: 825px) 100vw, 825px" /></a><figcaption class="wp-element-caption">7 years ago!</figcaption></figure>



<p class="wp-block-paragraph">It&#8217;s hard to believe it&#8217;s been 7 years ago since I reproduced <a href="https://www.youtube.com/@NCommander" target="_blank" rel="noreferrer noopener">Ncommander</a>&#8216;s adventure in building the Mach kernel from Darwin 0.1 sources that had been found years ago.  At one point we&#8217;d managed to build enough of Darwin to do a dump/restore onto a new disk image, and have a mostly built Darwin system save for a hand full of files.</p>



<p class="wp-block-paragraph">Time goes on by, and memories fade, and I thought it&#8217;d be worth going over the adventure, yet again.  Just as it was true back then, I thought I&#8217;d reproduce the same setup that I&#8217;d been using back then.  Qemu was a new and exciting thing back then, and </p>



<p class="wp-block-paragraph">the Disk driver is <em>VERY</em> picky and honestly ancient Qemu is a pretty solid option to emulate NeXTSTEP/OPENSTEP/Rhapsody with some patches to both 0.8 &amp; 0.9 by Michael Engel, which change a nested interrupt and add support for a busmouse, as the PS/2 mouse doesn&#8217;t work for some unknown reason.  I know many are scared of old Qemu, but the disk support is pretty solid and the CPU recompilation is very fast, so having to rely on MinGW v3 isn&#8217;t so terrible.</p>



<p class="wp-block-paragraph">While I had hid away a lot of these resources on <a href="https://archive.org/details/qemuwin32-nextstep-mingw32" target="_blank" rel="noreferrer noopener">archive.org</a>, I thought it was best to just go back to the oldest post I had where I had painfully documented how to compile Qemu and get it working with <a href="https://web.archive.org/web/20061113122333/http://forums.bsdnexus.com/viewtopic.php?pid=9344" target="_blank" rel="noreferrer noopener">NeXTSTEP, back on BSDnexus</a>. I&#8217;m so glad I took the time so long ago to not only write it down, and add screenshots, but also tag the version numbers.  Software drift, especially free software can be so difficult to pin down, and it&#8217;s nice to be able to return to a known good value.  I went ahead and placed the recreated toolchain <a href="https://archive.org/details/min-gw-3-installed">over on archive.org</a>.</p>



<p class="wp-block-paragraph">Rhapsody is a weird OS, in that NeXT had kind of given up on the OS market after their NeXT RISC Workstation had basically died with the 88k, and even their early abandoned PowerPC 601 aka <a href="https://github.com/neozeed/Darwin_0.1/blob/main/kernel/mach/machine.h#L237" target="_blank" rel="noreferrer noopener">MC98000/98601</a> port.  Apple had left a few of the <a href="https://github.com/neozeed/Darwin_0.1/tree/main/architecture/changelog" target="_blank" rel="noreferrer noopener">changelogs</a>, in the source code.  It&#8217;s very interesting stuff!  I guess to go off on my own tangent NeXT was just too early, the cube with it&#8217;s Unix &amp; magnetic optical media and great audio DSP capabilities was just too ahead of the curve.  What the cube couldn&#8217;t pull off in 1988, the iMac and OS X sure did in 2001.</p>



<p class="wp-block-paragraph">I also added UDP support to this Qemu so I could use the <a href="/2024/03/29/looking-at-unixware-7-1-1-on-vmware-qemu-yet-again/" target="_blank" rel="noreferrer noopener">HecnetNT bridge trick</a> giving me the ability to telnet/ftp into the VM greatly reducing my pain.  Back in the day I had used NFS and the network slirp redirection.  But I like having direct access so much more!</p>



<p class="wp-block-paragraph">Rhapsody throws up yet another fun &#8216;road block&#8217; in that the mouse buttons map backwards for some reason.  It&#8217;s a trivial fix in the source code, but I made it a runtime option in case I needed or wanted to run NeXTSTEP.  And it was a good thing, as I did need to find the NXLock.h file for building one part of Darwin.</p>



<p class="wp-block-paragraph">When building Darwin, I started with the last x86 version of NeXTSTEP that was available, and that was <a href="https://winworldpc.com/product/mac-os-x/rhapsody"></a>Apple &#8221;Rhapsody&#8221; / Titan1U x86 Developer Release 2. My thinking at the time and still is that the closer you can get your build to whatever they were using as &#8216;current&#8217; the easier this will be.</p>



<p class="wp-block-paragraph">Rhapsody can support an 8GB disk, so let&#8217;s go with that.  This always has an issue with people that try much larger, and just fail, so for my sake and yours let&#8217;s just go with 8.</p>



<pre class="wp-block-code"><code>qemu-img.exe create -f vmdk rhapsody.vmdk 8G</code></pre>



<p class="wp-block-paragraph">And to simply start off the installer:</p>



<pre class="wp-block-code"><code>qemu -L pc-bios -m 128 ^
-k en-us ^
-rhapsodymouse ^
-hda rhapsody.vmdk ^
-cdrom rhapsody_dr2_x86.iso ^
-fda rhapsody_dr2_x86_InstallationFloppy.img ^
-boot a</code></pre>



<p class="wp-block-paragraph">You may be wondering, why only use 128MB of RAM?  Well there is a bug in the shipping Rhapsody kernel that prevents booting on machines with more than 192? MB of RAM. Naturally, once we are to the point of building our own kernels this won&#8217;t be a problem but for now we are limited.</p>



<p class="wp-block-paragraph">The bootloader will give us a few seconds to do anything fancy, I just hit -v so I always have the verbose boot.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-01.png" alt="" class="wp-image-14283" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-01.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-01-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-01-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">From here it&#8217;s just a few options to go thru the installer</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-02.png" alt="" class="wp-image-14284" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-02.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-02-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-02-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">And a disk change is required</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-03.png" alt="" class="wp-image-14285" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-03.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-03-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-03-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">CONTROL+ALT+2 will bring up the monitor prompt, where we can change the disk</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-04.png" alt="" class="wp-image-14286" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-04.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-04-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-04-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">CONTROL+ALT+1 will return us to the console. Now we have to go through all the SCSI cards, and kind of compatible IDE cards</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-05.png" alt="" class="wp-image-14287" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-05.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-05-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-05-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">Further..</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-06.png" alt="" class="wp-image-14288" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-06.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-06-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-06-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">Further still&#8230;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-07.png" alt="" class="wp-image-14289" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-07.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-07-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-07-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">And how select the Primary/Secondary(DUAL) EIDE/ATAPI Device Controller (v5.01)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-08.png" alt="" class="wp-image-14290" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-08.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-08-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-08-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">We only need the one driver, so we&#8217;re good to go!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-09.png" alt="" class="wp-image-14291" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-09.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-09-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-09-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">Continuing onwards will now start the kernel, along with a change to graphical mode.  Just like a NeXT!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-10.png" alt="" class="wp-image-14292" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-10.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-10-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-10-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Now we can confirm again we want to install</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-11.png" alt="" class="wp-image-14293" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-11.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-11-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-11-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">As you can see there is our hard disk!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-12.png" alt="" class="wp-image-14294" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-12.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-12-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-12-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">In the future we don&#8217;t need to dual boot so, just give it the entire disk.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-13.png" alt="" class="wp-image-14295" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-13.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-13-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-13-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">A few more 1&#8217;s and we are finally installing!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-14.png" alt="" class="wp-image-14296" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-14.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-14-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-14-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Trust me it&#8217;s fast on Qemu!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-15.png" alt="" class="wp-image-14297" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-15.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-15-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-15-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">And just like that, we&#8217;ve completed the first part of the install.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-16.png" alt="" class="wp-image-14299" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-16.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-16-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-16-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">You can use CONTROL+ALT+2 to toggle back to the monitor and type in</p>



<p class="wp-block-paragraph">eject fda</p>



<p class="wp-block-paragraph">to eject the floppy, then it&#8217;s CONTROL+ALT+1 to return to the display and have it reboot.  Qemu won&#8217;t try to boot to the hard disk, and with no disk in the drive, it&#8217;ll hang at the BIOS.  Now is a good time to close Qemu and backup the hard disk.  Mostly because I hate repeating this stuff.</p>



<p class="wp-block-paragraph">To try to make this a bit easier, I&#8217;ve made a f<a href="https://archive.org/details/nic_20240423" target="_blank" rel="noreferrer noopener">loppy disk with the NE2000 driver and updated kernel in one plac</a>e where they can be injected via single user mode. A simple enough config file:</p>



<pre class="wp-block-code"><code>qemu -L pc-bios -m 128 ^
-k en-us ^
-rhapsodymouse ^
-hda rhapsody.vmdk ^
-cdrom rhapsody_dr2_x86.iso ^
-fda <a href="https://archive.org/details/nic_20240423" target="_blank" rel="noreferrer noopener">nic.flp</a> ^
-boot c</code></pre>



<p class="wp-block-paragraph">Type in -s for SINGLE USER MODE.  This is where a lot of Unix problems got solved in the old days</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="427" src="/wp-content/uploads/2024/04/rhapsody-install-20.png" alt="" class="wp-image-14302" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-20.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-20-300x177.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-20-500x296.png 500w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>



<p class="wp-block-paragraph">It&#8217;s a little tricky as this does involve typing.  As instructed we need to check the hard disk prior to mounting it read/write</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-21.png" alt="" class="wp-image-14303" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-21.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-21-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-21-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">run the commands:</p>



<pre class="wp-block-code"><code>fsck -y /dev/rhd0a
mount -w /</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-22.png" alt="" class="wp-image-14304" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-22.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-22-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-22-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Now we can mount the floppy disk</p>



<pre class="wp-block-code"><code>mkdir /mnt
mount /dev/fd0a /mnt
ls /mnt</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-23.png" alt="" class="wp-image-14305" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-23.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-23-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-23-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">I&#8217;ve included both the kernel &amp; NE2000 driver in one file, and JUST the NE2000 driver in the other.  For my sake I use the first one, update.tar.gz as I wanted to use the newer kernel ASAP.  tar -zxvf didn&#8217;t want to run, so I did a rather awkward version to achieve the same thing.</p>



<pre class="wp-block-code"><code>cat /mnt/update.tar.gz | gzip -dc | tar -xvf -</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-24.png" alt="" class="wp-image-14306" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-24.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-24-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-24-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">With the files in place, you can now shut down the system with a simple</p>



<pre class="wp-block-code"><code>shutdown -h now</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-25.png" alt="" class="wp-image-14307" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-25.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-25-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-25-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Once more again, I&#8217;d shut down the emulator, and backup the hard disk. If anything goes wrong you can restore your backups at any phase, at least saving some time!</p>



<p class="wp-block-paragraph">Next is the graphical install.  In this case I use the hecnet bridge to give full access, you can setup with the slirp driver with a simple &#8220;-net user&#8221; but it doesn&#8217;t matter at the moment  Since I opted for the newer kernel, I can take advantage of the 512MB RAM.</p>



<pre class="wp-block-code"><code>qemu -L pc-bios -m 512 ^
-k en-us ^
-rhapsodymouse ^
-hda rhapsody.vmdk ^
-cdrom rhapsody_dr2_x86.iso ^
-fda rhapsody_dr2_x86_InstallationFloppy.img ^
-net nic,model=ne2k_pci,vlan=5 ^
-net socket,udp=0.0.0.0:5001,remote=127.0.0.1:5000 ^
-boot c ^</code></pre>



<p class="wp-block-paragraph">Booting Rhapsody</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-30.png" alt="" class="wp-image-14308" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-30.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-30-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-30-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Now we have to setup the hardware.  It should be somewhat straight forward, first we start with the monitor.  The mouse should be working although I find that I have to move slowly.  Sorry it tracks weird on real hardware too.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-31.png" alt="" class="wp-image-14309" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-31.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-31-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-31-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">The Cirrus Logic GD5446 should be detected automatically, I just go with the default 1MB</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-32.png" alt="" class="wp-image-14310" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-32.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-32-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-32-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Next under the mice, select the PS/2 mouse and remove it</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-33.png" alt="" class="wp-image-14311" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-33.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-33-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-33-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">This leaves us with the Bus Mouse driver.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-34.png" alt="" class="wp-image-14312" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-34.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-34-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-34-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Under the network tab, the NE2000 should be automatically detected.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-35.png" alt="" class="wp-image-14313" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-35.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-35-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-35-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">On the last tab, I make a habit of removing the Parallel port freeing IRQ 7, in case I wanted it for something else.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-36.png" alt="" class="wp-image-14314" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-36.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-36-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-36-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Back to the summary, we now have Cirrus Logic video, NE2k networking, with no SCSI, no Audio.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-37.png" alt="" class="wp-image-14315" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-37.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-37-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-37-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">With the config saved, now we can just install as is.  I un-installed Japanese, but it doesn&#8217;t matter.  You absolutely need the Development Tools, so may as well go with eveything.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-38.png" alt="" class="wp-image-14316" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-38.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-38-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-38-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">The installation only takes a few minutes and we are ready to reboot</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-39.png" alt="" class="wp-image-14317" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-39.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-39-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-39-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">The kernel will now shut down.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-39b.png" alt="" class="wp-image-14318" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-39b.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-39b-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-39b-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">Once more again this is a great time to make another backup of the hard disk.  At this point this is a great backup to save, as we&#8217;ve installed the OS, and selected drivers, in the next reboot we&#8217;ll be personalizing the operating system.</p>



<p class="wp-block-paragraph">We can re-run the last config once the disk has been saved.  We&#8217;ll be greeted with a message that the Server isn&#8217;t responding.  Answer YES to continue without networking.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="507" src="/wp-content/uploads/2024/04/rhapsody-install-40.png" alt="" class="wp-image-14323" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-40.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-40-300x237.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-40-380x300.png 380w" sizes="auto, (max-width: 642px) 100vw, 642px" /></figure>



<p class="wp-block-paragraph">From here we are in the Setup Assistant, taking a nod from MacOS 8</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-41.png" alt="" class="wp-image-14324" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-41.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-41-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-41-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-41-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">I use USA keyboards. The best keyboards!  I touch type so I don&#8217;t have to deal with weird layouts.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-42.png" alt="" class="wp-image-14325" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-42.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-42-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-42-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-42-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Specify for a LAN connection</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-43.png" alt="" class="wp-image-14326" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-43.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-43-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-43-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-43-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">There is no DHCP support so specify a manual IP address.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-44.png" alt="" class="wp-image-14327" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-44.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-44-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-44-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-44-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">The default stuff is just wrong.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-45.png" alt="" class="wp-image-14328" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-45.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-45-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-45-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-45-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">On my LAN this is good enough.  DONT add a router.  It&#8217;ll just confuse it.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-46.png" alt="" class="wp-image-14329" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-46.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-46-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-46-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-46-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">We don&#8217;t have or want NetInfo.  This would be the server to give out IP addresses, and authentication.  We don&#8217;t need it!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-47.png" alt="" class="wp-image-14330" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-47.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-47-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-47-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-47-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Leave the DNS servers blank</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-48.png" alt="" class="wp-image-14331" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-48.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-48-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-48-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-48-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">You can setup any location, it doesn&#8217;t matter.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-49.png" alt="" class="wp-image-14332" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-49.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-49-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-49-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-49-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Likewise, with NTP, turn it off.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-50.png" alt="" class="wp-image-14321" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-50.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-50-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-50-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-50-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">We will then get the option to set the date/time manually.  The default time is far too old and it&#8217;ll break stuff.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-51.png" alt="" class="wp-image-14322" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-51.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-51-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-51-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-51-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Next up is user accounts.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-52.png" alt="" class="wp-image-14335" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-52.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-52-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-52-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-52-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">I always make local accounts.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-53.png" alt="" class="wp-image-14336" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-53.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-53-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-53-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-53-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Come up with some creative name</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-54.png" alt="" class="wp-image-14337" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-54.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-54-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-54-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-54-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">and a password</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-55.png" alt="" class="wp-image-14338" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-55.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-55-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-55-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-55-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">I don&#8217;t have it doing any automatic login.  You can if you want, it&#8217;s all up to you, this one doesn&#8217;t matter.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-56.png" alt="" class="wp-image-14339" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-56.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-56-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-56-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-56-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">Next is an Administrator password</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-57.png" alt="" class="wp-image-14340" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-57.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-57-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-57-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-57-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">And now we can apply our changes.  </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-58.png" alt="" class="wp-image-14341" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-58.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-58-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-58-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-58-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">It takes seconds!</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-59.png" alt="" class="wp-image-14342" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-59.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-59-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-59-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-59-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /></figure>



<p class="wp-block-paragraph">And now we&#8217;ere done.  You may want yet another backup as this is tedious!</p>



<p class="wp-block-paragraph">With the final configured backup in hand, now we can boot back one more time, and now we&#8217;re in SVGA mode! </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-70.png" alt="" class="wp-image-14344" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-70.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-70-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-70-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-70-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /><figcaption class="wp-element-caption">Rhapsody DR2 Login Screen</figcaption></figure>



<p class="wp-block-paragraph">Logging in as root will give me the desktop</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="627" src="/wp-content/uploads/2024/04/rhapsody-install-72.png" alt="" class="wp-image-14345" srcset="https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-72.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-72-300x235.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-72-768x600.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/04/rhapsody-install-72-384x300.png 384w" sizes="auto, (max-width: 802px) 100vw, 802px" /><figcaption class="wp-element-caption">Desktop</figcaption></figure>



<p class="wp-block-paragraph">And there we are, all installed.</p>



<p class="wp-block-paragraph">For anyone brave enough to have read all of this, but wants the quick and easy version, it&#8217;s up on <a href="https://archive.org/details/rhapsody-install-ready-to-configure" target="_blank" rel="noreferrer noopener">archive.org</a>!</p>



<p class="wp-block-paragraph">In <a href="/2024/04/23/rebuilding-darwin-from-source-part-2-building-the-kernel/" target="_blank" rel="noreferrer noopener">part two I&#8217;ll pick up</a> with the source CD-ROM I&#8217;ve prepared, so we can start compiling Darwin!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/04/22/rebuilding-darwin-from-source-part-1-qemu/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Looking at UnixWare 7.1.1 on VMware &#038; Qemu yet again!</title>
		<link>https://virtuallyfun.com/2024/03/29/looking-at-unixware-7-1-1-on-vmware-qemu-yet-again/</link>
					<comments>https://virtuallyfun.com/2024/03/29/looking-at-unixware-7-1-1-on-vmware-qemu-yet-again/#comments</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Fri, 29 Mar 2024 13:48:47 +0000</pubDate>
				<category><![CDATA[networking]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[SYSV]]></category>
		<category><![CDATA[UnixWare]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[VMWare]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14194</guid>

					<description><![CDATA[Same old OS, same old problems. The UnixWare 7.1.1 install program has a date &#38; time Y2k problem. And this always ends in whatever licensing you give it to install will expire and be nullified. Luckily this time while re-installing &#8230; <a href="https://virtuallyfun.com/2024/03/29/looking-at-unixware-7-1-1-on-vmware-qemu-yet-again/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Same old OS, same old problems.</h2>



<figure class="wp-block-image size-full"><a href="https://archive.org/details/UnixWare71" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="1024" height="768" src="/wp-content/uploads/2024/03/UnixWare_7.1.1_box-jpg.webp" alt="" class="wp-image-14195" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare_7.1.1_box-jpg.webp 1024w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare_7.1.1_box-300x225.webp 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare_7.1.1_box-768x576.webp 768w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare_7.1.1_box-400x300.webp 400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">My UnixWare 7.1.1 box</figcaption></figure>



<p class="wp-block-paragraph">The UnixWare 7.1.1 install program has a date &amp; time Y2k problem.  And this always ends in whatever licensing you give it to install will expire and be nullified.  Luckily this time while re-installing on VMware I saw if you defer the license on install, It&#8217;ll grant you a temporary eval license.  It&#8217;s not going to matter as it&#8217;ll immediately expire, but it get&#8217;s us past the install.</p>



<p class="wp-block-paragraph">Qemu however let&#8217;s you rev up the time machine and specify a starting time</p>



<pre class="wp-block-code"><code>-rtc base=1999-09-29T15:00:00</code></pre>



<p class="wp-block-paragraph"> As simple as that.  I found for installing with Qemu 8.0 (Latest win32) binary it worked well enough like this:</p>



<pre class="wp-block-code"><code>"c:\Program Files\qemu\qemu-system-x86_64.exe" ^
-m 1024 ^
-hda UnixWare711.vmdk ^
-cdrom SCO_UnixWare711.iso ^
-net nic,model=pcnet ^
-rtc base=2010-09-29T15:00:00</code></pre>



<p class="wp-block-paragraph">Installation in a stock boring VM goes fine, there is built in support for the AMD PCnet driver, so things &#8216;just work&#8217;.  And then on the VMware reboot it never launches X11.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="802" height="657" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu.png" alt="" class="wp-image-14198" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-300x246.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-768x629.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-366x300.png 366w" sizes="auto, (max-width: 802px) 100vw, 802px" /></a><figcaption class="wp-element-caption">Starting Desktop works fine on Qemu</figcaption></figure>



<p class="wp-block-paragraph">Under Qemu, I&#8217;m greeted by CDE and the login page.  On VMware however&#8230;</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-no-graphical-console.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="722" height="465" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-no-graphical-console.png" alt="" class="wp-image-14197" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-no-graphical-console.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-no-graphical-console-300x193.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-no-graphical-console-466x300.png 466w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a><figcaption class="wp-element-caption">Starting Desktop never starts</figcaption></figure>



<p class="wp-block-paragraph">I know t his used to work on VMware, but there is some regression in the VESA video driver.  The fix was to use scoadmin and knock the video settings down to stock VGA.  Luckily I have an X server running on Windows, so I could just export the display and set it up.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Video-Configuration-VESA-VBE-3.0.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="802" height="657" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Video-Configuration-VESA-VBE-3.0.png" alt="" class="wp-image-14200" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Video-Configuration-VESA-VBE-3.0.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Video-Configuration-VESA-VBE-3.0-300x246.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Video-Configuration-VESA-VBE-3.0-768x629.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Video-Configuration-VESA-VBE-3.0-366x300.png 366w" sizes="auto, (max-width: 802px) 100vw, 802px" /></a><figcaption class="wp-element-caption">Video Configuration on Qemu</figcaption></figure>



<p class="wp-block-paragraph">Whereas I had to set VMware to VGA:</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Video-Configuration-VGA.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="642" height="545" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Video-Configuration-VGA.png" alt="" class="wp-image-14201" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Video-Configuration-VGA.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Video-Configuration-VGA-300x255.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Video-Configuration-VGA-353x300.png 353w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a><figcaption class="wp-element-caption">Video Configuration on VMware</figcaption></figure>



<p class="wp-block-paragraph">And one more reboot, and I was at least given a graphical console:</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-set-to-VGA-mode.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="642" height="545" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-set-to-VGA-mode.png" alt="" class="wp-image-14202" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-set-to-VGA-mode.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-set-to-VGA-mode-300x255.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-set-to-VGA-mode-353x300.png 353w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a><figcaption class="wp-element-caption">Now able to login to VMware graphically</figcaption></figure>



<h2 class="wp-block-heading">Inputting the licenses</h2>



<p class="wp-block-paragraph">Being a commercial Unix from back in the day, it relies on License Numbers, and activation codes to actually use the software.  I have the box, so I have <a href="/wp-content/uploads/2024/03/totally-legit-unixware-licensing-jpg.webp" target="_blank" rel="noreferrer noopener">codes</a> so yay me.  Post install, I could remove the expired licenses, and then input the ones that were in the box.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-licensed-qemuw7-on-Qemu.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="802" height="657" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-licensed-qemuw7-on-Qemu.png" alt="" class="wp-image-14199" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-licensed-qemuw7-on-Qemu.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-licensed-qemuw7-on-Qemu-300x246.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-licensed-qemuw7-on-Qemu-768x629.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-licensed-qemuw7-on-Qemu-366x300.png 366w" sizes="auto, (max-width: 802px) 100vw, 802px" /></a></figure>



<p class="wp-block-paragraph">These are 5 user licenses, just enough to show off the system, I suppose: The advanced features of the day are nothing special these days, but it&#8217;s nice to have the PCC derived compiler, if not to compile GCC but more so for SYSV code from back in the day.</p>



<h2 class="wp-block-heading">Networking</h2>



<p class="wp-block-paragraph">Networking for VMware is straightforward, I use the NAT interface VMnet8 that is installed by default, selecting a valid Tcp/IP address on the interface range gives me not only full internet access, but also allows me to easily telnet into the VM.</p>



<p class="wp-block-paragraph">Qemu however&#8230;</p>



<pre class="wp-block-code"><code>"c:\Program Files\qemu\qemu-system-x86_64.exe" ^
-m 1024 ^
-hda UnixWare711.vmdk ^
-net nic,model=pcnet ^
-net user,hostfwd=tcp::42323-:23</code></pre>



<p class="wp-block-paragraph">I had been using the user mode SLiRP code for ages, but after all the <a href="http://2024/03/25/using-mit-pc-ip-with-slirp-a-virtual-cisco-router/" target="_blank" rel="noreferrer noopener">MIT PC/IP fun</a>, I was thinking I bet modern Qemu supports UDP transport for network traffic, and that it&#8217;d just integrate with <a href="https://sourceforge.net/projects/hecnetnt/" target="_blank" rel="noreferrer noopener">HecnetNT</a> just fine.  And it does!</p>



<pre class="wp-block-code"><code>"c:\Program Files\qemu\qemu-system-x86_64.exe" ^
-m 1024 ^
-hda UnixWare711.vmdk ^
-net nic,model=pcnet,netdev=hecnet ^
-netdev socket,id=hecnet,udp=127.0.0.1:5001,localaddr=127.0.0.1:5000</code></pre>



<p class="wp-block-paragraph">Configuring the HetnetNT bridge was simple, as always make sure you have Wireshark/pcapng installed and simply run ethlist to get the list of interfaces:</p>



<pre class="wp-block-code"><code>D:\qemu>ethlist.exe
Network devices:
  Number       NAME                                     (Description)
  0  \Device\NPF_{E79F6278-3E7E-4547-955A-2080A0473AD6} (Local Area Connection* 8)
  1  \Device\NPF_{1D960E08-2A3A-43F7-BAD6-21FCB466717B} (Local Area Connection* 7)
  2  \Device\NPF_{98053A85-B049-45A0-AC33-961E2C136FCA} (Local Area Connection* 6)
  3  \Device\NPF_{BFA868ED-E508-4436-B085-EC815C4C544C} (LoopBack)
  4  \Device\NPF_{C75EAF23-0FA3-433B-B271-9CB0F5EB92D0} (VMware Network Adapter VMnet8)
  5  \Device\NPF_{B615DE21-AEC3-4347-916C-332AC4A4DA70} (VMware Network Adapter VMnet1)
  6  \Device\NPF_{82E5A370-6D3D-40AD-A9D5-C4E0E0C50F0D} (Ethernet)</code></pre>



<p class="wp-block-paragraph">And then create a simple <code>bridge.conf</code> file with the VMnet8 adapter and the UDP pariing to talk to Qemu:</p>



<pre class="wp-block-code"><code>&#91;bridge]
update 127.0.0.1:5000
vmnet8 \Device\NPF_{C75EAF23-0FA3-433B-B271-9CB0F5EB92D0}


&#91;tcpip]
update
vmnet8</code></pre>



<p class="wp-block-paragraph">Then launch the bridge program listening on port 5001:</p>



<pre class="wp-block-code"><code>D:\qemu>hecnet.exe 5001
Config filename: bridge.conf
Adding router ''update''. 0100007f:5000
Opening pcap \Device\NPF_{C75EAF23-0FA3-433B-B271-9CB0F5EB92D0}
Adding router ''vmnet8''. 00000000:0
Host table:
0: update 127.0.0.1:5000 (Rx: 0 Tx: 0 (Drop rx: 0)) Active: 1 Throttle: 0(000)
1: vmnet8 0.0.0.0:0 (Rx: 0 Tx: 0 (Drop rx: 0)) Active: 1 Throttle: 0(000)
Hash of known destinations:
Adding new hash entry &#91;52:54:00:12:34:56]. Port is 0
Adding new hash entry &#91;00:50:56:c0:00:08]. Port is 1
Adding new hash entry &#91;00:50:56:f1:dd:d0]. Port is 1
Adding new hash entry &#91;00:0c:29:9a:2b:fb]. Port is 1</code></pre>



<p class="wp-block-paragraph">It&#8217;s a little bit more involved to setup as we have to link the 2 programs via UDP, but I can say it&#8217;s totally worth it.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2024/03/Designer-40.png"><img loading="lazy" decoding="async" width="1024" height="585" src="/wp-content/uploads/2024/03/Designer-40-1024x585.png" alt="" class="wp-image-14204" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/Designer-40-1024x585.png 1024w, https://virtuallyfun.com/wp-content/uploads/2024/03/Designer-40-300x171.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/Designer-40-768x439.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/03/Designer-40-1536x878.png 1536w, https://virtuallyfun.com/wp-content/uploads/2024/03/Designer-40-500x286.png 500w, https://virtuallyfun.com/wp-content/uploads/2024/03/Designer-40.png 1792w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">&#8220;It just works!&#8221; &#8211; Sydney</figcaption></figure>



<p class="wp-block-paragraph">I can now easily FTP files into Qemu, and of course telnet as much as I want to.  I don&#8217;t see why NFS wouldn&#8217;t work either.</p>



<p class="wp-block-paragraph">Which brings us to the bigger elephant in the room, which one is &#8216;worth the squeeze&#8217;?!</p>



<p class="wp-block-paragraph">I thought it&#8217;d be fun to do a totally unfair CPU intensive thing like building GCC.  I would do a quick stage 3 compile blindly running this:</p>



<pre class="wp-block-code"><code>./configure --host=i386-sysv4 --target=i386-sysv4 --prefix=/usr/local/gcc-2.5.8
make
make stage1
make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O"
make stage2
make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
make stage3
make CC="stage3/xgcc -Bstage3/" CFLAGS="-g -O"</code></pre>



<p class="wp-block-paragraph">This way we can just look at the timestamps between completed releases.  It does build C++ &amp; ObjectiveC as well, and compared to machines from 1999 this is amazing!</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><code>-rwxr-xr-x 1 neozeed other 3495688 Mar 29 12:42 ./cc1<br>-rwxr-xr-x 1 neozeed other 2646888 Mar 29 12:37 ./stage1/cc1<br>-rwxr-xr-x 1 neozeed other 3495720 Mar 29 12:39 ./stage2/cc1<br>-rwxr-xr-x 1 neozeed other 3495688 Mar 29 12:40 ./stage3/cc1</code></p>



<p class="wp-block-paragraph">Qemu timing</p>



<p class="wp-block-paragraph"><code>-rwxr-xr-x    1 neozeed  other       3884076 Mar 28 20:12 ./cc1<br>
-rwxr-xr-x    1 neozeed  other       2647116 Mar 28 20:11 ./stage1/cc1<br>
-rwxr-xr-x    1 neozeed  other       3884124 Mar 28 20:11 ./stage2/cc1<br>
-rwxr-xr-x    1 neozeed  other       3884076 Mar 28 20:12 ./stage3/cc1
</code></p>
<cite>VMware timing</cite></blockquote>



<p class="wp-block-paragraph">As you can see VMware is substantially faster when it comes to computation.  This shouldn&#8217;t come to anyone as any surprise.  And this isn&#8217;t a fair competition, but it does show that you can stage GCC on Qemu just fine, so that&#8217;s actually great!</p>



<p class="wp-block-paragraph">Now let&#8217;s mix in some more nonsense, I have a Merge license so let&#8217;s try it!  First off it really wants Windows 95 from CD-ROM.  It will not accept anything else.  I have a hacked-up copy of the floppy version of Windows 95 on CD-ROM, and it accepted that just fine, it appears to search through.CAB files looking for files to setup it&#8217;s preferred environment.  I&#8217;m not all that familiar with the whole thing as PC&#8217;s are cheap, and virtual machines are even cheaper!</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-Setup.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="642" height="545" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-Setup.png" alt="" class="wp-image-14210" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-Setup.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-Setup-300x255.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-Setup-353x300.png 353w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a><figcaption class="wp-element-caption">Merge setup on VMware</figcaption></figure>



<p class="wp-block-paragraph">After the setup completed, I thought I&#8217;d try my <a href="https://github.com/neozeed/sarien286" target="_blank" rel="noreferrer noopener">Sarien 286/386</a> ports.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-no-DPMI.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="642" height="545" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-no-DPMI.png" alt="" class="wp-image-14211" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-no-DPMI.png 642w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-no-DPMI-300x255.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-VMware-Merge-no-DPMI-353x300.png 353w" sizes="auto, (max-width: 642px) 100vw, 642px" /></a><figcaption class="wp-element-caption">no DPMI for Merge</figcaption></figure>



<p class="wp-block-paragraph">Sadly, neither worked.  Maybe it&#8217;d have better luck with Windows 95 actually installed.  I wanted some high colours so I went over to Qemu and found out that it cannot run Merge.</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-failure.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="802" height="657" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-failure.png" alt="" class="wp-image-14212" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-failure.png 802w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-failure-300x246.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-failure-768x629.png 768w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-failure-366x300.png 366w" sizes="auto, (max-width: 802px) 100vw, 802px" /></a><figcaption class="wp-element-caption">No Merge!</figcaption></figure>



<p class="wp-block-paragraph">The error lies in a missing opcode 000000FF.  Maybe it&#8217;s invalid to trigger an exception to call between DOS and the supervisor?</p>



<figure class="wp-block-image size-full"><a href="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-unknown-opcode-000000ff.png" target="_blank" rel="noreferrer noopener"><img loading="lazy" decoding="async" width="722" height="457" src="/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-unknown-opcode-000000ff.png" alt="" class="wp-image-14213" srcset="https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-unknown-opcode-000000ff.png 722w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-unknown-opcode-000000ff-300x190.png 300w, https://virtuallyfun.com/wp-content/uploads/2024/03/UnixWare-7.1.1-qemuw7-on-Qemu-Merge-unknown-opcode-000000ff-474x300.png 474w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a><figcaption class="wp-element-caption">unknown opcode 000000FF</figcaption></figure>



<p class="wp-block-paragraph">Either way it doesn&#8217;t matter, it doesn&#8217;t work.  I did get feedback that it does run under KVM.</p>



<p class="wp-block-paragraph">I don&#8217;t know why I didn&#8217;t think about doing the HecnetNT bridge earlier as it gives things far more flexibility for tapping into networks, or even being transported.  I guess I should look at other transport mechanisms besides UDP since it&#8217;s 1:1.  Also, it might be worth dropping the protocol restrictive filters to allow everything on the wire to flow.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/03/29/looking-at-unixware-7-1-1-on-vmware-qemu-yet-again/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Installing NetManage Chameleon on Windows 3.0!</title>
		<link>https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/</link>
					<comments>https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/#respond</comments>
		
		<dc:creator><![CDATA[neozeed]]></dc:creator>
		<pubDate>Sun, 03 Mar 2024 22:58:36 +0000</pubDate>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[microsoft windows]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[QEMU]]></category>
		<category><![CDATA[telnet]]></category>
		<category><![CDATA[virtual networking]]></category>
		<category><![CDATA[Windows 3.0]]></category>
		<guid isPermaLink="false">https://virtuallyfun.com/?p=14076</guid>

					<description><![CDATA[After seeing the spotlight on twitter from WinWorld, on NetManage Chameleon, an old TCP/IP stack that supported Windows 3.0! With more details over on the forum. I was inspired to set it up myself. I did go a bit overboard &#8230; <a href="https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After seeing the spotlight on <a href="https://twitter.com/winworldpc/status/1762276492396892366">twitter from WinWorld</a>, on NetManage Chameleon, an old TCP/IP stack that supported Windows 3.0!  With more details <a href="https://forum.winworldpc.com/discussion/15081/software-spotlight-getting-windows-3-0-on-the-internet-netmanage-chameleon">over on the forum</a>. I was inspired to set it up myself.<a href="https://www.youtube.com/@neozeed8139"></a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Installing NetManage Chameleon on Windows 3.0!" width="584" height="438" src="https://www.youtube.com/embed/aIqdQAb4jP8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">I did go a bit overboard showing how to install MS-DOS &amp; Windows 3.0 on Qemu.  Maybe it&#8217;ll help someone who wants to try to use Qemu, but is too scared?  Maybe I moved too quickly.</p>



<p class="wp-block-paragraph">One thing I did do differently in this run, is launching the monitor and a serial port as tcp servers so I could telnet into the VM, effectively having a way to share text like a clipboard back and forth.  I&#8217;m kind of surprised I hadn&#8217;t really started using Qemu in this manner much earlier.</p>



<pre class="wp-block-code"><code>qemu.exe -L pc-bios ^
-m 16 ^
-hda apricot.vmdk ^
-net nic,model=pcnet -net user ^
-monitor telnet:127.0.0.1:4000,server,nowait ^
-serial telnet:127.0.0.1:4001,server,nowait ^
-fda yourdisk_here.vfd</code></pre>



<p class="wp-block-paragraph">Surprisingly it went surprisingly well, other than my goof of having the OS/2 driver instead of the MS-DOS driver for the nic.</p>



<p class="wp-block-paragraph">Sadly, the tn3270 program bundled with Chameleon doesn&#8217;t work properly with Hercules.</p>



<p class="wp-block-paragraph">As always I&#8217;ve uploaded it to <a href="https://archive.org/details/apricot-dos4-win3-chameleon3" target="_blank" rel="noreferrer noopener">archive.org: apricot-dos4-win3-chameleon3.7z</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://virtuallyfun.com/2024/03/03/installing-netmanage-chameleon-on-windows-3-0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
