NetBSD on Mac mini (PPC)

       1202 words, 6 minutes

Here’re a few quick and dirty notes that describe how to install NetBSD on a Mac mini machine.

NetBSD 3.1 / macppc

Sources:
http://www.netbsd.org/Ports/macppc/models.html#macmini
http://www.schmonz.com/2006/06/29/installing-netbsd-on-powerpc-mac-mini
http://mail-index.netbsd.org/port-macppc/2001/09/02/0002.html

The disk will only contain NetBSD ; no Mac OS X installed.

Grab iso/macppccd-3.1.iso and burn it.

Extract ofwboot.xcf for macppccd-3.1.iso and build a “special” boot image

$ vnconfig vnd0 ./macppccd-3.1.iso
$ mount -t cd9660 -o ro /dev/vnd0a /mnt/cdrom
$ cd /mnt/cdrom
$ mkisofs -r -apple -o /tmp/macppccd-3.1-ofwboot.iso ofwboot.xcf

Boot the Mac, go to OF prompt and boot the NetBSD 3.1 CD-ROM.
Key strokes are “command+option+O+F”, which means “(Left) Win + (Left) Alt + o

0 > boot cd:,ofwboot.xcf netbsd.macppc

Escape to a shell (press Ctrl-C when asked “Terminal type?”)

Configure the network interface (gem0) and mount the NFS share (where the “special” iso file was previouslt created ;). Write the “special” iso file to the disk:

$ cd /mnt/nfs/jdoe/iso
$ dd if=macppccd-3.1-ofwboot.iso of=/dev/wd0c
$ exit

Proceed to the normal NetBSD installation.

“Choose your installation”: Set sizes of NetBSD partitions

In the disklabel summary, select “Show unused partitions”.
Remember to set a 1MB partition at the beginning of the disk:

a:  31456656      3024     4.2BSD   2048 16384 28088  # (Cyl.      3 -  31209)
b:   4194288  31459680       swap                     # (Cyl.  31210 -  35370)
c: 156301488         0     unused      0     0        # (Cyl.      0 - 155060)
h: 120647520  35653968     4.2BSD   1024  8192 46624  # (Cyl.  35371 - 155060)
o:      3024         0    ISO9660       0             # (Cyl.      0 -      2)

Finish the install, reboot the computer and get back to OF.

Configure OF to boot NetBSD:

0 > setenv boot-command " screen" output boot
0 > setenv boot-device hd:OFWBOOT.XCF;1
0 > setenv auto-boot? true
0 > reset-all

Watch NetBSD booting… :-)
Enjoy !!!

Upgrade to NetBSD 4.0_BETA2 / macppc

Grab a daily binary from your local mirror and install the new kernel:

$ mv /netbsd /onetbsd
$ tar xvzpf kern-GENERIC.tgz -C /

Build a “special” iso file for 4.0_BETA2 and replace the previous ofwboot:

$ cd macppc/installation
$ mkisofs -r -apple -o ../macppccd-4.0_BETA2-ofwboot.iso ofwboot.elf ofwboot.xcf
$ disklabel wd0 > /root/disklabel.wd0
$ dd if=../macppccd-4.0_BETA2-ofwboot.iso of=/dev/wd0c seek=32 skip=32
$ disklabel wd0		# check if it still ok ;p

Cross your finger and reboot…

Install the rest of the distribution:

$ cd macppc/binary/sets
$ for i in base comp games man misc text xbase xcomp xetc xfont xserver; do
tar xzpvf $i.tgz -C /
done
$ mkdir /tmp/tmproot
$ tar xzpvf etc.tgz -C /tmp/tmproot
$ postinstall -s /tmp/tmproot check
# run the "postinstall" command as described by the previous command
$ etcupdate -s /tmp/tmproot

Cross your finger and reboot…

NetBSD 4.0 / macppc

Source: http://www.netbsd.org/ports/macppc/partitioning.html#pdisk

Grab the 4.0 iso file and burn it.

Use Win+Alt+O+F on boot to drop to OBP and boot on the CD:

0 > boot cd:,ofwboot.xcf netbsd.macppc
[...]
erase ^H, werase ^W, kill ^U, intr ^C, status ^T
Terminal type? [vt100]
Erase is backspace.
(I)nstall, (S)hell or (H)alt ?

Start a (S)hell.

Initialize the disk:

# pdisk /dev/wd0c
 Command (? for help): i
 map already exists
 do you want to reinit? [n/y]: y
 Command (? gor help): P

 Partition map (with 512 byte block) on '/dev/wd0c'
  #:                type name      length   base       ( size )
  1: Apple_Partition_map Apple         63 @ 1
  2:          Apple_Free Extra  156301424 @ 64         ( 74.5G)

 Device block size=512, Number of Blocks=156301488 (74.5G)
 DeviceType=0x0, DeviceId=0x0

Partition the disk:

Command (? gor help): P

 Partition map (with 512 byte blocks) on '/dev/wd0c'
  #:                type name      length   base      ( size )
  1: Apple_partition_map Apple         63 @ 1
  2:           Apple_HFS boot      204800 @ 64        (100.0M)
  3:     Apple_UNIX_SVR2 root     2097152 @ 204864    (  1.0G) S0 RUFS k0  /
  4:     Apple_UNIX_SVR2 swap      524288 @ 2302016   (256.0M) S1  SFS k0  (swap)
  5:     Apple_UNIX_SVR2 usr      8388608 @ 2826304   (  4.0G) S2  UFS k0  /usr
  6:     Apple_UNIX_SVR2 home   145086576 @ 11214912  ( 69.2G) S2  UFS k0  /home

 Device block size=512, Number of Blocks=156301488 (74.5G)
 DeviceType=0x0, DeviceId=0x0

Write the partition map and quit.

Create the FS:

# newfs /dev/wd0a
(...)

Prepare the root filesystem:

# mount /dev/wd0a /mnt
# mkdir mnt/etc
# cat >> mnt/etc/fstab
/dev/wd0a / ffs rw 1 1
/dev/wd0b none swap sw 0 0
^D
# umount /mnt
# exit

In the sysinstall menu, select “Re-install sets or install additional sets” and proceed to install as usual.

Finish the install manually, using [Utility menu]/[Run /bin/sh]:

# mount /dev/wd0a /mnt
# cd /mnt/dev
# sh MAKEDEV all
# cd /mnt/etc
# cat >> rc.conf
rc_configured=YES
^D
# cd /
# umount /mnt
# exit

Reboot the computer and use Win+Alt+O+F on boot to drop to OBP.

Boot on the CD:

0 > boot cd:,ofwboot.xcf netbsd.macppc

Open a shell, configure the network and mount wd0a as a chroot.

Install sysutils/hfsutils from a public FTP server:

# pkg\_add ftp://ftp2.fr.netbsd.org/pub/pkgsrc/packages/NetBSD/macppc/4.0\_2008Q2/sysutils/hfsutils-3.2.6nb1.tgz

Prepare the HFS (boot) partition:

# hformat -l boot /dev/wd0d
# hmount /dev/wd0d
# hcopy /usr/mdec/ofwboot.xcf :
# hcopy /netbsd :
# humount /dev/wd0d

Quit chroot, unmount every partition and reboot.

Use Win+Alt+O+F on boot to drop to OBP:

0> boot hd:2,ofwboot.xcf netbsd

Now that NetBSD booted correctly, save the parameters in OBF.
Reboot and Win+Alt+O+F on boot to drop to OBP:

0 > setenv auto-boot? true
0 > setenv boot-device hd:2,ofwboot.xcf
0 > setenv boot-file /netbsd
0 > setenv boot-command " screen" output boot
0 > reset-all

NetBSD 4.99.x / macppc

The NetBSD/macppc 4.99.72 iso doesn’t boot on my Mac Mini G4. I’ll use netbsd-4 iso file to install -CURRENT.

Grab and burn a netbsd-4 iso file.

Grab hfs-utils for netbsd-4, extract the binaries and make them available to the mini (USB, NFS…)

# ftp ftp://ftp2.fr.netbsd.org/pub/pkgsrc/packages/NetBSD/macppc/4.0_2008Q2/sysutils/hfsutils-3.2.6nb1.tgz

Power-on the Mac Mini and issue Win+Alt+O+F on boot to drop to OBP.
Boot on the CD:

0 > boot cd:,ofwboot.xcf netbsd.macppc

Enter the (S)hell, initialize and partition the disk:

# pdisk /dev/wd0c
 Command (? for help): i
 map already exists
 do you want to reinit? [n/y]: y
(...)
 Command (? gor help): P

 Partition map (with 512 byte blocks) on '/dev/wd0c'
  #:                type name      length   base      ( size )
  1: Apple_partition_map Apple         63 @ 1
  2:           Apple_HFS boot      204800 @ 64        (100.0M)
  3:     Apple_UNIX_SVR2 root     2097152 @ 204864    (  1.0G) S0 RUFS k0  /
  4:     Apple_UNIX_SVR2 swap      524288 @ 2302016   (256.0M) S1  SFS k0  (swap)
  5:     Apple_UNIX_SVR2 usr      8388608 @ 2826304   (  4.0G) S2  UFS k0
  6:     Apple_UNIX_SVR2 home   145086576 @ 11214912  ( 69.2G) S2  UFS k0

 Device block size=512, Number of Blocks=156301488 (74.5G)
 DeviceType=0x0, DeviceId=0x0

 Command (? gor help): W
 Writing the map destroys what was there before. Is that okay? [n/y]: y
 Command (? gor help): Q

Create the usr and home partition:

# disklabel -i wd0
 partition> P
 (...)

Create the filesystems and mount them:

# newfs -O 2 /dev/wd0a  
# newfs -O 2 /dev/wd0e  
# newfs -O 2 /dev/wd0g  
# mkdir /mnt/root  
# mount /dev/wd0a /mnt/root  
# mkdir /mnt/root/usr  
# mount /dev/wd0g /mnt/root/usr  
# mkdir /mnt/root/home  
# mount /dev/wd0e /mnt/root/home 

Mount the NFS share where release and hfs-utils lies:

# mkdir /mnt/nfs  
# mount -t nfs filer:/release /mnt/nfs 

Install the files to root:

# cd /mnt/nfs/release
# for FIC in base etc man misc text; do tar xzpf $FIC.tgz -C /mnt/root/; done
# cd /mnt/root/dev && sh MAKEDEV all

Configure the HFS boot partition:

# cd /mnt/nfs/hfs-utils  

To be continued…