24 November 2010

In the style of Twitter

Slackintosh-current on a G5 iMac

Debian 5.0 for PPC is elegant and easy to use, and 6.0 will probably be even better once the installer is fixed. I wanted a more minimal system, so I returned to Slackintosh, even though it is only semi-maintained. The -current version of Slackintosh still gets updates, however. So here is how to get Slackintosh on a G5 iMac:

Partition the disk, and separate the /boot partition, so that it can be accessed by multiple Linux installations (format this partition as ext2). Give yourself at least three additional partitions of around 5 GB to work with. My disk looked like this: Partition Map, NewWorld bootblock, HFS Mac OS X installation, swap, ext2 /boot, JFS for Crux root, ext3 for initial Slackintosh root, JFS for future Slackintosh root.

So: one partition is for a temporary Slackintosh install, and can be small; another is for a chroot environment (CruxPPC), and can also be small; the last will be the long-term home for Slackintosh. Add extra partitions for /usr/local, /home, etc. as desired.

First install CruxPPC to a small partition (3 GB is plenty). Crux provides a convenient environment for building 64-bit kernels, which you will need to boot a G5. The shipped kernel (g5ppc64) for Slackintosh 12.1 works, but it is old (2.6.16?) and lacks support for several file systems.

Follow the installation instructions for Crux. Build a new kernel under Crux with whatever options you want—filesystems, crypto, SMP support, etc. Do not count on any modules, because the modules that ship with Slackintosh (and the ones you could build with Slackintosh) are 32-bit, and so won't load on a G5. The kernel configuration under /proc/config.gz will boot as-is (copy it to /usr/src/linux-*/, gunzip it and rename it to .config), but you may wish to add more features. You can even download up-to-date kernel source and make a super-new kernel. Install the new kernel and verify that CruxPPC boots properly.

Install Slackintosh 12.1 to a different partition, but skip installation of the yaboot bootloader. I later migrated this installation to a JFS-formatted partition, but for now, just get an installation onto the hard drive. Instead of configuring yaboot from Slackintosh, reboot into CruxPPC.

Now is the tricky part. At this point, the computer can only boot into CruxPPC Linux (and possibly Mac OS, if applicable). As a test, edit /etc/yaboot.conf under CruxPPC to boot the new Crux kernel with the temporary Slackintosh installation as root; run ybin -v and boot into Slackintosh with the CruxPPC kernel. If this step works, migrate the temporary installation by mounting the other partition and umask 000 as root, then running cp -a /$dir /mnt/<mount point>/ for each $dir in the root (

/
) directory. The Slackware website has useful information on migrating an installation. Do not forget to create /proc, /boot, etc. directories on the new drive.

Reboot into Crux, add the new drive to /etc/yaboot.conf, and run ybin -v (daring souls can do this step from the temporary install of Slackintosh without rebooting). Reboot into the Slackintosh on the permanent partition with the new kernel. If everything has worked so far, then there is probably no need ever to boot into Crux again, but I recommend keeping it around as a chroot environment to update the kernel: remember that Slackintosh builds 32-bit binaries for userspace applications, and Crux builds 64-bit binaries like the kernel.

The Slackintosh website and changelog provide some help on upgrading from Slackintosh-12.1 to Slackintosh-current. I recommend the upgrade, but it requires rsyncing and a few GB of patience. With or without the update to -current, Slackintosh is quicker than Crux more powerful than Debian. Slack also has better logos.