Tuesday, 2 March 2010

At last: a proper multi booting OSX/Win7/Linux box lives!

I have nutted out the final few problems with my multi-boot drama.
  • (hd0): MBR - grub2, win7, Liunx
  • (hd1): dataz
  • (hd2): bootable OSX 10.6 with GPT partition, Chameleon booter etc.
I can point my bios to hd2 and OSX boots, but it took ages to get grub2 to boot my OSX disc (hd2).  Ended up being real simple; in /etc/grub.d/40_custom :

menuentry "Mac OSX" {
  set root=(hd2)
  chainloader +1
}

and then a sudo update-grub

Yay, it boots.  My second major drama was with macFUSE and fuse-ext2; it doesn't work with the 64-bit kernel.  Here is the console output:

toolmans-Mac-Pro:Volumes toolman$ sudo fuse-ext2 /dev/disk2s1 /Volumes/Untitled\ 30
fuse-ext2: version:'0.0.7', fuse_version:'27' [main (../../fuse-ext2/fuse-ext2.c:324)]
fuse-ext2: enter [do_probe (../../fuse-ext2/do_probe.c:30)]
fuse-ext2: leave [do_probe (../../fuse-ext2/do_probe.c:55)]
Mounting /dev/disk2s1 Read-Only.
Use 'force' or 'rw+' options to enable Read-Write mode
fuse-ext2: opts.device: /dev/disk2s1 [main (../../fuse-ext2/fuse-ext2.c:351)]
fuse-ext2: opts.mnt_point: /Volumes/Untitled 30 [main (../../fuse-ext2/fuse-ext2.c:352)]
fuse-ext2: opts.volname:  [main (../../fuse-ext2/fuse-ext2.c:353)]
fuse-ext2: opts.options: (null) [main (../../fuse-ext2/fuse-ext2.c:354)]
fuse-ext2: parsed_options: allow_other,local,noappledouble,ro,fsname=/dev/disk2s1,fstypename=ext2,volname=disk2s1 [main (../../fuse-ext2/fuse-ext2.c:355)]
fuse-ext2: mounting read-only [main (../../fuse-ext2/fuse-ext2.c:371)]
/Library/Filesystems/fusefs.fs/Support/fusefs.kext failed to load - (libkern/kext) link error; check the system/kernel logs for errors or try kextutil(8).
the MacFUSE file system is not available (71)
toolmans-Mac-Pro:Volumes toolman$


The highlighted line is the clincher; the 32-bit kext won't work with 64 bit kernel.  thankfully, I can run 64 bit apps on the 32-bit kernel anyway :)

It took me ages to figure out that chameleon uses

/Extra/com.apple.Boot.plist

not the default kernel boot file !

/Library/Preferences/SystemConfiguration/com.apple.Boot.plist

By editing the correct file, and updating the kernel flags

Kernel Flags
-x32

And now I have grub2 booting to any OS I want, with my ext3 mounting in all OSes :D

No comments: