Morning. power outage.. crap.. go to check, the tar finished, great.. system reset, sitting at fsck.. unexpected fileystem error.. crap. run fsck ... EVERYTHING is corrupt.. double crap.. vague memory that I knew this.. that for some reason fsck on 11 on sparc would flag everything as bad even though filesystem was consistent, but fsck on 10 would show it all as good... crap...
ah, yes.. where did we leave off... oh yes.. it boots, it works.. wow even attempting the emulation was a waste of time. running FreeBSD 11.. so even pretty recent (for SPARC)... check it out.. 1G RAM.. but no swap. and there's some data on the drive I should preserve before I nuke it. Start the tar.. go to bed.
Relent. give up. Hardware time.
Go downstairs, find most convenient box pick it up, clean it off, bring it up, plug in, turn on.
WTF.. It boots. Its is sitting at a login prompt?! EVEN THE NVRAM IS VALID?!?!?!
IT BOOTS. yay..
wait.
interrupt storm detected on "vec2016:"; throttling interrupt source
after kernel takes over. search, find:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=239068
Try recompiling as suggested, try turning off DMA on FreeBSD... try booting virtio.. sparc64 doesn't support virtio. try booting scsi, qemu doesn't support SCSI on sparc64 (non virtio)
wtf... search... search... search, find:
https://bugs.freebsd.org/bugzilla//show_bug.cgi?id=256536
Ok, implement the workaround (set environment variable.. .BUILD. Success. run...
Step one... compile... get the following error:
warning: POSIX Yacc does not support %define [
the build doesn't even exit cleanly.
my sparc64 hardware is OLD. *OOOOOLD*. ok, qemu has sparc64 support... lets do that, that will be easier than dealing with hardware...
Look at the data.. yup, its there, lets see what I can do.. this will be maddening to walk by hand.. screw it. sparc64 we go....
Could it be the IV for geli is endian specific.... YES IT IS. Patch kernel to force endianness on it.. BOOM it works.. I have access.
I look at the raw data from geli.. look at drive 1.. totally random.. I GUESS it could be in the middle of a data block.. look at drive 2.. a clear UFS header... OK.. so this clearly works. Look at a few more blocks... randomness. I SHOULD be seeing inode blocks, I know what they look like.. what gives?.. and which is the GEOM_STRIPE footer missing?
So, first I decide to just bring them over to x86, I know UFS will be a problem with the endianness, but I can just get a good poke at the data, make sure it is even there. Get the disks attach, geli attach... accepts the passwords, but the stripe doesn't show up?!
This old copy was on USB external disks, striped (2 of them) geli encrypted and written to on SPARC64/FreeBSD.. I think now you know the trajectory of the story (Maybe I should have opened with that)
The beginning: Recently I have gotten back to some old projects, and I started to re-hydrate some OLD data files. One of these was curiously corrupt. After tracking down how (looks like it got truncated in one of the copies), I remember I still had a SUPER old copy on a backup from WAY back when (think 10 + years)
Ok. So I guess i need to explain it. The car’s license plate begins ARJ. Which is a compression standard. Get it? Compact Car 🤣. Thank you
The http://semibug.org web site has been updated, with: a meeting!
FreeBSD enthusiast and regular contributor. I have opinions!