It took almost a week, but I finally got Solaris 10 installed and all up to snuff on my laptop. At this point, it almost feels natural.
There are a few warts remaining: I'm using the stock graphics and touchpad drivers, which work well enough but are missing a few key features (hardware acceleration for the graphics, and the side-of-the-touchpad scroll functionality for the touchpad). I'm not entirely happy with the default fonts that Firefox and Thunderbird are using, but that's relatively easy to fix as well.
So on with the war story!
I found, downloaded, and burned to DVD a Solaris 10 image that's a beta candidate for Solaris 10 Update 1. Burning the image under Windows was a bit of a pain (the online community has much more information about burning illegal DVD copies than legal ones; if you have an iso image and you just want to put it on a DVD, you end up learning a fair amount about how to get around the (non-existent, in this case) copy proteciton. Somehow not, I think, what the MPAA and RIAA had in mind when they attempted to lock people out of the format). However, after a single abortive attempt, I was able to get a bootable DVD image, and get to the Solaris install mode.
Installation was actually relatively painless, once I got over kdmconfig's terrible, terrible user interface. The Solaris installer still needs a lot of work in the UI department to be approachable; installing Ubuntu was a lot easier. On the advice of a few friends around the office, I installed in non-networked mode, so I didn't have to know DNS names or NIS setup or any of those goofy things. It just asked me for a hostname and a timezone.
Once I had the bits laid down on the drive, with grub in place and set up to dual-boot Windows and Solaris, the first of the Moments of Truth arrived: time to see if it boots.
Into 640x480, even though the installer had correctly detected and used the laptop's native 1400x1050 resolution. Without a way to talk to the Windows install, where a bunch of useful files were. With neither wired nor wireless networking functioning. And without sound or any battery management. So I tackled those problems in the order I've given them above, which also happened to be the order of annoyance for me.
Video As it turns out, the installer uses Xsun as its X server, instead of Xorg (which is the default postinstall); while kdmconfig can do autodiscovery for Xsun, it can't for Xorg. In fact, xorg.conf was absent from /etc/X11 entirely, and it was using the internal defaults which are, of course, pretty conservative. I was able to launch a terminal window (I guess I could have dropped to console mode) and get to /usr/X11/bin/xorgcfg which let me specify some more sane values for my Hsync and Vsync without worrying about arcane details of xorg.conf syntax, and then log out and restart Xorg. No change! still 640x480. So I checked what xorgcfg had actually done in xorg.conf, and found that it had commented out the H and Vsync entries it put there, in the hopes that the monitor's DDI subsystem would be capable of sorting that stuff out on its own. It wasn't, though, so I uncommented the entries and restarted again -- success! Native resolution, persisting across reboots, without instability.
Windows Interoperability: The windows side of the laptop was set up as two partitions: an NTFS boot partition, and a FAT32 partition helpfully called SHARED. Solaris doesn't come with an ntfs driver, but it does have the pcfs driver that's capable of reading and writing FAT16 (which nobody uses anymore because it'll only do 2GB partions) and FAT32. Mounting it was just a question of experimenting with mount(1M), with the mount(1M) and pcfs(7FS) man pages open. Another point of interoperability that amazed me to begin with was the fact that when I stuck a FAT-formatted USB thumbdrive in the machine (actually to transfer some networking stuff over to Solaris), it Just Worked -- automountd noticed it, mounted it, and helpfully put a link on my GNOME desktop. It Just Worked! It was more than a little creepy, and I couldn't help but wonder whether it was going to corrupt files or otherwise cause problems. But it didn't (as far as I could tell).
Networking: I was expecting networking to be an ordeal of legendary proportions. It seems to be a place people get stuck in a big way, and it's compounded by the fact that, until you get internet connectivity, it's impossible to find solutions to your problems on the machine that's actually having them. It was surprisingly easy, though, not least because of Inetmenu. After installing the package and setting up RBAC (all described in the documentation), just running the GNOME applet automatically connected me to work's network, authenticated properly against the NIS and everything. And I thought the thumbdrive thing was cool! It Just Worked, almost as if I was in Linux!
Getting wireless set up was a bit more difficult, but that wasn't really Solaris' fault. I had only gotten the wifi router 24 hours before, so I was trying to figure out its web UI, the Windows wireless networking setup, and the Solaris wireless setup all at once. Also, unlike the wired card, the driver I needed wasn't stock -- I had to get it from the same OpenSolaris laptop community site I linked above. Also, the wificonfig utility that I used to set my WEP key and configure the wireless connection was a bit flaky, and reported failure when I ran it alone on the command line but seemed to work when inetmenu ran it. Oh well -- it works, and I'm actually typing this wirelessly from my living room right now.
Sound: After the wireless triumph, I was able to get some software installed and make the place feel a little bit more like home. I snagged Blastwave's pkg-get, and downloaded firefox and thunderbird and sudo, to make my life easier and not have to su to root all the time to do configuration. I also started looking around the web to see what the deal was with sound, and found a few places that had drivers I could use. I installed them, but I couldn't get them to work -- I knew that they were doing *something* though, because after I installed them and reboot(1M)ed, the machine would lock up when either Windows or Solaris tried to initialize. Eventually, I discovered that reboot(1M) and shutdown(1M) are NOT THE SAME THING, and that I needed to do the latter and not just the former to get the driver to load properly. Once I did that, I had sound!
Battery: Solaris' power-management functionality for laptops is pretty limited. It can't do the dynamic performance tuning that Windows can with the Pentium M, and scaling screen brightness and such on the fly according to battery usage is beyond it. That said, there are some beta programs on the community site for a battery utility and GNOME tray applet, and I'll take what I can get. I get about an hour and 40 minutes of battery life out of Solaris on a full battery, probably more if I can figure out a way to dim the screen and scale the CPU back manually. That's OK though -- the times when I want to run it without a battery pack are actually relatively few and far between.
I'm sure I've glossed over some of the difficulties I had, and that there are configuration steps that I've missed in this little war story. Drop me a line if you're interested in more details, or if you want to install Solaris on x86 -- I feel confident I can solve most installation problems, now.
Phew! Now I can get back to real work!