Re: GNU/Linux, NetBSD and Mac OS X
On Tue, May 22, 2001 at 05:44:08PM +0200, Edouard G. Parmelan wrote:
> I will enter "PowerPC side of the Force" in two weeks,
> I read various docs but I have few questions.
Folks have answered most of these, but here's my $0.02 anyway...
> - Is someone already install NetBSD or GNU/Linux on an iBook G3/500 ?
Not on an iBook, but I've installed OS 9, OS X, NetBSD & Linux
(Linux/PPC 2000 Q4) all on a PowerBook G3 Lombard. A co-worker has
successfully installed Linux on his iBook G3/500, although I don't
know the details.
> - which NetBSD and/or GNU/Linux filesystems Mac OS X support ?
Natively, none. OS X does support UFS, but it doesn't seem to
recognize NetBSD's 4.4BSD ffs (if I try mounting NetBSD's ffs under OS
X, the mount command recognizes the fs as a BSD fs, but it can't make
sense of the structures in the filesystem and fails to mount the fs).
Don't know if NetBSD 4.3BSD filesystems created w/ "newfs -O" would be
mountable by OS X. In principle, one could add FFS or ext2 support to
Darwin, but don't know if anyone has (try browsing through the Darwin
list archives at
unfortunately, these can't searched currently).
> - can NetBSD and/or GNU/Linux access to Mac OS X filesystem ?
If it is HFS or HFS+, yes. Linux can mount HFS directly, while NetBSD
requires hfsutils. hfsplusutils will let you access HFS+ from Linux &
NetBSD. Don't know if Linux or NetBSD can mount OS X UFS though.
> - can NetBSD use an ext2fs partition as / ?
You can mount ext2fs partitions in NetBSD, but I wouldn't mount it as
/. For one thing /etc & /dev will be completely different on the two.
You'll want a completely separate /, /usr & /var for each OS. I'd
recommand mounting your Linux partitions under /emul/linux. You can
then enable COMPAT_LINUX in the NetBSD kernel & run most all of the
Linux executables under NetBSD. In my case (single-user, laptop
computer), I just have a single partition each for NetBSD & Linux, so
I mount the Linux partition as /emul/linux. If you'd like, you can
make a separate /home partition and share that between NetBSD & Linux.
> - can GNU/Linux access to NetBSD FFS partition ?
Yes, though you'll need to configure support into the kernel (at least
as of the 2.2.18 kernel in Linux/PPC). Enable CONFIG_UFS_FS &
CONFIG_UFS_FS_WRITE and compile a new kernel (I configured UFS support
as a module, and it works fine). You'll need to mount the FFS
partition with option "ufstype=44bsd", eg:
mount -t ufs -o ufstype=44bsd /dev/... /netbsd
> - can NetBSD use the same swap partition that GNU/Linux ?
Yes, although as already mentioned, Linux wants its swap partition to
be "formatted" and NetBSD's use of swap will wipe out this
formatting. Linux "formats" the swap partition using the "mkswap"
command, so you can simply modify the relevant startup script to run
mkswap on the partition before the swap partition is enabled. I added
the following to /etc/rc.d/rc.sysinit (again, this is LinuxPPC; Debian
may be different) just before it does a "swapon -a":
## local hack: format swap partitions, as they may be shared w/ other OSes
while read dev mnt fstype opt freq pass ; do
if [ "$fstype" = "swap" ]; then
/sbin/mkswap $dev > /dev/null
done < /etc/fstab
action "Activating swap partitions" swapon -a
> - GNU/Linux seem to need/require yaboot. Can yaboot start NetBSD ?
> - I have read that there is a Darwing version of BootX (that use Open
> Firmare). Can this version start NetBSD, GNU/Linux and Mac OS X ?
no. As others said, though, you can simply use multiple bootloaders:
yaboot for Linux, ofwboot for NetBSD, etc. To make the boot process
easier, I recommend using ybin. ybin is a Bourne shell script which
can create a boot script which OpenFirmware can use for booting the
different bootloaders. The boot script is a "CHRP" script (basically,
a script written in Forth) which OpenFirmware can load from disk and
interpret. The boot script presents you w/ a text menu from which you
can choose which OS to boot. Mine gives me the following menu:
Pick an OS, any OS:
Press m for MacOS,
t for MacOS X,
b for NetBSD,
l for Linux,
c for CDROM,
n for Network,
o for OpenFirmware.
Once you enter a choice, the script then executes the required boot
boot hd:10,\\:tbxi for MacOS on partition 10
boot hd:9,\ofwboot.elf hd:12/netbsd for NetBSD w/ bootloader on 9,
kernel on 12
boot hd:9,\yaboot for yaboot bootloader on 9
The boot script is simply a text file of type "tbxi" and creator
"chrp", and it can be booted from OF using, eg, "boot hd:9,\:tbxi" if
it's at the root of the filesystem. ybin will use hfsutils to copy
the script to your "boot" partition. You can find ybin at
> Which is the installation order ? I have read that Mac OS X should be
> install first, is it mandatory ? And after, is NetBSD or Debian have
> the same requirement ?
Install order doesn't really matter. I installed OS 9, then OS X,
then Linux, then NetBSD (saved the best for last... :) ). The only
order I would recommend is to place your NetBSD partition ahead of the
Linux partition. The reason for this is that both use partitions of
type "Apple UNIX SVR2", and the generic NetBSD kernel will by default
pick the first such partition it finds in the partition map as the
root filesystem and try to mount it. This can be overridden (by
passing the "-a" option to the kernel at boot and/or by compiling a
custom kernel pointing root to the correct partition), but it will be
easier in the long run to simply make your NetBSD partition the first
SVR2 partition in the partition map.
I partitioned my disk using Apple's Drive Setup. In order, I created
an HFS "boot" partition (on which I store yaboot, yaboot.conf,
NetBSD's ofwboot.elf, and ofboot.b, the ybin CHRP boot script; I used
HFS since I can easily access this fs type from all OSes as well as
from OpenFirmware), an HFS+ partition to hold OS 9, a second HFS+
partition for OS X, an Apple UNIX SVR2 root partition for NetBSD (all
of NetBSD is installed in this partition), an Apple UNIX SVR2 swap
partition for swap (shared by both NetBSD & Linux), and finally an
Apple UNIX SVR2 usr partition for Linux (all of Linux is installed on
Hope this helps,