OpenIndiana Jones and the Tribble - hipster all!
Every so often I feel like installing Solaris. Don't ask. I was deprived of it as a child. The problem is just that I'm pretty much clueless with linux (so in substance I will present some screenshots). But nowadays, VM offer amazing potential for exploration without endangering your MBR and such amazing experiments as losing your bootloader as I so have attempted in the past. Another experiment I don't want to attempt is downloading 7-11 worth of DVDs to install. So I've settled for OpenIndiana instead of playing another game of DF. OpenIndiana was easier, who would have thought! So why not make a post out of this.
I used Oracle's VM Virtualbox with host only networking on my good old quadcore 4GB rig and set it as shown below. Note that when you enter "OpenIndiana" as a machine name it recognizes this as some form of Solaris OS obviously (as oI uses Illumos which was initially a fork of OpenSolaris which is... you get it) so it's possible to simply go with those defaults too. Here's my setup:
What's important is to check "Use host i/o cache" in the storage section as indicated. I've also opted for ICH9 and IO APIC - just sounds better - about twice the recommended RAM and a fixed 10GB virtual disk file. Mileage will vary. Just load the 810mb iso file in the storage section as the CD/DVD, let the live CD boot, then launch the installer from the desktop. So here it goes, a pretty smooth process with location setup and password selection for root plus one user... some 15-20 mins to install...
Then reboot, stop the VM, remove the iso file from the VM drive, then boot up:
Then get a cup of coffee because this could take 4-5 mins the first time:
At last... it's always satisfying when you see something like this show up:
Success... but failure right away as I try to load the package manager (omg it's not apt, it's pkg... you do sudo pkg install git for instance)... did I forget the root password I just setup?? Should I read the wiki or reinstall because I'm pretty much clueless? I reinstall. The same thing happens. Well, you have to read. It's Unix I guess. The password expires right after the install... you have to do "su -" without quotes and change it.
The package manager worked pretty well... just don't install too many things at once as if there's some dependency problem or something it won't install and you'll have to deselect stuff one item at a time before installing the rest. I did install a ghostly application... OpenOffice...3.1.0... works pretty well though...:
The screensaver logon panel.. it has a bar that slowly goes down before going back to blackout if nothing is entered... cute:
Don't forget to install the guest additions in the VM menu while this runs!!!! It enables mouse scrollwheel, full use of the display and speeds things up greatly and who knows what else this does. It's all scripted you just press a key and everything happens in the terminal. Once this is done and I run the VM fullscreen, it's pretty snappy and responsive!!
Wow, can't remember the last time Gnome 2.x and it's gdm looked so refreshing!!! I think some people run xfce or even Enlightenment on this too. Solaris and Enlightenment... !
Here you can see me really not knowing much what I'm doing. Trying to figure out "what's there", so I look at the package manager and remember I've installed this benchmark app, but when I call it doesn't work. So, misguided, I think it's about privilege whereas it's most likely just about path. I try sudo with a command, and it doesn't want to take my password. The password is correct. Because su takes my password. I am certain that when I do sudo, there is something wrong with the keyboard setup and I don't see what I'm typing but something is messed up. A problemception, and that's how I developed my "skills" with linux loll. Don't even remember the difference between sudo and su anyway. I don't know what gives, so I use su then see this benchmark, well, it's parameters galore as always... loll. It's really a bad idea to run a benchmark as root anyway.
Also shown below is that glade IDE and the ZFS "ghost" sort of backup app for show, as features of oI include (mind you I've installed the desktop image, not the server one):
- ZFS – the last word in filesystems
- Zones – a Lightweight Virtualisation Technology
- SMF – the Service Management Facility for software lifecycle control
- IPS – a next generation network based package management system
- FMA – the Fault Management Architecture
- COMSTAR – an enterprise SCSI target system supporting iSCSI/iSER/FC/FCOE
- Crossbow – a next generation fully virtualised high performance network stack
- DTrace – an extensive, deep diagnosis and debugging framework
- Boot Environments – transactional operating system upgrades with rollback
- Role Based Access Control – RBAC allows granting least-privilege access to processes and users
- IP Multipathing – IPMP provides high availability networking and greater bandwidth
- Integrated L3/L4 kernel mode Load Balancer
- Integrated VRRP IP failover facility
Here you can see I added the sfe repositories for extra software...yes xfce:
Seems both Firefox and Epiphany had an issue with the TheVerge website formatting... the Firefox browser which is included is not very recent... there's another one based on qt which I may try later on...:
A tiny word on compiling stuff from source and development setup
Developper pro-tip:$ pkg install ss-dev gcc-dev sunstudio
No actually I don't know really how to set this up (i wouldn't know either on linux but there are special considerations about development here because the os is transitioning away from the Oracle legacy i.e. sunstudio's cc and the basetools. The wiki has old and newer information. Newer info suggests Sunstudio 12.3 can be used to build openindiana itself but it's not available just like that as Oracle owns it. I don't think the patched 12+12.1 setup is required anymore in that respect but there's also reference to building illumos where you see references to GCC. In the end, looking and asking on the oi-dev mailing list might be the best (only) way to figure it out. Also, there's of course a difference between building the OS and building software in the OS... and I'm really a newbie in any case.
I successfully compiled from source fvwm 2.6.5 on and lxde-common-qt on oi151.1.7 but neither were tested so that doesn't say much, plus it wasn't a walk in the park (for me). I've lost a lot of time downloading extra packages, setting up paths and still I had to play with some of the configure.ac files directly... which tells me that i'm just clueless and should ask people how to set up a dev profile with proper paths etc. once and for all. But I've learned an amazing grep command lolllll:
$ ./configure --help | grep -i somekeyword
This is great when you want to configure and there's an error about something missing or what not and you want to know which parameter to use to either compile without that thing that's bugging or pass some parameter to configure it or your profile to solve the issue (for instance link to a specific tool or library)!!
Bring me Sunshine, in your eyes - Bring me rainbows, from the skies! So what's next? Looking at the software a bit for some ideas. I like OpenIndiana as it spared me of too much harshness. I give it 9 on 10 - for what my opinion is worth loll. Maybe someone has a fun idea of how this could be used... like turning it into a random sentence generator that can display something in win8 or what not? Maybe something will come up! Fun times!
After a few days
After some VM testing I have some observations. I forgot to mention I'm running Windows 8 Pro 64bit. Seems enabling IO APIC with 2 cores assigned to the VM or selecting ICH9 was a bit of a mistake. I've come to realize also that the profile for Solaris 11 in Virtualbox calls for IO APIC but uses the PIIIX chipset and not ICH9. Actually, when I set it to one core for the VM I get better performance. Multicore is maybe optimized when you run OI natively on hardware. It's beyond me.
Temple of Doom
Speaking of being in over your head, I also gave a try to the server version! Installing was a breeze. Then I tried to build a desktop environment on top of it but failed admirably. I don't have enough patience for Xorg and don't feel like spending hours playing with xinit.rc to get rid of that "display not found" and "GLX not found" errors. And then what do you start, is it startx or xinit or gdm or xdm or what? I'm reminded here that this is a place where people who build distributions come into play with their skills, because for me it's pretty hard to configure all that UI stuff, especially when you want many of them WM/DM around and assigning a proper runlevel so that you boot directly to the login chooser.
(Update) For the hipster in you!
I thought that 151.1.7 was the latest, and it is the latest iso you can download, but actually it's possible to easily access the latest cvs like rolling upcoming release, the upcoming 151.1.8 (which should be released soon anyway as stable/dev). You don't find this info on the OI wiki, which is somewhat deprecated, but there's been some activity this summer in the dev mailing list and once 151.1.7 is installed, you can simply do, as explained here:
$pkg set-publisher -O http://pkg.openindiana.org/hipster openindiana.org
$pkg update -v
Using a fresh install, the update process downloaded some 900mb of files. What's really nice is that the whole updated is automatically installed in a different boot environment within the OS so you get to choose on the grub menu, and your older version is safeguarded. I'm not certain but I'm pretty sure that this separation extends beyond the kernel to cover packages. I'll check it out. The update process took less than 1 hour total:
Smooth update process, only the desktop wallpaper was reset to a green one
but everything seems to work ok and the package manager GUI is broken (see bugs) but the pkg command works alright. Admittedly I've just installed so I'll see. Can't commend enough the "Save state" feature of Oracle's VM here, as I was able to go back to the state I had created just after a 15117 clean install and apply the update there directly. So I'll always have 2 clean states to go back to (clean 15117 and clean 15118. Down the road I might look into exactly how the boot environments and sparse-root zones provided by Solaris based oses can help protect your main environment.
Here's the desktop updated to "hipster"!!! We'll see what gives! I'm now going to focus on setting up as best as possible a development environment to compile stuff from source... and that's easier said than done!
Installing OI taught me that I like OpenSolaris based stuff. And as I got up to speed on the details of what happened to OpenSolaris since Oracle screwed it all up, I find I want to encourage the people behind OI and also the Illumos work to safeguard and enhance the OpenSolaris legacy although the whole ordeal has absolutely no impact whatsoever on my life as this is really not my field...
So on the Illumos wiki page I found this reference to Tribblix, a one man show described as an operating system derived from OpenSolaris, OpenIndiana, and Illumos, with a retro style and modern components. And the distribution's website sports that neon green font so that's a good sign lolll. So I decided to give that a try. And let me tell you right away it's great for a 6th prerelase, as the first one was released as recently as last March (2013) !!! The installation instructions are succinct but accurate. Highlights for the latest release (AM6) include:
Update Illumos to something current
Add IceWM 1.3.7
Uprev and rebuild XCB
Update curl to 7.30.0
Update git to 22.214.171.124
Update python to 2.7.4
Add gqview, imlib2, qiv, xdaliclock, xcpustate
Add abiword, gnumeric, dia
Update OpenJDK to 7u21
Installer allows you to create a mirror
Rebuild startup-notification, update and rebuild libwnck
Update and rebuild XFCE
Update Firefox to 21.0
Add telnet client
Whole-root and sparse-root zones
So I set up a VM using the Solaris 11 profile, 1.5GB ram, IO-APIC, 1 core, PIIIX, 10GB VDI (I think because this uses sparse-root zones, the OS sandboxed within itself like mirroring, you need more free space to install than OpenIndiana... about twice as much in fact. The boot process is very fast compared to OI but that's also natural because you don't get to boot in a GUI. Anyways, I proceeded to follow the install instructions.
You have to play with the format text based utility for partitioning which is a bit like good old DOS fdisk. Assuming we use the entire disk, you then simply do right away that fdisk -B /dev/rdsk/c1t0d0p0 command, then type format to access the utility, then you press p - p - (maybe an extra p again to display the list of slices) - and finally 0 to edit slice0. Put the starting cylinder to 1, the tag to root, accept the default permissions and set the size to that max number in the middle column for slice2 and add "e" at the end... so if you see 2433 as the last cylinder in the middle column on slice2, then you enter 2433e as the size when you edit slice0. Don't even think about slice8. Then you're back at the partition prompt, and you press L then enter to save and write the changes. Then you exit the format utility with quit. Don't do anything else. If you don't use your logic reflexes from windows partitioning you will succeed lolll. I failed many times loll. If you don't do it right you'll get only errors when you try to install. To install do /.cdrom/live_install.sh c1t0d0s0 kitchen-sink right away. Again, kitchen-sink contains what you want to see from the distribution, so don't waste time installing the base then installing the overlays individually... The overlays are like profiles for installation. Then it's a pretty quick install. It may exit with an error message so I executed the suggested command in the install instructions even though my error was slightly different. The maintainer was intelligent in making an "boot from harddrive" item in grub on reboot so if you didn't eject the install iso in the VM when you rebooted, you can now decide to boot from the harddrive anyway. Boot process is significantly faster than with OI. And you end up at the login prompt in terminal mode.
Dreaded challenge 1: Roles can only be assumed by authorized users as I'm trying to gain root access with new account
You should create a user of your own so you're no longer relying on the jack account. And because I'm not knowledgeable about linux or even less about Solaris, and because the maintainer chose to not include a GUI tool for account creation, it wasn't an easy task for me. At some point I found a cheat-sheet document about Solaris 11 administration but until then I had to learn things the hard way. In terminal, using the jack account I can do a su - root to gain root access and then use a command like useradd to create an account, as I assign groups an uid without really grasping the implications, mostly at random. So I created this account, and put it in the root and adm groups. Then I exit X, logout from jack, login as this new account then try to install things etc. When I'm asked for the root password, I enter it and I'm welcomed by the weirdest thing I ever say in a *nix environment:
What the hell is this? It's RBAC hahaha. It's Role Based Access Control. With this ROOT is not a user, it's a ROLE for users to have!! Knowing this helps immensely. You can add roles from the useradd or rolemod commands. But I found it so so so much easier to simply edit the /etc/user_attr file with nano. There you see the roles the default jack account has and yours and you can replicate that, like I did with this account at the bottom (yeah that's vi here, the editor I can never escape from once it's loaded):
A variety of graphical environments
In the "use" section of the distro's website, you have instructions for starting XFce, Windowmaker, Enlightenment(E17) and I tried XFce and WM and they work great! Here's XFce 4.10 (latest!!!) - there's FF 21.0, Abiword, Gnumeric, Thunar and all the basic stuff... he also put the eyes that follow the cursor lolll:
And here's my beloved WindowMaker with GIMP and pretty much the basic configuration - always loved those docks and the square tiles!!:
I might decide to personalize WindowMaker down the road and load Enlightenment too. Most likely that would make a longer post than this one and be met with similar interest;-)
Dreaded challenge 2:
SUNWuiu8 Iconv utf-8 icon whatever message trying to install the guest additions from the VM menu (see update at the end of the section)
As you can see, in both cases show in the above images, I'm running the guest additions (max screen width, scrollwheel support etc.). But that's easier said than done here. Because when I tried installing that I got this error:
My workaround is as follows, using syntax similar to what found here:
- Copy the VBOXSolarisAdditions.pkg from the mounted additions drive to some folder
- Use pktrans to extract the stream content: pktrans source dest
- Find the depend file in the extracted content, edit it, add # in front of the only line in the file, which refers to the prerequisite file from the initial error. Save.
- Now try pkgadd . /extractedfoldername (check the syntax for the commands, I never remember correctly that stuff). When the command succeeds, it complains that the depend file is corrupt because its size and chksum changed... well we added on char to the file so that's why. Take note of the 2 actual values that differ from expected values in the error message.
- Find the pkgmap file in the extracted pkg folder, edit it, and change the size and checksum values to their actual size (the 2 values). Save.
- Retry the pkgadd command... the guest additions are being installed now!!!
- Logout from the Desktop, then log again into xfce for instance... startxfce4 and voilà! see if the screen stretched and if mouse scroll works...
There's no guarantee that this installed without issues that might arise later. I don't have to skill to validate if all the additions installed properly or what is the impact of bypassing the installation of the SUNwuiu Iconv utf-8 package. What I know is that it seems to work for me now and using the full screen real estate helps enjoy the OS!
Update: I thought finding the SUNwuiu8 package would involve finding the appropriate Solaris DVD etc. Also, when I started this, I didn't know I could use pkgadd to install packages. My logic failed because of the problemception trying to work around the prerequisite, originally inspired by people changing the vboxadditions.pl script on linux and commenting the dependency...but when I was able to use pkgadd, I should have just broke free and found the package, which I did just now. So the package installs tediously but does install, and then I launched the guest additions script again and all installed fine as it did under OpenIndiana. So logic fail but that's settled!
Appeal is useful
There are limitations to Tribblix in its current form. As far as I know (not much) there's no package manager to pull packages from. It's "as is" i.e. what the kitchen-sink install profile provided. There are development tools. Again, I don't know enough to discuss that. Maybe stuff can be compiled from source or you could manually bring OS or OI packages locally and try installing?
I just don't know! (there's pkgadd for sure, which allowed me to install SUNwuiu8. I should try other packages...)
This is really fast to boot and snappy to use. It's really impressive that a single maintainer could succeed at enabling an install for someone like me and that he put it all together. I really like the distribution and looking forward very much to other releases and upgrades!!! 9.5 on 10!!!
Installing these distributions really helps develop some tiny skills which could prove useful in another life or what not. There's tons of greatness to uselessness. Also is great for conversation! Yes I know RBAC, do you? and such. Just fun stuff!
I have many questions! I'll limit myself to a few:
- What is the importance of UNIX today? And what about the OpenSolaris legacy?
- What is so different between linux and unix and why is it that linux has upstaged Unix in many ways (or so I've heard) and is so much embedded in devices compared to Unix... is it licensing?
- Is OpenIndiana an acceptable platform for compiling common contemporary software I want to try and what are the best practices for setting up a development environment on this flavor of UNIX?