Monday Mar 21, 2011


I haven't blogged here in a long while.  Here's an entry to show that I'm still alive...

Friday Apr 10, 2009

Creating OpenSolaris installation USB sticks on Windows

It was great to read my mail this morning and see this:

A nice GUI tool that will allow Windows users to put a copy of OpenSolaris media on a usb stick which they can use to boot machines without (and with if you'd rather save a CD) a cd/dvd-rom instead of needing to have Solaris/OpenSolaris already installed somewhere and using the usbcopy script.

Now, if we could get something similar written for Linux, Mac OS X and OpenSolaris the path to world domination would be even closer :-)

 I haven't tried this yet, so I can't speak to how well it does or does not work.  A USB image that can be written to a USB stick can be found at:

This is the latest snapshot of what will be the 2009.06 OpenSolaris release (which is shaping up quite nicely).

Friday Apr 25, 2008

HOWTO: Enable zfs compression when installing OpenSolaris 2008.05

Currently the simplified installer we're using for OpenSolaris 2008.05 (aka Project Indiana) doesn't support specifying zfs options for the zpool that gets created on the target disk during installation.  You can always turn options on after installation but compression is one option that isn't applied retroactively and so really benefits either new zfs filesystems created after installation or being turned on when the initial zfs pool is created.  Enabling compression for the zfs pool that gets created during installation isn't all that difficult.  Here's how you do it.

Step 1: Boot the OpenSolaris 2008.05 live media

Step 2: Once booted and sitting at the Gnome desktop, open a terminal window by right-clicking on the desktop and click on the open terminal selection

Step 3: Create a new file with the following content (vi


until [ "`zpool list rpool`" ];

pfexec zfs set compression=on rpool

# For some reason, the rpool/ROOT dataset (which is the root filesystem

# doesn't inherit the compression property from the parent

# pool like the other datasets.  So, we'll just set it manually

pfexec zfs set compression=on rpool/ROOT 

Save the file and make it executable (chmod +x

Step 4: Now run the script (./

Step 5: Double click on the Install icon on the desktop and proceed as normal

That's all there is to it.  Once you start the installation (after you answer the few questions required) the installer will setup a zfs pool on your target disk.  When that happens the script will set the compression property on that pool and the script will exit.  Thus your entire installation (at least a very high percentage of it) will be compressed where it can.

Laptop users or users that will only have a single disk may also want to change the copies property of the zpool so that in the case of disk errors zfs will have more than one place to look for the data in order to attempt a recovery.  Just add the following to the end of the script above.  This will store two copies of data instead of just one.

pfexec zfs set copies=2 rpool

pfexec zfs set copies=2 rpool/ROOT

Release Candidate for OpenSolaris 2008.05 based on Project Indiana now available

A release candidate for the upcoming OpenSolaris 2008.05 release from Project Indiana is now available.  See stephen's announcement for the details.  We'd love to get feedback!  Though do have a look through bugzilla first just to make sure someone else hasn't already reported any issues you might find.

Thursday Jan 31, 2008

CPU power management on OpenSolaris

I haven't forgotten about my promise to post more (in particular to post about configuring my new T61P). I've got a post or two in process that I'm tidying up that documents all of that. I should have them up 'soon'. In the meantime I thought I'd post how I enabled CPU power management on my Lenovo T61P running Indiana since it took me a little bit to actually find out how to do so. This will also work on Solaris Express Developer Edition as well as Solaris Express Community Edition versions of OpenSolaris as long as you're running build 70 or higher.

Power Management for OpenSolaris is being developed by the Tesla project. This is to utilize Intel's Enhanced SpeedStep technology in their line of processors which allows the Operating Systems to scale the processor speed depending on system load or other user defined policies. Which has the nice side effect of using less power (good for laptops when disconnected from a power source) and generating less heat (good for not scorching one's body parts when using aforementioned laptops). Thanks to you can now manage some Intel cpu's operating frequency. And it's dreadfully easy (as long as your cpu supports it, see the flag-day referenced above which outlines how to check if your cpu is supported) to enable.

Modify /etc/power.conf and add the following entries:

cpupm enable
cpu-threshold 15s

After that, just run /usr/sbin/pmconfig as root (or with rootly powers via pfexec in the case of Indiana) and in 15 seconds you should see that your cpu frequency will drop. You can get a lot of useful information from the cpu_info kstat (/usr/bin/kstat cpu_info). In particular the current_clock_hz and supported_frequencies_hz. In my case, the processor in the T61P has a max frequency of 2.4Ghz. With cpupm enabled the processor cores run at 800Mhz when the machine is idle. Pretty great stuff :-)

Now all I need is solid S3 (suspend to ram) support (which is also under development) and OpenSolaris on a laptop will just about rival Mac OS X (at least for the things I care about).

Wednesday Dec 19, 2007

Christmas come early...

...or more appropriately "Hey! I got some new toys...hardware to play with".

Thanks to my very generous manager Eric Ray, I received a couple of new laptops yesterday. A Lenovo Thinkpad T61p and an Apple MacBook Pro revision C. These laptops will replace existing machines that I already have (a black MacBook and an HP 6510B). I plan to document how I use these machines starting with installation and then moving into setup and configuration. I'll do this in several posts. In this post I'll outline the hardware specifications and their intended uses.

The MacBook Pro's configuration highlights:

  • 2.16 GHz Intel Core 2 Duo
  • 3 GB 667 MHz DDR2 SDRAM
  • ATI Radeon X1600 with 128 MB Ram
  • 15.4" Display at 1440x900 resolution
  • 120 GB Hard Drive
  • 6X Double-Layer Superdrive
  • Hardware Revision C (pre-Santa Rosa)

  • Lenovo T61p configuration highlights:

  • 2.4 GHz Intel Core 2 Duo (T7700, Santa Rosa)
  • Intel Wireless WiFi Link 4965AGN
  • Intel e1000g wired ethernet
  • 160 GB 7200 RPM Sata disk
  • 8X DVD-Writer
  • 15.4" WUXGA TFT Display at 1920x1200 resolution
  • 4 GB PC2-5300 667 MHz DDR II SDRAM
  • NVidia Quadro FX 570M graphics chip with 256 MB dedicated memory
  • Both of the laptops are going to be work and test machines. I'll primarily be doing day-to-day stuff (email, document creation, chat, remote access via ssh, irc) using OS X Leopard on the MacBook Pro. Since I work in the Installation group at Sun, I'll also be installing Parallels Desktop and VMWare Fusion so that I can test new builds of Solaris Express (internally code-named Nevada which is the basis for the next release of Solaris) and Project Indiana under those environments.

    The T61p will be used more for testing various things than actual day-to-day work. I'll be triple-booting this machine. It comes with Vista Ultimate pre-installed which I'll use for testing Indiana and Solaris Express in VMWare Workstation. I'll also be loading Ubuntu as well as Solaris Express. The Ubuntu installation will allow me to play with VMWare Workstation and VMWare Server so I can test Installing Solaris Express and Indiana in those environments. I suppose I could also test Xen in this configuration as well. The Solaris Express installation will allow me to have a true Solaris Instance available for whatever I might need. As well as trying out xVM and seeing how/if we in the Install group can use that technology for testing our code. Not to mention seeing how things like Indiana might run under xVM.

    With these laptops and configurations I should really be able to test a lot of different things as they relate to Installation of Solaris and Solaris derivatives such as Indiana. Which considering my day job is to help improve Installation of those things, this is a good thing :-)

    Stay tuned for my next post where I'll talk about installing Ubuntu and Solaris Express on the T61p. Hopefully I can get that up before I go on holiday at the end of the week. Otherwise it will have to wait until after the New Year.

    Monday Apr 02, 2007

    Dwarf Caiman or rather, this isn't your father's Solaris Installer

    Greetings Blogosphere. Long time, no post. That's mostly due to my working on things that weren't necessarily interesting outside of Sun (ie Gatekeeping/Release Engineering). That said, I've had a change in responsibilities and so am more likely to start posting here again. Stay Tuned.

    Now to the topic at hand. I was involved with the Consolidation that handles the Solaris Installer technology for almost 2 years. As such, I grew quite an affinity for the work going on to bring the Solaris Installer into the 21st century as it were in respect to offerings from Apple, Windows and Linux distributions (for distributions that offer more than a text based install that is).

    The work required is part of a larger initiative called Caiman which calls for the re-architecture of the Solaris Installer. Dave Miner is the architect for this overall strategy and posted an architecture document on OpenSolaris. You can find the document here.

    The work outlined in that document is being undertaken in the Installation and Packaging Community.

    The first effort to come out of this re-architecture is the Dwarf Caiman project

    Today the team working on Dwarf Caiman released a demo of the gui application which will become the Solaris Installer. The announcement with the details can be found on the install-discuss forum/mailing list.

    That said, downloading the demo package and installing it should pose no great risk. It doesn't do an actual install and thus doesn't modify anything on disk. It merely walks through what the Install will look like. This is however pre-pre-pre Alpha and the usual caveats for such software applies. There's lots of bugs to be sure. And certainly alot more work to be done to turn it from a demo into a functional piece of software.

    I was utterly blown away after installing the demo and running it. I know the people working on this project and they're very smart so it should really come as no surprise as to how good this looks. Comparing the demo Installer to what we currently employ is, well farther apart than comparing night and day in my opinion. The Dwarf Installer rivals anything that Windows, Mac OS or Linux put out as far as I'm concerned. It truly looks sophisticated and functional. The team has managed to put together something that looks more 21st century than 20th. And this is just window dressing as it were. I can not wait until this is available to install Solaris with.

    I highly suggest that anyone who is curious about where we are taking the Solaris installation experience to go ahead and download the demo and take a look. Sure, this is just window dressing but it's going to allow us to do some really cool things underneath and it's only the beginning of a much larger strategy.

    As the saying goes, the future looks bright indeed!

    Friday Jan 20, 2006

    How to remove a batch of packages without pulling your hair out

    So, I wanted to remove all of the blastwave packages I had installed on my system. Fortunately, all of their packages start with the CSW prefix (as opposed to SUNW which Sun itself uses). A couple of lines of shell later and we have:

    First create a list of installed blastwave packages

    # pkginfo | grep CSW | awk '{ print $2 }' > cswpkgs.list

    Now, remove them

    # yes | pkgrm `cat cswpkgs.list`

    Every single blastwave package will be uninstalled and what's better is you won't be prompted for each and every package to confirm that you do in fact want to remove the package.

    Wednesday Jun 22, 2005

    Retro Gaming - Solaris Style

    Being a long-time avid gamer I enjoy reminiscing and running old favorites on today's hardware and software when possible.

    Dan pointed out to me at lunch today that an old favorite of ours called star control 2 was available as open source. He thought it would be quite cool to get it running on Solaris x86 (which I agreed with).

    So, after downloading the source and the content files it was a simple matter of adding some libs from blastwave and compiling it up. Sure enough, it runs just beautifully (1980's style) on my Solaris x86 box.

    This was done on an x86 box running the equivalent of Solaris Express 06/05. You'll need the following:

    gcc (/usr/sfw/bin/gcc) gnu make (/usr/sfw/bin/gmake)

    You'll also need to install the following packages from blastwave (or you could roll your own):

    /opt/csw/bin/pkg-get -i libsdl libogg libvorbis sdlimage

    Then set some environment variables:

    export PATH=/opt/csw/bin:/usr/sfw/bin:$PATH
    export CPPFLAGS="-I/opt/csw/include -I/usr/sfw/include"
    export LDFLAGS="-L/opt/csw/lib -L/usr/sfw/lib -R/opt/csw/lib -R/usr/sfw/lib"

    Then your on to compiling:

    ./ uqm config
    ./ uqm depend
    ./ uqm install



    Tuesday Jun 14, 2005

    Solaris Standards Conformance

    Today with the launch of OpenSolaris I thought I would talk about something that doesn't seem to get a lot of notoriety (ie. standards work inside Sun).

    One of the things I worked on during Solaris 10's development cycle was the Solaris AGR/UNIX200x/SUSv3 Standards Conformance project. The project was tasked with delivering the ON (OS/Networking) portions of a certifiable/brandable Solaris Product as defined by the work performed by the AGR (Austin Group Revision) Standards Working Group.

    This work is also sometimes identified as UNIX200x and SUSv3. The formal standard is known by the following:

    This standard requires conformance to the ISO/IEC 9899:1999 C programming Language standard.

    My contribution to this project was specifically in the networking area. It involved making changes to various header files so that Solaris conforms to the above listed specifications. While I didn't add alot of new exciting code as part of this project, I did get to add a completely new system call (See Erick Schrock's treatise on how to do this properly). Prior to Solaris 10, there was no sockatmark() system call. Since the Open Group Base Specification requires this, I needed to add it to Solaris.

    The function itself is trivial, it is used to determine whether a socket is at the out-of-band mark. On Solaris, before this was implemented, a developer would just issue an ioctl call using the SIOCATMARK request. This is essentially what sockatmark() does. I made it a wrapper system call that calls ioctl with the proper request.

     \* Determine whether the socket is at the out-of-band
     \* data mark.
    _sockatmark(int sock)
            int val;
            if (ioctl(sock, SIOCATMARK, &val) == -1)
                    return (-1);
            return (val);

    Not ground breaking or sexy but part of a bigger picture nonetheless.

    There were many contributors to this project (ON is rather large in terms of the sheer amount of code contained therein) and it was a great team to work on and with. We managed to complete all of the required work and Solaris 10 is branded for UNIX03 on all architectures that Solaris 10 supports (x86,sparc,opteron). Of course, since the next version of Solaris starts out from where Solaris 10 finished, the next version should be branded as well once it ships.

    Technorati Tag:
    Technorati Tag:

    Tuesday May 31, 2005

    printf("Hello World!\\n");

    Allow myself to introduce... myself.. I've been at Sun for 6 years now (in fact today is my 6 year anniversary).

    I came to Sun (in reverse chronological order) by way of Progress Software, FTP Software, and finally Tranti Systems. I was hired into Sun by Doug Chmura to work in the Networking Technical Support Group. Providing technical support to customers on a variety of issues. Pretty much all of the core networking functionality in Solaris (tcp/ip, sendmail, dns, nis, nis+, etc.). That was a fun group to work in. And boy, let me tell you, I learned more about Unix administration and troubleshooting in my first 6 months on the job than I had my entire career at the time. Which of course I loved for various reasons. Mostly because I love to learn new things (I think you have to if your going to be successful in high tech). The work was really stressful, you've never quite had a phone call as one from a harried system administrator who is screaming at you because his mission critical server isn't doing it's job.

    Having worked in the Technical Support field for more years than I cared to remember, I decided it was time for a change (more to the point I decided I was tired of picking up a telephone every 5 minutes) and moved over into Software Test Development in the SNT (Solaris Networking Technologies) group. Though it's not called SNT anymore, I still work with the same guys on the same things. Essentially, instead of supporting the core networking functionality in Solaris, I helped write automated (and some not so automated) tests and test suites for said functionality (and new technology as it was integrated).

    And now comes a new chapter to my professional career. Instead of writing tests for features and functionality in Solaris, I'll be developing those features and functionality. I'll be helping the Install area of Solaris (fixing bugs for starters).

    It should be a fun ride.




    « April 2014