BrainOut!
The mumblings of a Christian autistic husband, dad, IT guy and amateur radio operator - Will Brokenbourgh / AF7EC
I still want to love OpenIndiana -- I really truly do...
As mentioned quite a while ago in my previous article I really wanted to make either FreeBSD or OpenIndiana my "daily driver", but issues at that time were just too much to overcome. Well, I got the urge to try OpenIndiana again recently (and I'm still actively trying), but as far as OpenIndiana (or OI, as I will call it) is concerned, things are still not looking great.
Here are my thoughts during my latest attempt at running the modern and free version of SunOS (or OpenSolaris, if you prefer)...
Let's get this installed!
I did the usual "download and verify the checksum" thing, then shoved a USB thumb drive into my middle-aged
Intel open-framed machine and got to installing OpenIndiana 2021.10. Yep, the one from October 2021, which is
almost a year old. Yep. Yeppers.
My first install attempt using the text installer failed. It gave up almost right at the end of the cpio operation in grand AOL dial-up style (what I mean: It's where you've been downloading a file for hours, and it's almost done, but then, BANG!!...your connection got cut off or AOL decided to reset your connection or whatever and the hours of downloading were completely wasted). I set things back up and tried again, thankfully this time it successfully installed. Yay!
Next, it was time to do the long and drawn-out update process. No initial operating-system update is fun, and
OI is no exception. I did pkg refresh --full
and pkg update -v
and walked away after
a few minutes to make coffee or some other thing. I came back about fifteen minutes later and OI was still
downloading new packages. Let me tell you something, loudly: OpenIndiana package downloads are
painfully slow! I live on the west coast of the U.S., so maybe the OI project despises folks over
here, but none of the mirrors were any better last time I tried this. So I walked away for a good long time,
came back about an hour later and it was finally ready to be rebooted. Because I have a strong allergy to
Solaris' "quick reboot" thing, I instead powered off the machine, then powered it back on.
At the loader menu, there are now fabulous error messages spamming the screen, telling me that this or that isn't present. The following picture is from a virtual-machine running OI, but the display on bare-metal was similar. Well, updates are supposed to make things better, not worse, right? Well shucks, let's keep going anyway. I just sat there and waited for the loader to time out because I couldn't see if the loader prompt was there due to the aforementioned spammage. After taking its leisurely time and loading new SMF descriptions, I finally got to the login prompt, which was then trashed by what looked like kernel messages. Also, one or more services apparently had gone into maintenance so I had to log in "in the blind", which worked thankfully.
What's that package's name again??
As mentioned above, I used the text installer because I wanted to customize the network stuff. Last time I
tried OI, the GUI installer didn't have the ability to config the network during install. Because of this,
though, there was no GUI installed, which is fine, right? The last time I tried OI, the package to install the
MATE desktop environment was openindiana-desktop or something similar to Solaris' solaris-desktop package.
Since the OI wiki has been unavailable since I started this latest journey, I had no clue what to install to
get MATE going, so I took pot-shots, installing xorg, mate-session, xinit, lightdm, etc. Frustratingly, none
of these were sufficient to get the whole desktop installed, so in desperation I tried pkg search -p mate
| less
and went through every MATE entry, hoping to find something that looked like a full desktop
installer. "mate_install? Let me try that" I mumbled. After taking a long time due to the amount of packages
needed and the slow download speeds, I finally had a working desktop after I issued svcadm
enable lightdm
.
Whew! Well, got that bit out of the way. Now came more work -- setting up to do business. I provide remote tech support and need my various software tools to do that. One app, SpiritVNC-FLTK, is my own attempt at programming a useful multi-view VNC client after having a negative experience with the Remmina project team. After many years, SpiritVNC-FLTK has begun to mature, with hardly any crashes but a big upset last year when the libssh2 project did something awful which completely broke things. After my hard-core illness and during recovery (thank you Jesus! ), I had to scramble to develop a workaround which uses just the system's ssh executable instead of a ssh library. It works but it's not ideal. Anyway, back to the task at hand... I tried to make SpiritVNC-FLTK on OI and got stopped right away. As it turns out, libvncserver doesn't use flags from pkg-config on OI, it uses its own libvncserver-config program instead. Ugh. So I made some changes to the SpiritVNC-FLTK Makefile and now it builds properly on OI. I think I even added some OI-related changes to SpiritVNC-FLTK months ago to be compatible with OI -- I just wasn't able to completely test them.
Hard stop!
With SpiritVNC-FLTK ready to go, I then needed other things, like sshuttle. No, that's not a misspell, it's a
very nice app that provides a "poor man's VPN" to any computer on the net that has a recent version of Python
and ssh server running. On Linux, BSD and macOS sshuttle works great and hasn't given me huge issues, but
while sshuttle installs fine on OI using pip or from source code, it doesn't work. OPEN-SOURCE COLLAB
OPPORTUNITY!!! sshuttle has to issue certain commands to a system's firewall in order to do its thing.
Unfortunately sshuttle doesn't know how to speak OI's ipf firewall language. Here's where the community could
really shine: come up with a system-agnostic firewall language that is supported by any OS that can compile
with gcc or clang! Then very useful apps like sshuttle wouldn't have to include every - single - firewall -
command in existence to work. Anyway, I have no workaround for this issue yet -- a big let-down which isn't
the OI project's fault. I could temporarily use a Linux virtual machine to access certain customers
with sshuttle, but that's clunky at best. (sigh)
Browser blues
While trying to troubleshoot the sshuttle issue, I was trying to use the OI-project-compiled Firefox
to do some research. That failed miserably because Firefox couldn't get out of its own way. I tried to switch
tabs, type in search queries and the like and it would just sit there, with the little loading dot going back
and forth (sometimes). As it turns out, my only and favorite add-on, uBlock Origin, was destroying not only
Firefox, but the whole system, apparently. Firefox was doing weird things, crashing, dumping core and getting
stuck forever until I disabled uBlock Origin. Then, like the dark storm clouds parting and the sun shining
down, Firefox was mostly responsive again. With my autism, I just can't do any ads with motion in them, so I
was pretty sore about not having uBlock Origin available. I looked for some alternatives, and found hBlock,
which doesn't do anything to the browser, but instead creates an alternate /etc/hosts file with most ad URL's
going to 0.0.0.0 or 127.0.0.1 or whatever. I was just happy to not have a bunch of ads blinking, sliding or
otherwise distracting me from researching OI issues. Firefox did stutter and sometimes crashed all by itself,
but at least it was much more useable than before.
The next challenge, though slight, was that the OI project previously provided a symbolic link from /export/home to /home. Unfortunately they decided to "throw users a curve ball" and removed the link on all new installs. It's no biggy, really, but it does make it that much harder to migrate a home folder from Linux. I could have added the link myself, but I wanted to be as "OI" as possible, so I just ended up adding /export to anything in my home folder that needed a full path.
G_STATIC_ASSERT, who are you and why do you hate me?
Next, I wanted to build my favorite notification system, dunst. I like it over MATE's system because MATE's
notification bubbles disappear after about five seconds. I want my notification bubbles to stay until I
dismiss them manually, thus dunst. Unfortunately, as I soon found out, dunst is painfully non-portable,
heavily favoring Linux. There was an actual Linux include file being called for that was completely missing
from OI. So I searched the web and found the actual file from Linus Torvalds' repo and added it to the source
folder. That got me a bit farther in the build, but then I kept getting this weird assert that was messing
things up. I didn't copy the full error down, but it was something like "Assert: G_STATIC_ASSERT - Expression
evaluates to false". Um, okay, that's interesting, but what does that have to do with me? I thought, at
first, that it was a problem with the dunst source code, but it turns out it's some glib macro that was
designed to frustrate and infuriate anyone who dare compile something on OI. It was buried in some thick
#ifndef branches filled with thorns and other unpleasant things, so I just commented the whole thing out and
did an empty define and everything worked fine after that. Yes, a very naive approach, but I don't have time
to play the glib developers' mind games.
Hard stop #2!
I was able to finally get dunst to compile after many tweaks to the source code, but then it wouldn't install!
I actually
filed a bug report on their github issue tracker, and the most recent feedback I received was "Patches for
better OS compatibility are welcome". Okay, yes, I know, open-source projects work on volunteer time usually (I
know, I have a few open-source projects, including SpiritVNC-FLTK), but when you get the "patches are welcome"
bit from your bug reports, it makes one sad. It makes one want to make their own notification system that
works on as many Unix-like systems as possible, without being Linux-centric. Anyway... hard stop #2, and this
one is NOT OI project's fault.
I don't know if it's MATE's issue or the OI project, but for some reason your Music, Pictures, Templates and Video folders are within the Documents folder on a fresh install. Weird. Nearly any other system I've used MATE on, these are all their own folders in your home folder. Not okay because it can cause backup issues. In my case, I just moved those folders into the home folder, logged out, then back in again and everything was fine.
Wrapping up
Well, it's been an adventure this time around. I still want to run OpenIndiana as my "daily driver",
but mostly because of software projects like mpv, dunst, sshuttle and Purple Plugin Pack, I can't really use OI
regularly yet. While the OI project is mostly not to blame for some of these things, the G_STATIC_ASSERT,
buggy Firefox and slow pkg download speeds are on OI's side of the net. I filed bug reports on the
Illumos system for the OI issues, but I'm not holding my breath.
While I look at OI with mostly fondness, others may ask the question "Why does OI exist at all? What's the point?". That's a great question. It might be to have a living, breathing modern version of SunOS that people can look at in a virtual machine. For others it's probably the fondness of working with SunOS in their past that keeps them from chucking the whole thing in a dumpster somewhere. Except for those and a few other cases, OI doesn't really serve a very useful purpose right now. If you were coming from a Linux or BSD standpoint and knew nothing of SunOS, Solaris or OI, you couldn't be blamed for thinking OI is slow, awkward and rotund. Maybe people who enjoy OI might be compared to those who hang on tightly to their 8-track tape players, Yugos and Clappers.
I look forward to trying OpenIndiana again someday. Maybe by then they'll have some of these annoying kinks ironed out. As for the other software projects -- I will try to continue working on OI in a virtual machine and see if I can submit some patches that might help with "quality of life" for others who may want to run these programs on OI.
God bless you, and thank you for reading!
Comments