Contents

  1. Things you DO NOT want to do
  2. What works and what doesn't
  3. Gathering What you'll need
  4. Installing rEFIt
  5. Creating a new partition for NetBSD
  6. Installing NetBSD -current
  7. Installing on dk(4) wedges
  8. Getting X to work
  9. See also

Things you DO NOT want to do

What works and what doesn't

This stuff all seems to work fine:

What Doesn't work

Gathering What you'll need

Before you get started, let's get straight what you have and what you'll need.

Installing rEFIt

First grab a copy of rEFIt from http://refit.sourceforge.net and install it. The DMG-based installer is one good option but you can also create a bootable CDROM that'll assist in installing it if for some reason you don't have OSX anymore. If you choose the CDROM installation method, you'll need to download the ISO image instead of the DMG from the refit site The rEFIt program is basically like an EFI-based GRUB or LILO which gives you a slick-looking bootloader that'll allow you to choose between your various Mac partitions and the OS's that live on them. It's still necessary to install a secondary bootloader for each individual OS. Because of limitations on ancient MSDOS partition tables you'll only be able to have 3 OS's on your machine (the EFI firmware takes up a partition, too).

While in OSX, open a terminal and do:

cd /efi/refit/ ; ./enable.sh

You may also wish to edit /efi/refit/refit.conf to uncomment the Legacy section in case you want NetBSD to boot automatically. You might also choose to change the rEFIt timeout to something less than 20 seconds.

Afterwards rEFIt comes up before the Apple boot loader and you have a nice set of colorful icons representing my partitions. Before I made space for NetBSD, I could see my OS X and Windows partitions and use rEFIt to boot either one. rEFIt must do some kind of BIOS emulation, because any kind of bootable CDROM also shows up in the rEFIt menu if it's in the drive as the system is powered on. You can boot any PC operating system, but very very few are going to get very far on this newfangled hardware. Fortunately, NetBSD -current amd64 can boot just fine.

Creating a new partition for NetBSD

There are two ways to do this. The GUI way and the CLI way. The GUI way is probably easier for beginners, but I'm guessing that if you want to install NetBSD -current on your MacBook you aren't a beginner. If you want to use the GUI, then you'll need to install bootcamp. For Mac OS X (10.4) you can download a beta-version of bootcamp for free from Apple's site. It's usually found here http://www.apple.com/macosx/bootcamp/ but it's in beta, so it could go away any time. If you haven't already ran the "boot camp assistant" you can use this tool to resize your OSX partition and split it up ala PartitionMagic. If you already have a Windows partition you've created with boot-camp, you won't be able to use Boot Camp Assistant again. You'll have to do it from a terminal.

Here is how:

First do this to get a list of your current partitions diskutil list

Now decide which partition you want to be your NetBSD parition, and do NOT pick the EFI partition (you need that). I choose to use partition 4 on my macbook since 1==EFI, 2==OSX, and 3==WinXP.

(assuming you have an 80Gb disk and you want )

sudo diskutil resizeVolume disk0s2 32G "Linux" <name of NetBSD volume> 21G "MS-DOS FAT32" <name of windows volume> 21G

This operation only changes your partition layout to include a 32GB OS X partition, 21GB Linux one and 21GB Windows partition. We'll change the Linux tag to NetBSD once we get into the NetBSD installer. The diskutil command above was shameless lifted from the Gentoo Linux wiki on installing their distro on the MacBook, but it works.

Installing NetBSD -current

As mentioned above you'll need a -current release of NetBSD for the AMD64 architecture (Intel licensed the AMD64 instructions and re-named them to hide their shame at having the Itanic rejected by Microsoft). If you use the i386 port, you can expect to have major problems; so don't say you weren't warned. I guess if you have a CoreDuo Macbook (not the Core2Duo) you might want to give i386 a shot, but that's not what this document intends to cover. Once you have the "boot.iso" from "amd64/installation/cdrom' properly burned onto a CDR then put it into your system's drive and restart. rEFIt will detect the bootable disk and there will be an icon with a little CD picture on it showing you the disk as a boot option. Go ahead and select it, then let it boot up. Do the installation as usual but remember do not install the mbr bootselect code!. NetBSD will automatically install it's stage2 loader on the partition you select and rEFIt will transfer control to that paritition when you select it from the menu (it'll show up automatically as rEFIt probes your partitions prior to showing the initial menu). Once you reboot there is more fun on the way. If you use the boot.iso file to create your CDROM and didn't put any of the tarball "sets" on the CDROM, you'll have to get them over the network via http or ftp. One option is to go to another, working, machine and write down the full path on the FTP site to the directory right before the 'amd64' directory. For example: ftp://ftp.netbsd.org/pub/NetBSD-daily/HEAD/200705170002Z . Your milage my vary. Refer to the regular NetBSD handbook if you need help with the installation. There is nothing too special about it other than a little extra hassle if you use the network.

Installing on dk(4) wedges

If the install kernel (or the installed kernel, with different symptoms) was compiled with dk(4) support (and gpt-autodetection) -- that is if the kernel configuration included

options DKWEDGE_AUTODISCOVER
options DKWEDGE_METHOD_GPT

as the recent install kernels do, and you plan to have both OS X and NetBSD on the same disk, you have to do the installation by hand. Since you need GPT partitions for rEFIt and OS X, dk(4} wedges will be added for them. Since the disk can only be accessed via wedges once at least one wedge has been added, and sysinst(8) does not know about wedges, the installation will fail with a `device busy' when sysinst tries to newfs(8) the NetBSD partition(s).

Fortunately, it is not hard to do the installation by hand. The following example assumes that you are installing from a cd, that you want to have just OS X and NetBSD on the disk (a NetBSD-only installation is easy; other installation media or a third operating system work analogously), that you are installing amd64, and that OS X is already installed on an HFS+ partition. The example uses a 200GB disk, with roughly half for the EFI and HFS+ partitions for rEFIt and OS X, and roughly half for the NetBSD partitions. Please make sure that you understand the starting sectors and sizes in the examples below before you try to mimic them.

should show something like


              start      size   index  contents
                  0         1          MBR
                  1         1          Pri GPT header
                  2        32          Pri GPT table
                 40    409600       1  GPT part - EFI System
             409640 195360984       2  GPT part - Apple HFS
... 
          390721935        32          Sec GPT table
          390721967         1          Sec GPT header

* Add an FFS partition and a 4GB swap partition by:


gpt add -b 195770624 -i 3 -s 186562702 -t ufs wd0
gpt add -b 382333327 -i 4 -s 8388608 -t swap wd0
gpt label -i 3 -l "NetBSD-root"
gpt label -i 4 -l "NetBSD-swap"

    dkctl wd0 delwedge dk2
    dkctl wd0 addwedge NetBSD-root 195770624 186562702 -t ufs
    dkctl wd0 addwedge NetBSD-swap 382333327 8388608 -t swap

Alternatively, you can reboot the installation cd, since the GPT partitions will be detected automatically.

with the same starting sections and sizes as in the GPT table.


a: 186562703 195770624    4.2BSD      0    0     0 
b:   8388608 382333327    swap             
c: 186562703 195770624    unused      0    0        
d: 390721968         0    unused      0    0     
e:    409639         1    unknown 
f: 1 95360984   409640    HFS  

(the rEFIt EFI partition is left unknown, since we do not want to risk messing it up).

cp -p /mnt/usr/mdec/boot /mnt/usr/mdec/boot.cfg /mnt installboot -v /dev/rdk2 /mnt/usr/mdec/bootxx_ffsv2

Getting X to work

Note: The following description applies to older versions of -current (pre November 2008, pre 5.0). For resent versions, try setting X11FLAVOUR=Xorg in /etc/mk.conf when building a release, and try setting X11_TYPE=modular in /etc/mk.conf for building packages. The startup scripts (notably /etc/rc.d/xdm) look for X in /usr/X11R6, while Xorg resides under /usr/X11R7. To get xdm(1) working, add

command="/usr/X11R7/bin/xdm"

to /etc/rc.conf.d/xdm.

Getting X working on your Macbook is something of a non-trivial task. First of all, the default XFree86 code that comes with the -current distribution won't even recognize the PCI-ID of the video card (an Intel GMA950). You'll have to install the Xorg server. I did this by setting X11_TYPE=xorg in /etc/mk.conf and installing it from /usr/pkgsrc/meta-pkgs/xorg (you did install NetBSD's pkgsrc right?). One small problem is that the i810 driver does not build by default on the x86_64 (amd64) architecture. You need to set the PKG_DEFAULT_OPTIONS to include the xorg-server-i810 string. This can be done by simply typing export PKG_DEFAULT_OPTIONS=xorg-server-i810 before you do the make install command from the /usr/pkgsrc/meta-pkgs/xorg directory. Once you have Xorg installed (which will take a while to compile), you can go ahead and set it up. One method is to do an X -configure then copy the /root/xorg.conf.new file into /etc/X11 and edit it to your taste. You'll need to manually set the HorizSync and VertRefresh in the display section. The see the example xorg.conf for reference. Just for a review, let's enumerate the steps needed here:

For 5.0 (and -current 5.99.1 and later), you can instead set "X11FLAVOUR=Xorg" and build a release/distribution to get a working X server.

  1. Download the pkgsrc2007Q1 or newer tarball
  2. Unpack it into /usr (ie.. cd /usr ; tar xzvf /tmp/pkgsrc-2007Q1.tar.gz)
  3. Set your X11 server type to be Xorg. (ie.. echo "X11_TYPE=xorg" >>/etc/mk.conf" as root)
  4. Set your server build options so you get the i810 driver even though this is an x86_x64 machine. Ie.. export PKG_DEFAULT_OPTIONS=xorg-server-i810
  5. Allow the xorg-server-i810 to be built by editing /usr/pkgsrc/x11/xorg-server/options.mk and adding xorg-server-i810 to the end of the _COMMONCARDDRIVERS list and removing it from the _NOTX86_64CARDDRIVERS list.
  6. Build xorg (ie.. cd /usr/pkgsrc/meta-pkgs/xorg ; make install)
  7. Move the old XFree86 tree out of the way and link xorg in it's place (ie.. cd /usr/ ; mv X11R6 xfree86.X11R6 ; ln -s /usr/pkg/xorg /usr/X11R6
  8. Create a skeleton xorg.conf file (ie.. as root X -configure)
  9. Copy the skeleton file into place and edit it (ie... cp /root/xorg.conf.new /etc/X11/xorg.conf ; vi /etc/X11/xorg.conf)
  10. During your editing / customization make sure to add the following lines:
    1. Add HorizSync 28-64 and VertRefresh 43-60 to the Monitor section. These are keywords, not Options; so add them just as shown.
    2. Change the mouse ZAxisMapping option to "4 5" instead of "4 5 6 7" or any USB mice you plug in will behave badly.
    3. Add the DefaultDepth 24 line to the Screen section just below the line that says Monitor "Monitor0"
    4. In the Screen you'll find the subsection for the 24-bit display. Just below the line that says Depth 24 add a line that says Modes "1280x800"
  11. Install the 915resolution tool from pkgsrc. (ie.. cd /usr/pkgsrc/sysutils/915resolution ; make install)
  12. Replace a mode you know you'll never use with the 32-bit mode for 1280x800. If you don't do this, you won't be able to use the native (1280x800) video mode.
    1. List all the available modes 915resolution -l
    2. Pick a mode and replace it: 915resolution 4d 1280 800 32
  13. Test the X server startx
  14. Now add the 915resolution

See also

Add a comment