How to Dual Partition a MacBook Pro with MacOS and Solaris

Having used a Dual partitioned laptop for the last few years, I managed to get my hands on the departments Intel MacBook Pro and decided to try and Dual Partition it with MacOS and Solaris.
I must point out that I'd never used MacOS before and decided the best way to try and achieve this goal, would be to read other peoples blogs. After reading and trying the methods described in many different blogs, I'd gained enough experience to work out what needed to be done.

Much of the credit for me getting this working must go to Alan Perry, as it was his Blog that was instrumental in giving me the information on how to setup the disk Partitioning. All I've done is made a few modifications to get it to work for me on a MacBook Pro.

Update: 04-Dec-2007

I recently reinstalled my MacBook Pro with Leopard and reran this procedure to install OpenSolaris build 76. This time I found that I could simply boot from the Leopard Installation DVD instead of using an external drive (installed with MacOS).


Prerequisites

  • This procedure assumes that MacOS has been installed on a single partition and the OS and Firmware have been installed with the latest updates.
  • MacOS Installation DVD
  • Recent build of Solaris Express Installation DVD.

 

Installation Process

  1. Boot MacOS from the Interal HD.
  2. Create the new Solaris partition. Actually create a Windows partition and we will recreate a Solaris2 Partition later. (You will need to enable the root user to perform the following).
    • How to enable the Root User
      • Open 'Netinfo Manager'
      • Select 'Security' and then 'Authenticate' and enter your password
      • Select 'Security' again, and then 'Enable Root User' and enter a new password.
      • Exit Netinfo Manager

    • How to create the new partition for Solaris.
      • Open a 'Terminal', change to the Root User by typing 'su -' and the required password
      • In the terminal type 'diskutil list', it should look something like this.

            /dev/disk0
            #:                              type name                    size            identifier
            0:  GUID_partition_scheme                             \*111.8 GB   disk0
            1:                                EFI                             200.0 MB    disk0s1
            2:                     Apple_HFS Macintosh HD       111.5 GB    disk0s2    


      • Find the identifier for your MacOS partition (in this case disk0s2) and type in the following to repartition the drive. I created a 31gb partition for Solaris, (First create a Windows partition, because MacOS doesn't know how to create a Solaris partition).

             diskutil resizeVolume disk0s2 80G "MS-DOS FAT32" "Windows" 31G

        NOTE: You won't see the new partition in 'diskutil list' until after a reboot.

  3. Boot MacOS Installation DVD. First unmount the internal hard disk.  Then change the ID for the EFI partition to something that Solaris does not understand (HFS+).

    • Unmount the Internal Hard Disk.
      • Open 'Disk Utility'
      • Select your internal MacOS partition and 'Unmount' it.
    • Change the required Partition ID
      • Open a 'Terminal', change to the Root User by typing 'su -' and enter the required password.
      • Confirm the new Windows partition has been created by typing 'diskutil list', it should look something like this.

           /dev/disk0
          #:                             type name                     size            identifier
          0:  GUID_partition_scheme                             \*111.8 GB   disk0
          1:                                EFI                             200.0 MB    disk0s1
          2:                     Apple_HFS Macintosh HD       80.0 GB      disk0s2    
          3:           Microsft Basic Data                          31.5 GB      disk0s3    


      • Change the EFI partition ID's by typing

            fdisk -e /dev/rdisk0

      • In the fdisk program type 'p' to display the MBR partition table. It should look something like this

           Disk: /dev/rdisk0        geometry: 14593/255/63 [234441648 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: AF 1023 254  63 - 1023 254  63 [       409640 -   167772160]  HFS+
           3: 0B 1023 254  63 - 1023 254  63  [ 168443944 -     65997664]  Win95 FAT-32
           4: 00      0     0    0         0    0    0  [               0 -                 0]  unused

      • Change the EFI partition (it will have the id of 'EE') to 'AF' (HFS+).  This can be done by typing the following.
                      setpid 1
                      AF
                      write
                      quit

  4. Boot from your Solaris Express Installation DVD and exit out the installation so we can recreate the Windows partition as a new Solaris2 partition.

    Note:
              I found using the new Solaris Installer does not work with this procedure, so when booting from the Solaris Express Installation DVD and you get presented with the grub options - make sure you select "Solaris Express".


    • In the grub menu select 'Solaris Express'
    • Select 'Interactive Installation (default)'
    • Continue with the installation until you see 'Starting Solaris Installation...' in the 'Solaris Install Console' window. At this point select 'Exit'
    • In the Terminal run 'format' and type Ctrl-D (to exit). Use format to determine the disk name for your internal disk. The output should look something like this.

         Searching for disks...done

        AVAILABLE DISK SELECTIONS:
            0. c1d1 <FUKITSU-         NZOST6B28L9-0001-111.79GB>
              /pci@0,0/pci-ide@1f,2/ide@0/cmdk@1,0
        Specify disk (enter its number):

    • In the Terminal run 'fdisk /dev/rdsk/c1d1', it should look something like this.

      Partition    Status     Type                  Start     End        Length      %
      ======   ====   ========   ====    ===   ======   ===
            1                       Other OS                  0        25               26      0
            2                       Other OS                25   10468          10444     72
            3                       Win95 FAT32    10485   14593            4109     28

    • Delete partition 3 (Win95 FAT32)
    • Create a new partition (option 1)
      • Select the partition type?                              Answer 'SOLARIS2'
      • Specify percentage of disk to use                 Answer '1'
      • Should this become an Active partition?     Answer 'n'
    • Create another partition (option 1)
      • Select the partition type?                              Answer 'SOLARIS2'
      • Specify percentage of disk to use                 Answer '27'
      • Should this become an Active partition?     Answer 'n'
    • Delete partition 3 (The partition thats 1% of disk space)
    • Your partition layout should look something like this.

      Partition    Status     Type                    Start      End        Length      %
      ======   ====   ========     ====     ===   ======   ===
            1                       Other OS                    0         25              26      0
            2                       Other OS                  25    10468         10444     72
            3                       Solaris2               10613   14552           3940     27

    • Exit (update disk configuration and exit)

    NOTE:
        I'm not totally sure what MacOS does with the partitioning. As you can see from the first fdisk information displayed, the Win95 Partition does not start immediately after the previous partition. It's for that reason I create a temporary partition thats 1% in size, then create the Solaris partition that I'm going to use and then remove the 1% partition.  I do this to preserve the cyl's 10468 to 10485 that MacOS doesn't use.   


  5. In the Terminal run 'install-solaris', this will start the interactive installation and enter all the required information for your specific installation. After you select 'Install Now', the installation program will FAIL. This failure is because of CR6413235. Once this Bug is fixed you will be able to skip to step 7). Until then we don't implement the workaround (yet) because the 'fdisk -F' does actually write some information out to the disk before failing. It's this information that allows Solaris to use the Solaris2 partition as the VTOC.
    • If you 'Exit' the installation program, a Terminal will appear and in there type 'format'. After selecting the disk and printing out the VTOC, you should see the layout with slice 2 being 31GB.
    • If format still shows the 3 partitions, then do no proceed and try step 4 again.

  6. Now implement the workaround for CR6413235.
    • In the Terminal run the following commands.

                   mount -o remount,rw /
                   mv /sbin/fdisk /sbin/fdisk.real
                   cat > /sbin/fdisk
                   #!/bin/sh

                   echo "$\*" | grep -- "-F" > /dev/null
                   if [ $? = 1 ] ; then
                         /sbin/fdisk.real $\*
                   fi
                   CTRL-D

                   chmod +x /sbin/fdisk

  7. Now when you run through the Installation program and answer the questions to configure your system, it will install the software without any errors. To restart the Installation program, run the following.

          install-solaris

  8. Once Solaris has finished installing and rebooted, shutdown Solaris and boot MacOS from the internal HD (you will need to boot from the MacOS install DVD and use 'Startup Disk' to select the MacOS Internal Hard disk). Once booted in MacOS, download and Install rEFIt from sourceforge.org onto your Internal HD. (rEFIt is a boot menu and maintenance toolkit for EFI-based machines like the Intel Macs).
    • So that rEFIt is always enabled, open a Terminal and change to the root user
                   su -
                   cd /efi/refit
                   ./enable-always.sh

  9. That's it all finished. Now when you boot rEFIt will present you with two options MacOS and Solaris (Solaris will be shown as a Linux icon).

Comments:

So this is a native EFI boot not a boot using BootCamp ?

Posted by Darren Moffat on March 28, 2007 at 06:18 AM GMT+00:00 #

MAN! AWESOME :) i was using the partition magic to do the resizing... the last time that i've installed opensolaris on my macbook black i've just use the bootcamp and installed...

Posted by Dimas on March 28, 2007 at 06:21 AM GMT+00:00 #

I am a beginner of Mac OS, I want to know how to install Mac OS X to an external USB harddisk, and boot from it. Thank you very much!

Posted by Yong Sun on March 31, 2007 at 07:29 PM GMT+00:00 #

Re: Yong Sun's question about installing and booting Mac OS X via an external USB disk... See this writeup for making such a disk bootable on an Intel-based Mac (by formatting it with a GUID partition table). Once that's done, just boot your machine via the OS X installer disk and select the external drive as the desired destination for a new install.

Posted by Jamey Wood on May 15, 2007 at 02:36 PM GMT+00:00 #

Thank for the info. Just got Solaris Express up on my black MacBook.

One comment... You do not need to enable the root account on OS X. "sudo su -" will put you in a root shell.

Posted by Gordon Pearce on August 12, 2007 at 01:30 AM GMT+00:00 #

Darren, it's using BIOS compatibility, as Windows lies offset a hundred megabytes to trigger EFI into going into compatibility mode. This is the reason it's offset, it has nothing to do with OS X and how it handles the disk. Solaris/OpenSolaris doesn't have working EFI booting yet, no one is adopting EFI, and no one has yet, except Apple for OpenFirmware features that can't be done on BIOS, which they wanted. Examples include pre-driver loading, keycombo events, chimes, and the ability to run a pre-execution type environment (EFI console) to debug. (Think OpenBootPROM) Now all that needs to be done is implementing that workaround by detecting EFI specifically, and making a nice Solaris icon for rEFIt.

I'll try it out if I can muster to find some space to backup my external disk to, otherwise I'll have to wait until payday and see if I can get a 40GB USB 2.0 external disk to format as GUID for this sort of use.

As much as I like Solaris in general, for notebooks it's still lacking badly, specifically power management isn't fine tuned enough, a subset of sound devices are still not supported (Becoming a non-issue since OSS is now CDDL/GPL), integrated backlighting controls are not part of the distribution, key layouts are an issue with Mac keyboards, especially to those not familiar with X11 keymaps, although one can borrow some of those hacks from the Linux community. Cpufreq, iSight HAL driver loading, and external displays are other issues that need to be kept aware of. I am a tweaker, I don't mind a few hours of churning out cpu cycles, but for general adoption, even for developers, notebooks are the key to adoption.

I don't really need mobile Solaris, although it'd be fun. It might be better for Sun to just invest and hand out notebooks, specifically Dell Inspirons, IBM Thinkpads, Apple MacBooks/Pros, and Sony Vaios to the most involved members of the laptop team on OpenSolaris.

Main gripes currently are non-Atheros cards have association problems with the current drivers and kernel bugs with driver unloading and card ejecting on PCMCIA wifi adapters, power frequency control lacking, and laptop-specific features as I've noted above less than par. Solaris has always been for high-end workstations and servers, so architecturally it's taking time to make it more "portable" in a sense.

As for myself, I'll see how it works on a 15.4" MacBook Pro (3,1) with Santa Rosa (x86_64), testing sound support and NVIDIA graphics capabilities. I will lay this out on my blog once I've implanted my new website, located at http://www.carcinogenic-studios.com for all interested.

Posted by James Cornell on September 19, 2007 at 05:39 AM GMT+00:00 #

If you use the "cylinder" options in fdisk to describe the size of the fdisk partition, you should be able to lay down your Solaris2 partition in almost the same space that the Windows one is. You may have to cut off a few cylinders at the end in order to have Solaris actually write out the fdisk table instead of complaining its too big, but it does save you from having to do the 1% and then 27% hand-waving.

Posted by Phillip Wagstrom on September 29, 2007 at 03:26 PM GMT+00:00 #

Does anyone know if its possible to install Solaris on a disk with a GUID partition scheme. I have tried snv_76 but it fails during install, is this due to the bug mentioned above ?

I have installed snv_76 on an internal MBR partition scheme drive with no problems but I can't boot from this drive when its connected as a USB drive. The MacBook bios does not list this drive as a boot option! Would I have to use rEFIt or is it not possible to boot from an external USB drive with an MBR table. I have installed OS X Leopard fine on this external USB drive and booted it (used GUID partition table).

Posted by Duncan Groenewald on November 11, 2007 at 02:16 AM GMT+00:00 #

Being new to the dual booting of a MacBook Pro: Can you mount a Solaris ufs by a MacOS ufs and vice-versa

Also: Does it require the re-installation of MacOSX at the end of it?

TIA.

Posted by Andrew Hamilton on November 12, 2007 at 08:05 PM GMT+00:00 #

No, Mac UFS is BSD-based, predating UFS2 and not from the same branch as Solaris. Solaris' implementation is completely different, refactored for performance and different architecture. You need rEFIt to boot regardless, unless type is Windows under EFI and it retains that value. For interoperability, you're stuck with MS-DOS. (pcfs)

It's possible to install Solaris to GUID when using it on top of a Boot Camp partition, if you have an external disk you can reformat as GUID to clone back onto the modified internal disk as this article implies.

Technically with Tiger it was a hybrid scheme, not easy to recreate using `diskutil`. With Leopard, you don't need to reboot when a boot camp partition is created, either with the assistant or with the command-line tool. I have not found the previous hybrid support in Leopard's diskutil, ie: GPTFormat format name size MBRFormat format name size, you can just use diskutil resizeVolume disk0s2 MS-DOS Windows xxGB and install to it without needing it to be on some kind of special partiton, but this is just Windows. It's obviously some type of EFI update that can differentiate, and it probably applies to Solaris granted you stay within the 4 partition legacy boundary.

OS X must be the second partition on the internal disk, and it should work as any of the first 4 on an external. Windows must be the third partition, but Solaris and other systems with use of rEFIt may be on partition 3 or 4. Solaris' system disk needs to be a primary partition.

Since Solaris is unsupported by Apple, it's not gonna show up on any list without 3rd party software, being rEFIt.

Posted by James Cornell on November 14, 2007 at 01:34 AM GMT+00:00 #

Correction, Windows is static at partition 4, :-)

Using block copy of an OpenSolaris installed to an external volume using MBR scheme and rEFIt should work, but make sure you have your data backed up.

The EFI workaround for fdisk is still needed, even B78 BFU'ed to current still has the bug.

I advise caution in changing the partition ID for the EFI protective partition, just changing it changes the GUID, and you cannot simply reformat it as FAT to fix it, you might want to consider using dd and copying the whole slice, save a copy of your MBR, and have boundaries written down to manually apply after doing diskutil magic.

If there was a documented way of restoring the GUID of the EFI partition theoretically you wouldn't need to redo the whole disk, but currently the method described by Paul will effectively hose your ability to use OS X utilities on the disk without a complete reformat. The reason is the EFI GPT synchronizes with the MBR tables, and there is no real way to edit the GPT partitions without using explicit boundaries and GNU parted on a livecd.

Solaris does not handle EFI booting or partitioning (Except on SPARC and 2TB+ volumes) as noted, it does not sync the partitions, and therefore EFI-dependent OS X updates and reinstalls will not work unless you destroy everything and start fresh.

Ideally changes need to be made so that a Boot Camp Assistant created partition can be used out of the box by the Solaris installer without detecting EFI at all on Mac Intel platforms. Simply being able to select and format right over partition 3 is the way to go.

This is unfortunately a platform-specific implementation, so I doubt anytime soon that OpenSolaris engineers will put the changes upstream to dependent utilities just for one platform (IE: detection routines for Macs specifically), reason being the OS-independent goal of Solaris above bootstrap assembly code. With device drivers like ethernet it's more common than not that changes specific to a brand of device will be put back, but we're talking about a fundamental compatibility risk for a platform Sun doesn't really care about, nor has ever.

With time and a few cr's maybe we'll see a prototype that can simply ignore the presence of EFI on Intel Mac platforms, but currently this is just a lofty goal so I recommend using VMware or Parallels unless you need bare metal performance.

Functionality for bluetooth, suspend/resume, wireless, input (kb/trackpad), backlight, smc, and isight are pretty much stuck back in the stone age for OpenSolaris on Intel Mac machines, it's not very usable as a desktop platform since you need to implement 3rd party workarounds for the single button internal mouse and the wireless has been flaky for many people, to name others. (EFI bugs, cpu throttling, etc)

Sorry to have posted some many times, but I felt these comments and pointers were needed for people without a lot of patience or with critical data.

Posted by James Cornell on January 04, 2008 at 02:34 PM GMT+00:00 #

started the procedure but got stuck on step 4 when doing the "format" in solaris. I'm trying to install nevada b81 and the internal disk of the macbook comes up "unknown drive type" and then fdisk complains can't stat drivetype. Ideas?
Doing a prtconf -v shows a Fujitsu hard drive under the dad (or dada- don't remember) driver but that's about it.
A couple of things:
1. I'd prepartitioned the hard drive before starting my osx leopard install with 60GB leopard and 50ish GB microsoft partitions. the 2nd partition wasn't listed as fat32 when I partitioned it but is now listed as such after retrying the above procedure(type 0B)
2. do I need to change the windows partition type to solaris2 as mentioned in Alan Perry's blog? Or do I leave it alone as listed above?
BTW- The mbpro is a new 2.2ghz 15" model if that makes any difference... and I tried out timemachine so as to be able to wipe the laptop and start over if need be.

Posted by dean ross-smith on February 05, 2008 at 11:36 PM GMT+00:00 #

It all started when I tried to install Leopard demo from the Apple seminar and blew away my hard drive. After reinstalling Tiger, I tried installing Linux but as you can see from the below partition display It's not coming along that well. I have a copy of Solaris which I would like to install but I'm getting the following error:

Last login: Sun Apr 27 11:25:42 on ttyp1
Welcome to Darwin!
keith-spencers-computer:~ spenc083$ diskutil resizeVolume disk0s3 "MS-DOS FAT32""Windows" 25G
Volume format does not support resizing
Disk Utility Tool
Usage: diskutil resizeVolume [Mount Point|Disk Identifier|Device Node] size
<part1Format part1Name part1Size> <part2Format part2Name part2Size> ...
Non-destructively resize a disk. You may increase or decrease its size.
When decreasing size, you may optionally supply a list of new partitions to create.
Ownership of the affected disk is required.
Valid partition sizes are in the format of <number><size>.
Valid sizes are B(ytes), K(ilobytes), M(egabytes), G(igabytes), T(erabytes)
Example: 10G (10 gigabytes), 4.23T (4.23 terabytes), 5M (5 megabytes)
resizeVolume is only supported on GPT media with a Journaled HFS+ filesystem.
A size of "limits" will print the range of valid values for the current filesystem.
Example: diskutil resizeVolume disk1s3 10G
JHFS+ HDX1 5G MS-DOS HDX2 5G
Valid filesystems: "Case-sensitive HFS+" "Journaled HFS+" "Case-sensitive Journaled HFS+" "HFS+" "HFS" "MS-DOS FAT32" "MS-DOS FAT16" "MS-DOS" "MS-DOS FAT12" "UFS" "Linux" "Swap"
keith-spencers-computer:~ spenc083$ diskutil list/dev/disk0
#: type name size identifier
0: GUID_partition_scheme \*111.8 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS Mac OS X 60.9 GB disk0s2
3: Linux Swap 1.4 GB disk0s3
4: Microsoft Basic Data 19.6 GB disk0s4
5: Microsoft Basic Data 14.5 GB disk0s5
6: Linux Swap 693.0 MB disk0s6
/dev/disk1
#: type name size identifier
0: CD_partition_scheme \*346.9 MB disk1
1: Apple_partition_map 1024.0 B disk1s1s1
2: Apple_partition_scheme 302.0 MB disk1s1
3: Apple_HFS CanonDC300M 141.5 MB disk1s1s2
keith-spencers-computer:~ spenc083$

Posted by Spence on April 27, 2008 at 08:44 AM GMT+00:00 #

CR6413235 still needed in B87, get with the program guys. Hopefully within a few builds I won't have to use 3rd party ethernet, wireless, and sound drivers. 3rd party in both the not out-of-the-box sense and literally from a 3rd party. (nifty2)

More important is fixing this really dumb bug you guys said you'd had fixed in B78 originally, which didn't happen, 10 builds later still there, awesome.

I'll see how well B87 behaves versus B78, which was the last one I tried due to bugs in my Applefritter's superdrive.

-_-

James

Posted by James Cornell on May 01, 2008 at 09:05 AM GMT+00:00 #

[Trackback] Synopsis Interested in trying out OpenSolaris 2008.05 on your MacBook? In the blog entry I walk you through the steps I took to get there. OpenSolaris 2008.05 Meet the MacBook Pro Okay, so I'm not the first to document...

Posted by Brian Leonard's Blog on May 27, 2008 at 12:45 PM GMT+00:00 #

[Trackback] Interested in trying out OpenSolaris 2008.05 on your MacBook? In the blog entry I walk you through the steps I took to get there.

Posted by Brian Leonard's Blog on May 27, 2008 at 04:09 PM GMT+00:00 #

I try to install OSOL with boot-camp but OSOL installation stops for a while at normal installation. Could you write a boot-camp installation ? Because i love that OS. Thanks for your post...

Posted by Mahmut Buluwwt on January 19, 2010 at 10:21 AM GMT+00:00 #

Hello !

Pour ceux que ca intérèsse on a publié un article récemment sur du dual boot Mac + Ubuntu 10.04 !

( http://www.geckogeek.fr/double-boot-mac-os-x-et-ubuntu-10-04-avec-refit-et-bootcamp.html )

Bonne semaine !
Vincent

Posted by Vinz on May 25, 2010 at 09:01 AM GMT+00:00 #

i like your site. it has a useful material which is good for others.i shall be glad
if you help me to increase and expand my business.please also promote my site named newinapple.com

http://newinapple.com

Posted by Ahmed Ali on August 29, 2010 at 12:18 AM GMT+00:00 #

Post a Comment:
  • HTML Syntax: NOT allowed
About

paulmitchell

Search

Categories
Archives
« April 2014
MonTueWedThuFriSatSun
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today