Recent Tweets

    Elsewhere

     

    February 2010
    S M T W T F S
    « Jan   Mar »
     123456
    78910111213
    14151617181920
    21222324252627
    28  

    Archives

    Chainloading OpenSolaris from GRUB 2

    I have a triple boot system with OpenSolaris, Ubuntu 9.10 and Microsoft Windows XP. I upgraded my Ubuntu 9.10 GRUB to GRUB 2 today. GRUB2 automatically added an entry for Microsoft Windows XP. However, it didn’t detect the OpenSolaris that was installed. I had to manually configure OpenSolaris chainloading in GRUB 2. If you are in a similar situation, this will be helpful for you to configure your GRUB 2.

    Find your OpenSolaris partition.

    $ sudo fdisk -l
     
    Disk /dev/sda: 320.1 GB, 320072933376 bytes
    255 heads, 63 sectors/track, 38913 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x00099420
     
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1       12158    97659103+   7  HPFS/NTFS
    /dev/sda2   *       12159       24314    97643070   bf  Solaris
    /dev/sda3           24317       38913   117250402+   f  W95 Ext'd (LBA)
    /dev/sda5           24317       38297   112302351   83  Linux
    /dev/sda6           38298       38913     4947988+  82  Linux swap / Solaris

    In my case, it is /dev/sda2. Once you have found it, edit /etc/grub.d/40_custom and add the following entry for OpenSolaris. A key difference between GRUB and GRUB 2 is the device numbering. In GRUB, sda2 is (hd0,1). However, in GRUB 2, sda2 is (hd0,2). Keep this in mind when you are configuring your GRUB 2.

    # Chainload OpenSolaris GRUB.
    menuentry "Chainload OpenSolaris GRUB" {
        set root=(hd0,2)
        chainloader +1
    }

    Now your /etc/grub.d/40_custom should look like the following.

    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
     
    # Chainload OpenSolaris GRUB.
    menuentry "Chainload OpenSolaris GRUB" {
        set root=(hd0,2)
        chainloader +1
    }

    Then run update-grub to regenerate /boot/grub/grub.cfg.

    $ sudo update-grub
    Generating grub.cfg ...
    Found linux image: /boot/vmlinuz-2.6.31-19-generic
    Found initrd image: /boot/initrd.img-2.6.31-19-generic
    Found memtest86+ image: /boot/memtest86+.bin
    Found Microsoft Windows XP Professional on /dev/sda1
    done

    You will not find anything about OpenSolaris in the output message. However, you can examine /boot/grub/grub.cfg to find if an entry is added for OpenSolaris.

    $ tail -10 /boot/grub/grub.cfg 
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
     
    # Chainload OpenSolaris GRUB.
    menuentry "Chainload OpenSolaris GRUB" {
        set root=(hd0,2)
        chainloader +1
    }
    ### END /etc/grub.d/40_custom ###
    • Digg
    • del.icio.us
    • Twitter
    • Facebook
    • Google Bookmarks
    • LinkedIn
    • Live
    • Yahoo! Bookmarks
    • Posterous
    • Sphinn
    • Mixx

    Leave a Reply

     

     

     

    You can use these HTML tags

    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">