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 Mac disk image from the [http://refit.sourceforge.net/#download rEFIt] project. Open the dmg and start rEFIt.mpkg which will install the EFI boot loader.
Compile Kernel
Now you need your working Debian machine. I am using the latest git tree and the intel mac [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@mactel-linux.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://svn.sourceforge.net/viewcvs.cgi/mactel-linux/trunk/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.
Setting up X11
The integrated intel video controller is not supported by Sid yet. You must use the fbdev driver to get a working X11.
apt-get install xserver-xorg x-window-system xterm dpkg-reconfigure xserver-xorg
During the xserver configuration select the fbdev driver and let the driver use the kernel frambuffer interface. Select 24bit as default depth. Ather finished the configuration you must tweak it a little bit to tell the driver that the framebuffer uses 32 bits per pixel. Add the Line "?DefaultFbBpp 32" after the ?DefaultDepth entry in the Screen section of the xorg.conf file.
vim /etc/X11/xorg.conf Section "Screen" ... DefaultDepth 24 DefaultFbBpp 32 ... EndSection
Installation on the internal hard disk using DebianInstaller (daily build 2007-03-16)
Only the most important parts (which probably also apply to Etch once released)
- install rEFIt under MacOSX
- use 'diskutil' under MacOSX to resize your harddisk
put in the DebianInstaller CD, reboot
- you should now see the CD as possible choice in the rEFIt menu
- boot from it, proceed with the normal installation in text mode. Use manual partitioning and create a root and swap partition
- do _not_ install grub or elilo
- install lilo as bootloader. This is really important. elilo and grub both do _not_ work. I had to chroot into the /target partition and adapt lilo.conf to contain boot=/dev/sda3 and root=/dev/sda3 (execute lilo afterwards). While you are at it, start fdisk and check that your root partition (/dev/sda3) has the bootable flag
- reboot, rEFIt should give you the choice to start your new linux system. After a short while you should be greeted with the graphical login screen.
Links
[http://www.mactel-linux.org/ Mactel-Linux] They provided nearly everything I have used during my setup.
[http://refit.sourceforge.net/ rEFIt] boot menu and maintenance toolkit for EFI-based machines
[http://elilo.sourceforge.net elilo] bootloader for EFI machines