Category: hard disks

I kid you not. I had this older SSD that would just lock up after a few hours of usage, no matter what OS I’d be running. Resetting the machine would just hang as the SSD would just disappear from the computer!

Even a fresh install of Windows 10 would hang after the install, and while it was initializing itself with the “It’s taking a bit longer than expected, but we’ll get there as fast as we can” message!

Its taking a bit longer because the SSD crashed!

Unacceptable!

Well it turns out that these things have their own processors, operating systems and well they are not just passive storage devices but machines in their own right.

crucial SSD firmware updater

And in my case it turns out that my SSD was running version 9. The latest version is version 70!

Needless to say, not only does the new version have a noticeable difference in performance, but more importantly it’ll run for hours now without crashing the SSD (which is what I imagine was happening before).

I can only imagine how long it’ll be, until there are user mode programs to load into storage, and when we cross the line with internet connectivity requirements, anti-virus and firewalls needed for storage.

And like a sucker I saw this 2010 MacPro for sale, $300. It was running OS X 10.13 aka High Sierra, and I though oh cool it’s obviously able to run the latest OS, and even better with 32GB of RAM, and apparently the single processor model can go up to 48 or 64GB of ram giving me that breathing space I need.

So I happily get the machine, put in some new SSDs, and spinning disks, and decide that I’m going to split it up half for OS X, and half for Windows 10. Sounds easy right? And for the hell of it, I wanted to install a copy of 10.6.8 (Snow Leopard), since it’s the last version with Rosetta, and I’d love to compare GrandPa’s G5 to this 2010 space Odyssey. Snow Leopard installs just fine, but the real fun comes from High Sierra and it’s APFS. I installed & licensed a copy of Windows 10 Pro onto the Mac without issue, installed the bootcamp drivers, and.. well it installs Okay but drivers are a whole different story.

Apparently there is an ongoing war between Apple and ATI regarding bootcamp drivers, so the Apple UEFI cards won’t work with the stock drivers under Windows. You can go and look for patched ATI drivers over at bootcampdrivers.com, although I had no luck with the Radeon HD 5700 that was in this machine, as it’s GPU never showed up in the Windows 10 device manager.

I still wanted to get accelerated graphics, and I decided to keep the old ATI card in the machine so I wouldn’t’ lose boot graphics from the UEFI ROM, but a card that needs additional drivers is fine, which opens the door to Nvidia. I wasn’t ready to spend a fortune on a card, and I wanted one that didn’t draw that much power, so the 1030 was a perfect fit being cheap and not requiring additional power hookups.

GeFroce 1030

I just went with the cheapest one I could find retail.

Naturally the NVidia cards work fine in Windows, but of course Apple won’t use any stock plain PC cards. But thankfully NVidia has ‘internet’ drivers that cover quite a few of their cards, including the 1030-1080’s. I had further issues with the built in audio drivers, which Windows always prefers to load some generic “High Definition Audio Device” driver, but it never makes any noise. So I bought a cheap external USB Sound Blaster Play! 3 dongal, which works fine.

Old Xeon in MacPro

And then there is the fun with VMWare, I upgraded both VMWare Player to version 14, and Fusion to version 10. And yeah, the Xeon W3565 is far too old.

No new VMWare for you!

Although my version 10 key of Fusion works on version 8, just as VMWare Player 12 works fine on Windows 10.

And if that wasn’t crazy enough, in the bootcamp boot driver selection, the High Sierra volume cannot be selected. Even if you install onto a HFS+ volume, upgrade a 10.6.3 volume or whatever you do, High Sierra converts the filesystem into something that bootcamp doesn’t understand, so the only way to boot between the OS’s is to hold down the option key, and select the OS from the ROM, which thankfully after an update understands and boots APFS.

I don’t know why, but for all the money Apple is sitting on, they really don’t feel that together or with it. I know in the whole ’99-05 time period they were not only fighting for their lives, but the whole OS 9 to OS X transition phase, just felt so much better done. Ever since 10.4 it feels like things are just subtracted, nothing really useful added. First Classic support, then PowerPC, then Rosetta. Going from 10.7 to 10.13 really hasn’t been all that exciting. Which has been the general state of things, with everyone for the most part just running VMS or Unix.

So yeah, I wanted to get a ‘real’ SAN for a while, but they always cost too much. So I just decided to look for something older, like a MSA-1000, which are surprisingly still expensive. Failing that I thought about how I could get that MacPro 2010 for ~$300 so I said what the heck and picked up a super cheap 7TB fully loaded out Xserve RAID.

I got a PCI-133 LSI Logic “LSI7202XP” Fiber Channel card for my G5, as I figured that this stuff was of the same era, may as well configure it with a PowerPC.

Configure the LSI

After setting the LSI to 2GB and in point to point mode, the system needed a reboot, and it would report a link on the FC adapter. Great.

To actually configure the array, you need the Xserve RAID admin tool, along with a working copy of Java on your machine. I downloaded version 1.5.1 which is thankfully still on Apple’s site. It runs fine from OS X 10.5, although the readme does make mention of 10.2, so perhaps it’d run there, although I didn’t feel like booting into 10.2 to find out. By default the password for read only access is ‘public’ and for admin control it’s ‘private’. Yes just like SNMP community strings.

Finding the array

You need to connect the Xserve RAID to an Ethernet network. I’ve only used the MSA’s and they let you configure them over the FC, but no so with Apple, it’s a Bonjour enabled service, so you don’t have to setup the Ethernet, just plug it in, and that’ll be good enough.

Creating the array is straight forward, however the SAN with it’s two controllers aren’t redundant, rather it’s really 2 SAN’s in one chassis with a left & right hand side.

A new disk appears!

So the solution is to use 2 connectors to the dual card, I have 2 DAC cables so I’m set.

But for now it’s just more so messing with the unit. I’ll probably just set it in JBOD mode, and pass it up to something like Solaris 10 with ZFS exports.

And personally I’ve never seen the appeal for such things, but apparently for the world of emulation accessing physical media is a big deal. Of course what I didn’t think about was rescuing old machines by re-installing the OS under emulation, or copy protection.

The first thing I looked for was a GPL project that has SCSI disk support and isn’t too complicated. The Previous project sure fits that bill, scsi.c is not even a thousand likes, and even better it works!

The only two major hurdles I ran into is that the Mac is sending a page request of 0x30 which as far as I can find is not listed anywhere else. I ended up just making one up as a reply to see if it mattered.

The other is that it’s scatter/gather based, so when it’s going to read or write several contiguous sectors, it’ll blast down up to 256kb worth of data to be read or written to. The ability to know that a large operation was in progress was already in Previous, it just wasn’t set to loop. I guess the NeXT isn’t as aggressive, or it’s SG operations are better contained in the SCSI controller.

The final hurdle was in the Apple partitioning software. I’ve been down this road a long while ago. But the disktools from A/UX 3.0.1 doesn’t care about vendors and will thankfully format anything.

SCSI disk files

So not as exciting as talking to a real SCSI disk, but it’s safer. I suspect that accessing a raw NT device name ought to work I can test that on VMWare, but the trick is finding something that can read HFS and prove it’s a good exercise.

Another ‘feature’ I put back in is the ability to disable the math coprocessor on the 68040. It feels more stable to rely on Apple’s old emulation code, but maybe that’s me.

And I saw my old look at Mach+Lites. And of course there was a qcow disk image associated with some ancient version of Qemu which I can’t run on Wine on OS X. So I figured with a bit of fun I’d update the disk image to work with Qemu 1.7.0.

Luckily Qemu 0.15.1 works just fine for it’s qemu-img. So a quick

qemu-img convert -f qcow -O vmdk mach.img mach.vmdk

and I had my image. I’m not sure of what the NE2000 parameters that Mach can use to enable the network, but I do recall it was easier to just rebuild Qemu around them. However this time, I switched to the Mach kernel that utilized Linux device drivers to get a working network.

Well here we go, ‘A better dos then dos, a better windows then windows, better OS/2 than OS/2!’ … The 32bit version of OS/2 had been under development for quite some time, and now it was finally time to ship.. The year was 1992.

I’m going to switch from VirtualBOX to Virtual PC, as the screen redraws were just too slow on VirtualBOX. Virtual PC cannot boot 1.0, 1.1 & 1.2 however it can run OS/2 1.3. Thanks to Qemu’s qemu-img tool, I could quickly convert the VirtualBOX hard disk image into something VirtualPC can understand.

qemu-img.exe convert OS21.3.vmdk -O vpc OS2-13.vhd

And to test things, I first booted it on Virtual PC.

Ok, everything looks fine, let’s upgrade!

The OS/2 installer had grown so big, that now it required two diskettes to boot up.

Also back was a graphical splash, the colored OS/2 logo that in a way reminds me of the 4 panes of the windows logo.

And back to the blue on grey installer… Notice 15 diskettes! It’s grown massive!

Another amazing thing for OS/2 2.0 is the boot manager. It lets OS/2 boot from extended partitions, and even secondary drives! As long as the boot manager is installed first. I know some people that bought OS/2 only to manage multi-booting installations. IBM could have sold this thing as a separate product. Alas, since we are upgrading our way through OS/2 we have no need for it, so we just keep on upgrading our C drive.

If only there was a FAT to HPFS conversion utility. But again, please don’t format my C drive!!!

Well the migration tool gives me a good feeling for finding my OS/2 programs. Maybe they’ll even run!

Let’s trust the installer…

Now this confuses me, first it said (and quickly) that it migrated my existing printer, then it wants me to add another…? I just know I’ll get two printers. Now I feel like Arthur ‘Two Sheds‘ Jackson.

So a reboot at the end, and into the GUI:

Notice how OS/2 2.0 throws the tutorial in your face… All the while the desktop is building in the background so you could ‘multitask’ doing the tutorial while your hardisk is frantically building the desk.. And I see the two printers… sigh.

As you can see Word and Excel are still working. And unlike a stock OS/2 2.0 installation it’s preserved the 1.x color scheme.

If you’ve never used OS/2 2.0 it comes with FAR more applets then the prior versions.

No doubt IBM was trying to address people like me complaining. PM Terminal was nice in that it supported Xmodem, Ymodem & Kermit. Not to mention you can send a ‘break’ easily over a menu. It’s handy for things like cisco routers. The seek & scan files is AWESOME really where was this in the world of Windows? Why was this so … hidden. Kind of strange that such a great tool was hiding.

Also someone got the memo about games. You see if people can’t play in your environment they’ll go elsewhere. After all even in the office it’s not all work.. There is a lot of people that attribute the success of Windows 3.0 to it’s Solitaire. You see it’s shuffle algorithm is broken, cards tend to ‘clump’. So as you play and sort, the cards start to appear in a better and more orderly manner. And people like to win. I know it’s a cheap thing, but heh the Chess in OS/2 is pretty good, as is the Solitaire. I don’t know if making them ‘broken’ and letting people win more often would have sold more installs. It reminds me of “The Story of Mel”

In the same way, being ‘good’ and ‘correct’ doesn’t win you spaces in the market place.

Also this is the appearance of Neko for OS/2. Not to mention a Jigsaw puzzle, one of those annoying number scramble things, and .. Reversi!

OS/2 2.0 finally allowed users to do wallpaper! ..

The downside is that OS/2 relied on it’s own bitmap format that of course was incompatible with the Windows bitmap format. Nor did it support things like GIF/PCX that were common at the time.

Another thing IBM included was a copy of Windows 3.0 that could run under OS/2 2.0 in either full screen or ‘seamless’ mode. There was no denying it, but after the launch of Windows 3.0 the avalanche of Windows programs was.. incredible. And to not support them would mean death.

Some say that OS/2 did such a great job of support Windows that it just encouraged people to not write OS/2 software.

The ‘killer’ feature in OS/2 was this:

That little checkbox, “Separate session” became the #1 feature of OS/2. You see Windows applications could happily overwrite each other, and memory protection became a big problem for Windows. The easy way to crash it out was to launch a lot of any application. Even well behaved applications would eventually bleed the system resources out, and again instabilities would strike. In Windows 3.0 the USER, GDI & KERNEL modules all shared stack & heap, so exceeding the 64kb stack wasn’t too hard. Even things like Program Manager and high color icons could do this quite easily. However with OS/2’s “Win-OS/2 separate session checkbox, it meant that this application would get it’s own copy of Windows running. Suddenly you could run Word for Windows & Excel for Windows in separate VMs, along with say some game, and the game wouldn’t crash all three out. And if you were a programmer, it meant your compiler,editor could run outside and protected from the program you were developing.

And with seamless mode, instead of a separate screen, now your Windows applications could run on the OS/2 desktop. This kind of partitioning wouldn’t make it’s way to Windows NT until version 3.5 in 1994.

You can only run 12 OS/2 sessions, but you can run WAY more DOS sessions. I just got bored of clicking and rearranging. I wouldn’t even think of running 20 MS-DOS prompts on Windows 3.0 ..

And unlike the OS/2 prompts the DOS boxes can go between full screen and windowed mode. Another great thing is that they support DPMI & VCPI. So you can run dos extender software. Another great thing, is that *SOME* hardware calls could be passed down from a VM into your hardware. It is possible for Doom 1.1 on OS/2 2.0 to work with a soundblaster.

Really.

(SET BLASTER=A220 I5 D1 P330 T3 and use the fixpack for OS/2 2.0 … but really it works!)

Sadly DOOM didn’t run in a window, and honestly a picture of doom is.. well.

gratuitous.

But why not. It’s actually running under OS/2. It’s something that a lot of computers in 1993 had issues running, even in plain MS-DOS.

At this point OS/2 1.0 feels like a tech demo, 1.1 – 1.3 are just toys. Really you can see the frustration in the IBM/MS alliance as a 32bit OS is what people wanted to make, not the 16bit stuff. It’s all goes down to the poor design of the 80286 CPU, and too many people selling them as ‘useful’ things. Even as early as 1992 microkernel/personality people should have really taken notice in OS/2 2.0. The key to the future was in virtualization, not in personalities. Or more so, with things like Win-OS/2 paravirtualization, which is specialized kernel assists and drivers enabling the guest OS to bypass typical emulated hardware for IO and transfer raw datablocks in/out for things like video/disks & networks.

As awesome as OS/2 2.0 was, there is one thing you may notice here clearly lacking.

Networking.

OS/2 2.0 included *NO* networking support at all. It was expected that people would use separate addons, even going as far to coax support for network cards in the DOS sessions and loading isolated Netware reqestors. And of course adding these network requestors was widly varied, and there was simply no good universal way to do it. Microsoft clearly learned the lesson about this with Windows for Workgroups & Windows NT. It was a real pleasure with Windows 95 & Windows NT 4.0… But it was 1995-1996 by then.

I know, it’s hard they both look identical. Well they kind of are, Picture A is the installed OS/2 2.0 image that I’ve been playing around with. It’s a 500MB IDE disk formatted with the HPFS filesystem. For the heck of it, I used the qemu-img tool to convert it from a qcow2 into a vhd (qemu-img convert 500M.disk -O vpc 500M.vhd) and then tried to boot it up on Virtual PC. I know in the past it’d fail with some weird error as something on HPFS wouldn’t transfer and it’d be the end.

So I did the obvious thing and just wrapped it with a ‘pci_enabled=0;’ and a ‘pci_enabled=1’, basically turning off PCI for the IDE initialization so it’d load the isa_ide_init proc. Well that just then crashed Qemu when it was reconciling geometry for the NVRAM. 20 minutes with GDB and I figure that the code has morphed enough that it’s basically expecting 2 IDE controllers, and the ISA thing just isn’t building out what it wants so it’s just a quick fix in hw/pc.c

So I comment out the second ide_get_bs and lo Qemu doesn’t crash anymore! But the BIOS says there is no hard disks?! So I’m figuring it’s a SeaBIOS issue, so checking their changelog, I see that there is something about not trusting ISA controllers on PCI systems.

So I’ll just have to back out that change, or just hack the thing to re-enable ISA IDE controllers. Luckily this was kind of easy to spot, as someone had left the magical words ‘isapc’ in ata.c

So all I had to do was ensure that this was called, no matter what (comment out the if, leave the block). Sadly MinGW couldn’t build SeaBIOS so I spent the better part of an hour downloading Slackware 13.37 (which was … less then expected) fighting with it’s frame buffer, then the linker gave me this exciting bit.

The fix is to apparently use binutils 2.20.51 . Slackware came with 2.21.51 .. Which apparently broke this needed function (again). So I wound up downloading the source from the MinGW project of all things (I know, wth?) having fun with p7zip (it installs a 7za?!) then I could FINALLY build my BIOS. First a generic test to make sure it works, then the modified one.

And into the crash. To verify I at least was doing what I thought, I turned on some debugging in the BIOS, which seamed normal, and then just fired up qemu with this flag:

-monitor telnet:127.0.0.1:2023,server,nowait

So I can telnet in, and capture the full device tree. Which you get with…