Okay, so I'm not the first to document this configuration (1). However, I wasn't successful with any of the other approaches I discovered. Maybe this was because it most cases they were using a pre-release build of OpenSolaris 2008.05. So, for what it's worth, here are the steps that led me to success...

What I've Got

  • MacBook Pro w/ a 2.4 GHz Intel Core 2 Duo processor (model A1226) running OS X 10.5.1. I believe these steps would work for any MacBook w/ an Intel Core 2 Duo processor.

What You'll Need

  • OpenSolaris 2008.05
  • A blank writable CD (to burn OpenSolaris 2008.05)
  • Your OS X Installation DVD
  • rEFIt - a boot menu for EFI-based machines like the Intel Mac.
  • A USB thumb drive (for the network drivers)
  • A USB mouse (Solaris doesn't support ctrl-click :-()

What You Should Know

I still haven't gotten the audio to work :-(.

What I Did

Step 1: Burn the OpenSolaris 2008.05 Live CD

OpenSolaris comes as a live bootable CD, that once loaded provides you the option to install the OS.

  • DownloadOpenSolaris 2008.05.
  • Start Disk Utility.
  • Select the os200805.iso and the click Burn in the toolbar.

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/os200805-iso.png

Step 2: Put the Ethernet Drivers on a USB Stick

Unfortunately, the drivers for the Ethernet adapter are not included on the Live CD. Save yukonxsol_x64v8.19.2.3.tar.Z to a USB thumb drive (you could also burn it to a CD if you don't have a USB drive handy).

Step 3: Create a Partition for OpenSolaris 2008.05

First I tried to create a partition from my existing Mac OS installation using "diskutil resizeVolume", but this kept failing on me because of insufficient disk space. Now my MacBook's about 9 months old and has been through an upgrade to Leopard, so I imagine the disk was pretty fragmented. Luckily I'm using Time Machine so I just decided to start from scratch. 
  • Insert your OS X installation DVD. When it loads, click Install Mac OS X:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/Mac_OS_X_Install_DVD.png
  • Then click the Restart button to launch the installer:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/Install_Mac_OS_X.png
  • When you get to the Welcome screen, select Disk Utility from the Utilities menu.
  • When Disk Utility starts, select the MacBook's hard drive. Mine is a "149.1 GB FUJITSU MHW2160BHPL Media". Then select the Partition tab on the right panel.
  • Change the Volume Scheme to 2 Partitions.
  • Select the Untitled Partition 1 and set the following
  • Select the Untitled Partition 2 and set the following
  • Click the Options button and verify GUID Partition Table is selected as the partition scheme (we'll have to change this later as the OpenSolaris installer does not recognize GUID Partition Tables).
  • Click Apply and then Partition when the Partition Disk dialog appears. It only takes a couple of seconds for the new partition map to be created. This is what my disk looks like after the disk is repartitioned:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/Disk_Utility_After_Partition.png
  • Quit Disk Utility

Step 4: Install OS X

  • You should now be back at the installer's Welcome screen. Click Continue to proceed with the installation of OS X.
  • Select the MacOS partition on the Select a Destination screen.
  • Select Install on the Install Summary screen and go do something else for a couple of hours as OS X installs.
  • Once the install is complete you'll be presented with the Welcome screen where you'll select your country, keyboard and then the option to restore from a Time Machine backup. Restoring from Time Machine took several more hours, so this time around I'm going to skip this step (I can always do a restore later) and just complete the vanilla installation (selecting Do not transfer my information now).
  • Complete the installation entering your Apple ID, Registration Information, etc.

Step 5: Install rEFIt

rEFIt is a boot menu that will allow you to choose between Mac OS and OpenSolaris at system start up. 
  • Download and install rEFIt using the Mac disk image.

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/rEFIt_installer.png
  • To ensure that rEFIt is always enabled, open a Terminal and enter the the following command:

    $ sudo /efi/refit/enable-always.sh

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/enable-always.png
  • After OpenSolaris is installed, the rEFIt boot menu is going to display the Linux penguin for OpenSolaris. While we're in Mac OS and have access to the EFI partition, let's replace the Linux icons with OpenSolaris icons:
  • Save these files to your /efi/refit/icons directory. Rename the original files if you don't want to loose them.

Step 6: Change the EFI partition ID


If you attempted to install OpenSolaris now, it would not recognize the new partition that was just created, only giving you the option to install over the entire disk. In this step we change the partition ID for the EFI partition from 'EE' to 'AF'.
  • Open a Terminal and run diskUtil list:

    william-leonards-macbook-pro:~ brianleonard$ diskUtil list
    /dev/disk0
    #: TYPE NAME SIZE IDENTIFIER
    0: GUID_partition_scheme *149.1 Gi disk0
    1: EFI 200.0 Mi disk0s1
    2: Microsoft Basic Data OPENSOLARIS 55.0 Gi disk0s2
    3: Apple_HFS MacOS 93.7 Gi disk0s3

    Your internal hard drive should show up as /dev/disk0. You'll also see disks for the OS X installation DVD and your Time Machine drive.

  • Next we will alter partition 1, the EFI partition. Run:

    william-leonards-macbook-pro:~ brianleonard$ sudo fdisk -e /dev/disk0
    Password:
    fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory
    Enter 'help' for information
    fdisk: 1>

  • At the fdisk prompt, type p to print the partition table:

    fdisk: 1> p
    Disk: /dev/disk0geometry: 19457/255/63 [312581808 sectors]
    Offset: 0 Signature: 0xAA55
    Starting Ending
    #: id cyl hd sec - cyl hd sec [ start - size]
    ------------------------------------------------------------------------
    1: EE 1023 254 63 - 1023 254 63 [ 1 - 409639] <Unknown ID>
    2: 0B 1023 254 63 - 1023 254 63 [ 409640 - 115344664] Win95 FAT-32
    3: AF 1023 254 63 - 1023 254 63 [ 115754304 - 196565320] HFS+
    4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
    fdisk: 1>

You'll see that partition 1 is of type EE <Unknown ID>. Let's change it to AF HFS+:

  • At the prompt type: setpid 1

    fdisk: 1> setpid 1
    Starting Ending
    #: id cyl hd sec - cyl hd sec [ start - size]
    ------------------------------------------------------------------------
    1: EE 1023 254 63 - 1023 254 63 [ 1 - 409639] <Unknown ID>
    Partition id ('0' to disable) [0 - FF]: [EE] (? for help)

  • Enter AF:

    Partition id ('0' to disable) [0 - FF]: [EE] (? for help) AF
    fdisk:*1>

  • Then write:

    fdisk:*1> write
    Device could not be accessed exclusively.
    A reboot will be needed for changes to take effect. OK? [n]

  • Then y:

    A reboot will be needed for changes to take effect. OK? [n] y
    Writing MBR at offset 0.
    fdisk: 1>

  • Then quit:

    fdisk: 1> quit
    william-leonards-macbook-pro:~ brianleonard$

  • Eject the OS X Installation DVD and insert the OpenSolaris 2008.05 Live CD.
  • Restart
  • From the rEFIt menu, select the option to "Boot Legacy OS from CD"
  • As the Live CD boots, select your keyboard layout and desktop language and then wait for the desktop to load.
  • Close the license.
  • Click the Install OpenSolaris icon on the desktop:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/Desktop.png

  • Once the Welcome screen loads click Next to get to the Disk screen:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerWelcome.png

  • On the Disk screen you'll notice that OpenSolaris recognizes the newly created Win95 FAT32 partition:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerDiskFat32.png

  • Change the Partition Type to Solaris:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerDiskSolaris.png

  • Click Next to select your Time Zone, Date and Time. Note, you can use the Map to select your region:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerTime.png

  • Select your Locale:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerLocale.png

  • Set up your users:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerUsers.png

  • Review the Installation summary and then Install:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerSummary.png

  • It takes about 30 minutes for the installer to complete:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerInstalling.png

  • Once complete, select Reboot:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/OpenSolarisInstallerFinished.png

Step 8: Start OpenSolaris and Install the Wired Ethernet Driver

  • If you installed the OpenSolaris icons, you'll see them now in the rEFIt menu.
  • Insert your USB mouse.
  • Open System > Administration > Device Driver Utility. You see that both the wired and wireless network drivers are missing. Select the Marvel Technology Group Ethernet Controller and write down the Vendor ID and Device ID. In my case these are 11ab and 436a respectively:



  • Copy yukonxsol_x64v8.19.2.3.tar.Z from the USB drive to the desktop.
  • Open Applications > System Tools > Terminal.
  • You should be in your home directory. CD into the Desktop directory:

    bleonard@opensolaris:~$ cd Desktop
    bleonard@opensolaris:~/Desktop$

  • Unzip the archive:

    bleonard@opensolaris:~/Desktop$ gunzip yukonxsol_x64v8.19.2.3.tar.Z
    bleonard@opensolaris:~/Desktop$

  • Untar the archive:

    bleonard@opensolaris:~/Desktop$ tar -xvf yukonxsol_x64v8.19.2.3.tar
    YUKONXsolx/
    YUKONXsolx/pkgmap
    ...
    YUKONXsolx/install/yukonx.txt
    yukonx.txt
    yukonx.htm
    bleonard@opensolaris:~/Desktop$

  • Install the package:

    bleonard@opensolaris:~/Desktop$ pfexec pkgadd -d . YUKONXsolx

    Processing package instance <YUKONXsolx> from </export/home/bleonard/Desktop>

    Marvell Yukon Ethernet Controller 64 bit driver(i386) 8.19.2.3
    Marvell

    ----------------------
    IP configuration
    printf: ----------------------\n\n: unknown option
    Usage: printf [ options ] format [string ...]
    Do you want to configure the IP interfaces now (y/n)?

  • Yes, configure the IP interfaces now...

    Do you want to configure the IP interfaces now (y/n)? y

    Configuring Marvell Gigabit Ethernet interface 0

    NOTE: If you want to configure the driver for the use of VLANs,
    you should use the script /usr/sbin/yukonx_vlan_config.
    You have to do this after driver installation is finished.

    Please enter a hostname for the Marvell Gigabit Ethernet interface.
    It should be different from all existing hostnames in
    your system (see /etc/hostname.*).

    Hostname [yukonx0]:

  • Select the default Hostname 'yukonx0'...

    Hostname [yukonx0]:

  • DHCP will ultimately set the IP address, so for now I just enter 127.0.0.1...

    Enter the IP address for 'yukonx0' []: 127.0.0.1

    WARNING: The selected IP address has been found in
    /etc/hosts:

    127.0.0.1 opensolaris opensolaris.local localhost loghost

    This can cause problems, but it
    might be intentional in this case.

    Enter the IP netmask for 'yukonx0' []:

  • Enter the IP netmask, I used 255.255.255.0, and review the settings...

    Enter the IP netmask for 'yukonx0' []: 255.255.255.0

    Settings for Marvell Gigabit Ethernet interface 0:
    hostname : yukonx0
    IP-address : 127.0.0.1
    IP-netmask : 255.255.255.0
    IP-netnumber: 127.0.0.0

    NOTE: If the netmask does not consist of '255's and '0's only,
    the netnumber in /etc/netmasks will require manual correction

    Are these settings OK (y/n)?

  • Answer yes to confirm the settings and then no to configure another adapter...

    Are these settings OK (y/n)? y

    Do you have more Marvell Gigabit Ethernet adapters installed (y/n)? n
    Using </> as the package base directory.
    ## Processing package information.
    ## Processing system information.
    10 package pathnames are already properly installed.
    ## Verifying disk space requirements.
    ## Checking for conflicts with packages already installed.
    ## Checking for setuid/setgid programs.

    This package contains scripts which will be executed with super-user
    permission during the process of installing this package.

    Do you want to continue with the installation of <YUKONXsolx> [y,n,?]

  • Answer yes to continue with the installation of the package...

    Do you want to continue with the installation of <YUKONXsolx> [y,n,?] y

    Installing Marvell Yukon Ethernet Controller 64 bit driver as <YUKONXsolx>


    ## Executing preinstall script.
    ## Installing part 1 of 1.
    /etc/rcS.d/S50yukonx
    /kernel/drv/amd64/yukonx
    /kernel/drv/yukonx.conf
    /usr/sbin/yukonx_vlan_config
    /usr/share/man/man7d/yukonx.7d
    [ verifying class <none> ]
    [ verifying class <master> ]
    ## Executing postinstall script.
    /var/sadm/pkg/YUKONXsolx/install/postinstall[14]: /usr/ucb/echo: not found [No such file or directory]
    devfsadm: driver failed to attach: yukonx
    Warning: Driver (yukonx) successfully added to system but failed to attach
    /var/sadm/pkg/YUKONXsolx/install/postinstall[113]: /usr/ucb/echo: not found [No such file or directory]
    pkgadd: ERROR: postinstall script did not complete successfully

    Installation of <YUKONXsolx> partially failed.
    bleonard@opensolaris:~/Desktop$

  • Don't worry about the failure, we'll update the driver next...

    bleonard@opensolaris:~/Desktop$ pfexec update_drv -a -i '"pci11ab,436a"' yukonx
    bleonard@opensolaris:~/Desktop$

  • Then plumb the interface...

    bleonard@opensolaris:~/Desktop$ pfexec ifconfig yukonx0 plumb
    bleonard@opensolaris:~/Desktop$

  • Then in a couple of seconds you should see the interface come up:

    http://weblogs.java.net/blog/bleonard/archive/2008/05/opensolaris/Screenshot-Information.png

  • Test the connection:

    bleonard@opensolaris:~/Desktop$ ping www.google.com
    www.google.com is alive

  • Confirm that all is well (at least for the Marvell card) in the Device Driver Utility:


Step 9: Install the Wireless Adapter Driver

Now that we're connected to the Internet, the world is at your fingertips. However, let's do one more thing (for now) and install the wireless adapter driver.

  • Select the Atheros Communications Wireless PCI Express Adapter in the Device Driver Utility. Write down the Vendor ID and Device ID. In my case these are 168c and 24 respectively:



  • Download the SUNWatheros 0.7.2 package and save it to your desktop.
  • Return to the Terminal and gunzip and untar the package.
  • Install the package:

    bleonard@opensolaris:~/Desktop$ pfexec pkgadd -d SUNWatheros

    The following packages are available:
    1 SUNWatheros Atheros 802.11b/g Wireless NIC Driver
    (i386) 11.11,REV=2007.12.18.15.35

    Select package(s) you wish to process (or 'all' to process
    all packages). (default: all) [?,??,q]:

  • Press enter to select the default - all...

    Select package(s) you wish to process (or 'all' to process
    all packages). (default: all) [?,??,q]:

    Processing package instance <SUNWatheros> from </export/home/bleonard/Desktop/SUNWatheros>

    Atheros 802.11b/g Wireless NIC Driver(i386) 11.11,REV=2007.12.18.15.35
    # ident "@(#)LICENSE 1.1 05/11/28 SMI"

    SOLARIS WIRELESS DRIVER FOR THE ATHEROS 52XX CHIPSET (ATH)

    LICENSE AGREEMENT

    ...

    Using </> as the package base directory.
    ## Processing package information.
    ## Processing system information.
    5 package pathnames are already properly installed.
    ## Verifying package dependencies.
    ## Verifying disk space requirements.
    ## Checking for conflicts with packages already installed.

    The following files are already installed on the system and are being
    used by another package:
    * /kernel/drv/amd64/ath
    * /kernel/drv/ath
    * /kernel/misc/amd64/net80211
    * /kernel/misc/net80211

    * - conflict with a file which does not belong to any package.

    Do you want to install these conflicting files [y,n,?,q]

  • Answer yes to install the conflicting files and yes to continue with the installation...

    Do you want to install these conflicting files [y,n,?,q] y
    ## Checking for setuid/setgid programs.

    This package contains scripts which will be executed with super-user
    permission during the process of installing this package.

    Do you want to continue with the installation of <SUNWatheros.2> [y,n,?] y

    Installing Atheros 802.11b/g Wireless NIC Driver as <SUNWatheros.2>

    ## Installing part 1 of 1.
    /kernel/drv/amd64/ath
    /kernel/drv/ath
    /kernel/misc/amd64/net80211
    /kernel/misc/net80211
    [ verifying class <none> ]
    ## Executing postinstall script.

    Installation of <SUNWatheros.2> was successful.
    bleonard@opensolaris:~/Desktop$

  • Remove and reinstall the driver...

    bleonard@opensolaris:~/Desktop$ pfexec rem_drv ath
    bleonard@opensolaris:~/Desktop$ pfexec add_drv -i '"pci168c,24"' ath

  • Plumb the interface...

    bleonard@opensolaris:~/Desktop$ pfexec ifconfig ath0 plumb

  • Configure the interface for DHCP:

    bleonard@opensolaris:~/Desktop$ pfexec ifconfig ath0 dhcp

  • Wired connections take precedence over wireless. Unplug the wired connection to test the wireless...

  • Scan for available networks:

    bleonard@opensolaris:~/Desktop$ wificonfig scan
    essid bssid type encryption signallevel
    CowPlanet 00:1e:52:7a:26:e5 access point none 15

  • And connect:

    bleonard@opensolaris:~/Desktop$ wificonfig connect 'CowPlanet'
    wificonfig: connecting to essid 'CowPlanet'
    bleonard@opensolaris:~/Desktop$

  • See it's status:

    bleonard@opensolaris:~/Desktop$ wificonfig showstatus
    linkstatus: connected
    active profile: none
    essid: CowPlanet
    bssid: 00:1e:52:7a:26:e5
    encryption: none
    signal strength: strong(15)

  • And test:

    bleonard@opensolaris:~/Desktop$ ping www.google.com
    www.google.com is alive

  • Confirm that the network driver issues are now resolved in the Device Driver Utility:



Resources

Everything I've summarized here I was able to learn from these various resources: