Installation of Debian on a MacMini
I've tried several howtos to install Linux on my mini. None of them worked perfectly. So I decided to document my installation procedure here.
I decided to install Debian to an external USB disk. You need the following for this howto:
- an USB harddisk that is supported by Linux
- a machine with a running Debian
Install EFI boot loader
First boot MacOS. You need to download the precompiled binary tarball from the [http://refit.sourceforge.net/#download rEFIt] project. Untar it as root somewhere. Then install rEFIt with the supplied enable.sh script.
cd wget http://switch.dl.sourceforge.net/sourceforge/refit/refit-bin-0.2.tar.gz cd / tar zxvf ~/refit-bin-0.2.tar.gz mv refit-bin-0.2 refit cd refit/efi/refit ./enable.sh
Compile Kernel
Now you need your working Debian machine. I am using the latest git tree and some [http://cvs.sourceforge.net/viewcvs.py/mactel-linux/misc/misc/ patches] from [http://www.mactel-linux.org/ Mactel-Linux].
mkdir MacMini && cd MacMini git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mactel-linux co -P misc mv misc mactel cd linux-2.6 patch -p1 < ../mactel/misc/imac-2.6.16-rc6.patch make mrproper cp ../mactel/misc/config-2.6.16-rc5 .config make menuconfig make
Set up hard disk
Connect the hard disk and create some partitions. The first primary partition should be a vfat partition. It is needed to boot elilo from the EFI bootloader. Because my mini has a lot of RAM I left out the swap partition. But it might be a good idea to create one. Here my partition table:
Device Boot Start End Blocks Id System /dev/sdb1 1 30 30704 c W95 FAT32 (LBA) /dev/sdb4 31 38204 39090176 5 Extended /dev/sdb5 31 14336 14649328 83 Linux /dev/sdb6 14337 38204 24440816 83 Linux
The next step is to format the partitions:
mkfs.vfat -n Debian /dev/sdb1 mkfs.ext3 /dev/sdb5 mkfs.ext3 /dev/sdb6
The volume label of the vfat partition is diplayed late in the EFI bootloader.
Set up kernel and elilo
For booting the Linux kernel you need the EFI aware version of lilo called [http://elilo.sourceforge.net elilo]. You can get a working binary from the mactel guys [http://cvs.sourceforge.net/viewcvs.py/mactel-linux/misc/boot/ here]. You need the the e.efi (elilo itself) and the configuration file elilo.conf. Copy them and the build kernel into the root of the vfat partition. As last step you need to adjust the elilo config file. I had to change the root device to /dev/sdb5 and the framebuffer type to mini (instead if i17 or i20).
mount /dev/sdb1 /mnt cp mactel/boot/e.efi mactel/boot/elilo.conf /mnt cp linux-2.6/arch/i386/boot/bzImage /mnt/vmlinuz vim /mnt/elilo.conf umount /mnt
Bootstrapping Debian
The next step is to bootstrap Debian. The man page of debootstrap provides some useful examples. After bootstrapping you need to setup the fstab, hosts and hostname files.
mount /dev/sdb5 /mnt debootstrap sid /mnt http://ftp.de.debian.org/debian/ vim /mnt/fstab vim /mnt/hosts vim /mnt/hostname
In my setup they contain the following things:
$ more /etc/fstab /etc/hostname /etc/hosts :::::::::::::: /etc/fstab :::::::::::::: /dev/sdb5 / ext3 defaults 0 1 tmpfs /tmp tmpfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sda1 /boot vfat defaults 0 0 /dev/sdb6 /home ext3 defaults 0 1 :::::::::::::: /etc/hostname :::::::::::::: Rincewind :::::::::::::: /etc/hosts :::::::::::::: 127.0.0.1 localhost
After mounting the proc filesystem, you can chroot into your new installation an install some additional software with dselect.
mount proc /mnt/proc -t proc chroot /mnt /bin/bash dselect exit umount /mnt/proc umount /mnt
If the umount fails because the filesystem is busy you must terminate the daemons that were started during package installation.
Boot into the new system
Now plug your usb disk into your mini and boot it. After the chime sound the rEFIt bootloader should appear. In my setup it displays among other menu entries the possibility to boot e.efi and the installed MacOS. If you select e.efi than elilo gets loaded and stops at its prompt. Just press return to load the default kernel image. If everything is set up right, you should see the framebuffer console with the two penguin logos. The default resolution with a mini is 1024x786. If you own a bigger display, you could specify the resolution at the kernel parameter line in elilo.conf. Or if you are as lazy as me, change the imac patch to use your resolution.
