[ ThinkPadT43 ][ Previous | Next ]
Open Solaris - Solaris 11
I should probably have called this page something else. I just don't know what. Open Solaris has been blended with Solaris Express Community Edition (SXCE), Solaris 11, and Solaris Nevada build whatever. At this point, this page is mostly about installing Solaris Nevada (Solaris 11) on the T43. I have built Open Solaris from source as an exercise, but not recently. Nevada and Open change so rapidly that notes about an old release don't mean a great deal. I'll try to update this as time permits.
The primary gateway to all this: Open Solaris source, Solaris Nevada install images, other projects, and discussions is OpenSolaris.org.
A lot of this will be word-for-word the same as the Solaris 10 report. Done this way so it is readable in one place (mostly).
Out of laziness (like most of my downloads/burns) I did the download and burn in WinXP. Downloaded Solaris Nevada Build 28 (SNV_28 - this will get updated as new versions become availabe and time permits) using Sun's download manager for windows and burned the iso with Nero. Download directly here, or via the Open Solaris site. The Open Solaris site may link to a newer version of Solaris Express than the Sun site. A newer version may be required if you intend to build Open Solaris. It's not a bad idea to go to the Solaris 10 download page and get the Companion CD/DVD image. It contains many useful applications and tools that play nice with Solaris 11. There shold be an S11 equivalent one of these days. One can also access individual packages Solaris 10 1/06 Software Companion Packages.
Remember to use the "Recorder->Burn Image" option in Nero or the "Disc Image or Existing Project" in Nero Express. Many newbies get into trouble trying to just burn the iso as a file. When you do that you get a CD/DVD that just contains the iso as a file rather than using the iso to create a CD/DVD containing all the files and file structure of the iso.
If you're already running Linux or Solaris use cdrecord or equivalent. cdrecord requires an iso as input so it should be harder to get that wrong.
Didn't touch it.
Red Alert! Immediately on receipt of the laptop, boot to XP and make a set of recovery/restore CDs - or DVDs. IBM does not provide these free anymore. You can make a set using the utility available in XP. Installing System Commander (and perhaps other boot managers) makes the T43's service partition unavailable, and it may not be possible to create restore media without it!
I used System Commander's partitioning tools to create a Solaris primary partition. In multi-boot installation it is mandatory to create the partition in advance. Solaris fdisk is guaranteed to foul up the drive's partition table if it is allowed to create partitions. They will likely not start/end on cylinder boundaries, and may overlap other partitions.
Even with a pre-defined Solaris partition the install will diddle the cylinder, head, and sector (C,H,S) values for its partition and probably others. This can be repaired. Take a snapshot before the install and use your partition editor of choice to do the repair manually. Note that the modified C,H,S values may or may not cause problems for other modern OSs. System Commander may refuse to boot partitions with modified values until they are restored to their original values. Other boot managers may not care.
Starting with Solaris 10 (at least the version that I had loaded), they have gone to a new partition ID. The old id of 82 (hex) was the same as the Linux swap partition. This used to cause all kinds of grief in multiboot installs, but hasn't been a problem lately. The new BF ID avoids this altogether. The bad news is that System Commander 8 doesn't recognize this as a valid ID - and doesn't have a way to force bootable status. The good news is that as of System Commander 8 rev 13, the BF ID is recognized.
My Solaris partition remains a relatively generous 10G.
Aside from the usual partition table scribbling (above) the installation went as one would expect -or hope, in the case of Solaris x86. The Solaris install overwrites System Commander's MBR so boot to XP (via the Solaris boot "manager") and run System Commander 8 -> Enable System Commander.
The Nevada S11 releases use grub as the Solaris boot loader. It would be reasonable to just go ahead and use grub to boot all the installed OSsm but if the Solaris install was removed the boot loader would go away too, since the stage 2 grub stull is in /boot/grub in the Solaris partition. Since I'm stuck with WinXP pretty much permanently, and Solaris and Linux installs may come and go, it seemed reasonable to tie the master boot loader to the Win install rather than one of the others.
Another option would be to install a "vanilla" grub and use it to chainload XP and the grub bootloaders in the Linux and Solaris installs. That won't fly in my configuration since grub isn't currently installable to NTFS partitions. If the more or less permanent OS had a FAT filesystem grub could be used as the master loader.
Here's the SNV_28 /boot/grub/menu.lst boot menu.
NOTE: this wasn't a problem during the T43 install since I only have one hard drive, but on other machines where I installed SNV_xx to the 2nd drive, menu.lst was mis-configured. Sorry, but I didn't save the grub error message. A snip of that menu.lst had an entry like this for Solaris:
title Solaris Nevada snv_28 X86 (it was probably _not_ snv_28. this is _my_ example)
The "root" like was incorrectly pointed to the 1st hard drive. It should have been:
At the grub splash screen hit e for edit and correct the bad entry on the fly. Once solaris is booted edit /boot/grub/menu.lst for a permanant fix. Like I said, this doesn't apply to the T43 install.
Mounting Scratch Partition
I wanted to be able to mount my FAT32 scratch partition easily from Solaris so I added this line to my /etc/vfstab:
/dev/dsk/c0d0p2 - /mnt/fat32 pcfs - no -
and created the mount point:
The scratch partition can be at mounted /mnt/fat32 like this:
Here's my /etc/vfstab.
Bash Shell - Root and User
I tend to prefer the bash shell. Its up-arrow command history is particularly useful. In the days of old prior to Solaris 10 it was a very bad idea to change root's shell. With S10 and later it is safe to do. See www.blastwave.org/howto for details.
After booting the full S11 installation I ran smc to create a user, then edited the user and root accounts to change the login shelll.
Java Desktop Login Errors
With earlier S10 and S11 versions, sometimes when logging in to JDS as a user (root works OK) I got several error messages:
There was an error starting the GNOME Settings Daemon
Nautilus can't be used now, due to an unexpected error
There was a problem registering the panel with the bonobo activation server
This is caused by cruft left over in /var/tmp that Gnome can't handle. It seems to be fixed in SNV_28. See my Solaris 10 page for information.
More Login Errors - Screensaver
User logins to the Java Desktop provoke this non-fatal error: This problem still exists in SNV_28.
Failed to execute child process "xscreensaver" (no such file or directory)
Add /usr/openwin/bin to user path to fix screensaver startup problems. Put in .profile since .bashrc gets read too late to do any good:
My .profile currently looks like this.
I tend to use vim for editing. Most of the special keys work as expected while editing: home, end, del, and so on. The default font is way too small for my old eyes on this relatively high-res screen so I use a .vimrc in my home directory with these lines (alone, or added to other options):
This one's a little embarrassing but maybe I can save some other lost soul. When installing additional packages from the Solaris 10 Companion DVD, I selected the few that I wanted, accepted the license, and hit install (or next, or whatever). It immediately went to the "done" screen and indicated "not installed" for all the stuff I had selected. No error messages. I ran it again in text mode, drilled down into the "more information" section and saw something like this:
/var/sadm/install/logs/Application-Editors_install.B02081548 does not exist
Huh? This is probably just the "more information" utility complaining, not the actual error. Turns out the installer thought the selected packages were already installed - sort of. I ran prodreg and it listed a bunch of stuff from the Companion CD/DVD with the dreaded yellow triangle and exclamation mark. I must have previously installed the companion stuff and then nuked the /opt/sfw directory where it gets installed without doing a formal pkgrm or removal via prodreg. Not cool. The fix was to select each one in prodreg and do a full install. That cleaned up my mess.
For general information purposes, here is the dmesg boot log.
Works. The Xorg stuff finds the x300 and runs it in full resolution :)
For a nicer looking display, set the screen DPI to 120:
and make sure the LCD backlight turns off when the screen blanks (in 10 minutes):
power management: standby=0, suspend=0 off=10
UltraNav TrackPoint and touch pad both work. Usb mouse works. All work at the same time.
Broadcom NetXtreme Gigabit Ethernet BCM95751N. Works out of the box with the bge driver- device bge0. It shouldn't be necessary to manually configure wired networking if it was done during the install. The manual procecure is shown on my Solaris 10 page under Network - Wired.
NOTE: if you use intemenu instead of the usual /etc/hostname.bge0 way of doing things it is necessary to have intemenu bring up bge0 as the default. See Network Management below.
Intel PRO/Wireless 2915ABG. Works, but may not be quite ready for prime time. There is a driver and management utilities available from the Open Solaris Laptop Community page. Get the iwi driver, wificonfig, and inetmenu. Read the pages and docs. Inetmenu isn't absolutely necessary but is quite helpful. See Network Management below.
The system needs a little editing to work with the iwi driver. The e1000g driver tries to attach the 2915abg device. The 2915 has a PCI ID of 8086,4224 and a sub-ID of 8086,1010. The sub ID is (incorrectly?) included as one of the e1000g's supported IDs and the iwi driver doesn't currently recognize the 4224 ID. This misguided attempt to bind to the wrong device produces this error message:
WARNING: pci8086,1010 - e1000g : could not identify hardware
Edit /etc/driver_aliases and remove or comment out (with a leading #) the line:
and add this line to the iwi section:
It might also make sense to remove the unused e1000g driver:
NOTE: it is necessary to reboot after installing the iwi driver.
ANOTHER NOTE: reinstalling the iwi driver will remove the "pci8086,4224" entry in /etc/driver_aliases.
I was able to get wireless up using wificonfig and ifconfig per the (rather skinny) documentation, but it turned out to be much easier to use inetmenu. It may be necessary to plumb iwi0 before using inetmenu:
#ifconfig iwi0 plumb
I'm using inetmenu 1.9. It presents a list of network devices and network profiles that the user creates in /etc/inetmenu. Quite a bit is automated. Since my home wifi network does not broadcast its essid, inetmenu doesn't/can't present it as a choice. In this case it is necessary to use inetmenu from the command line:
inetmenu -i iwi0 -W <my essid> -p <my profile>
I had enabled user access to inetmenu per the docs, and previously created my profile which basically just said
NOTE: with the current versions of all the stuff I'm running this usually doesn't work the first time. I get:
wificonfig: connecting to <my essid> failed, try later
ifconfig: iwi0: wait timed out, operation still pending...
The OK pop-up appears, then the cmd-line prompt, then a while later the radio LED (usually) comes on. Trying the cmd line agian succeeds. In order for the default route to get set and used correctly I use inetmenu via the GUI interface (just type inetmenu) to deconfigure the interface that I am not using.
NOTE: on the next boot after installing inetmenu it complained about the existence of /etc/hostname.bge0:
Your machine is configured to have networking start at boot. This is incompatible with how inetmenu is intended to be used, please remove the following files: /etc/hostname.bge0
so i deleted the file. Unfortunately on the next boot the T43's NIC LED and all the LEDs on my router were flashing wildly and the LAN was wedged. It seems that the wired NIC wasn't getting initialized (properly?). The solution is to tell inetmenu to start up the wired NIC as the default. Adding this line to /etc/inetmenu/inetmenu-startup does that:
bge0 <my home lan inetmenu profile>
Works. Inserting a (FAT32) 256MB Sandisk Cruzer Mini USB flash drive into the T43's USB 2.0 port pops up an "unnamed_rdisk" icon on the desktop. It's mounted at /rmdisk/unnamed_rmdisk. Hmm, right clicking and selecting eject makes it disappear briefly but it comes back and is still mounted! Better unmount it by hand before removing - to keep its data stable:
This all seems to work "automagically" with this version of Solaris. If it doesn't for you, or for further information, there is a detailed explanation of how to mount and access USB devices with S10 at docs.sun.com. Sun also has a nice USB FAQ page.
Both work. DMA is enabled for the optical drive by default.
Using cdrtools (from Blastwave, the Companion CD, or perhaps pre-installed) make an iso image:
mkisofs -J -R -l -o <name of iso to create> <path to files to be burned>
I had a little trouble getting the path right to include the files I wanted. One can mount the created iso and have a look at it before burning. This may have other uses as well:
#mount -F hsfs -o ro `lofiadm -a <full path to iso>` <mountpoint>
#lofiadm -d <full path to iso>
Determine the device number (as root, and note that if volume management is running --scanbus won't find the device if the drive has no media inserted):
1,0,0) 'MATSHITA' 'DVD-RAM UJ-8225 ' '1.03' Removable CD-ROM
Burn the iso:
cdrecord dev=1,0,0 speed=24 driveropts=burnfree <path to iso>
Burning DVDs is a little more interesting. As of this writing it requires cdrecord-proDVD and a (free for non-commercial use) license key. Download cdrecord-proDVD from your favorite site, such as:
Follow the readme regarding the license and the wrapper script. Burn the DVD:
test.sh dev=1,0,0 driveropts=burnfree -dao <path to iso>
NOTE: test is the license wrapper script edited to point at /opt/sfw/bin/cdrecord-ProDVD (where I installed 'proDVD). It was necessary to use it to set the key and path in my particular environment. The T43's burner doesn't support the default TAO mode so it is necessary to set DAO mode. Be patient -- DVD burning is slow on this machine.
Works in analog mode with xmcd and audio810.conf edit.
Out of the box, Sound works but CD audio doesn't with this version of Solaris Nevada. gnome-cd goes through the motions but no sound. If started from a terminal it displays an endless string of error messages:
CDROMCDDA: Invalid argument
xmcd from the Sun Solaris 10 U1 Companion DVD (available on the Solaris 10 download page) is silent in "standard playback" mode but issues a a similar error message in CDDA playback mode:
IOCTL: CDROMCDDA failed: Invalid argument
It looks like CD digital audio isn't working. No idea where in the path this is happening, but it seems to come and go depending on Solaris version. Analog CD playback can be enabled by editing /kernel/drv/audio810.conf and removing the "#" from this line:
and rebooting to restart the driver. This lets xmcd play CD audio in "standard playback" mode, but gnome-cd still insists on cdda playback and just displays a quick "dics error" in the GUI window and stops.
Works with gmplayer built from source.
The installed version of Totem (or its subcomponents) doesn't include DVD capability even though the movie menu includes it. I tried mplayer from Blastwave but it didn't perform very well. It was (at the time anyway) built without the -xv extensions and couldn't do hardware scaling to full screen. I decided to try to build it myself from source. After a few days of fiddling it turned out to be pretty easy.
Download the source, skin, and font from www.mplayerhq.hu.
The configure script provided doesn't find all the tools necessary - even when they are present in /usr/sfw/bin as they are in this S11 release. I set up the required links for the build. This isn't a great idea since depending on PATH, they may confuse other builds that expect ld to be ld, not gld for instance. It was handy to do this for building mplayer but the links should probably be removed after the build.
#ln -s gmake make
#ln -s gld ld
#ln -s gas as
#ln -s gar ar
By providing the right set of options to configure maked will find the necessary libraries for the build, but I couldn't get it to use the full library paths in the final object. This causes missing library errors when trying to run gmplayer. I didn't want to add the paths permanently with the crle tool so I hacked configure to add a new option (--use-R-option) that essentially says "when told to use extra libraries, build with the -R option, which uses full paths to libraries". My patch against MPlayer-1.0pre7try2 is here. I also set the PATH to include the /usr/sfw/bin tools, but have since added it to my default path. With the patched config and the appropriate path:
#./configure --enable-gui --with-install=/usr/ucb/install \
--with-x11libdir=/usr/X11/lib --with-x11incdir=/usr/X11/include \
--use-R-option --with-extralibdir=/usr/X11/lib \
Install skin and font per the documentation, and play:
$/usr/local/bin/gmplayer (for the gui version)
It may be necessary to select the xv video driver in Preferences->Video to get proper video output. It may also be necessary to select the correct audio track in DVD->Audio lanugages, and perhaps ajdust the audio delay in Preferences->Audio.
It isn't quite "out of the box" but it does play DVD movies.
It looks like SNV_28 runs the T43 in ACPI mode. Suspend/resume untested - and probably doesn't work/isn't implemented. The Fn/Fx suspend and hibernate keys don't do anything (they did do something on the R40 in APM mode - but didn't do it successfully). Other keys that are still handled by BIOS do work: LCD brightness and the ThinkLight. Whee.
Untested. Strictly subjectively it boots quickly and runs crisply.
Untested with Solaris. WinXP life is 5-6 hours.
[ ThinkPadT43 ][ Previous | Next ]