Mac Mini kernel

Installing a stock kernel on a Mac Mini

In the past, we have supplied a custom Linux kernel, as stock kernels would not run on the Mac Mini hardware. This is gradually changing, and for most of the common Linux distros, a stock kernel will now work, provided it is configured correctly. A custom GRUB is still needed.

If we supplied you with a Mac Mini after about April 2014, it should be running a stock kernel. Because of the custom GRUB, you may still need to take action when the distro releases an upgraded kernel; see below for details.

You can check which kernel you are running with the uname -r command. Mythic Beasts' custom kernels include the string “mb” after the version number (and the version will normally be 3.5.x). For example:

# uname -r
3.5.6-mb-64-7

By contrast, here's a Debian 7 (wheezy) server, running a stock kernel.

# uname -r
3.14-0.bpo.1-amd64

Upgrading to a stock kernel

First, if you have our Server management service, please email us to arrange a short down time while we upgrade your server.

For unmanaged servers, we can perform the upgrade on your behalf as chargeable work; please email us for a quote. Or you can do it yourself, following these instructions.

Debian 7 (wheezy)

For Debian wheezy, you need the backports kernel, plus our custom GRUB. Start by preparing apt-get to know about the backports repository, and the Mythic Beasts repo.

echo deb http://mirror.mythic-beasts.com/mythic mythic main > /etc/apt/sources.list.d/mythic-beasts.list
wget -qO- http://mirror.mythic-beasts.com/mythic/support@mythic-beasts.com.gpg.key | apt-key add -
echo deb http://mirror.mythic-beasts.com/debian/ wheezy-backports main contrib non-free > /etc/apt/sources.list.d/wheezy-backports.list
apt-get update

Certain kernel modules concerned with graphics adaptors will cause hangs on the Mac Mini. We simply blacklist them, so they will not be loaded.

cat > /etc/modprobe.d/mythic-blacklist.conf <<EOF
blacklist nouveau
blacklist b43
blacklist bcma
blacklist i915
EOF

Next, we install the kernel.

apt-get -t wheezy-backports install linux-image-amd64 intel-microcode

Next, install our GRUB package and configure it. You should verify that the awk script has found the correct root partition.

apt-get install mythic-grub-efi

ROOT=$(awk '$2 == "/" { print $1; exit }' /etc/fstab)
cat > /boot/grub/grub.cfg <<EOF
timeout=10
menuentry "linux" {
        linux /vmlinuz root=$ROOT ro video=efifb
        initrd /initrd.img
}
command
EOF

For the time being, our GRUB configuration relies on symlinks in /boot, so you will need to create them. You should verify that the 2 symlinks do in fact point to the newly installed kernel and its initrd.

cd /boot
rm -f vmlinuz initrd.img
ln -s $(ls vmlinuz-* | sort -rV | sed 1q) vmlinuz
ln -s $(ls initrd.img-* | sort -rV | sed 1q) initrd.img

If you upgrade the kernel in the future, you will need to rerun this last step, so that the links point to the new kernel.

CentOS

Instructions coming soon!

Ubuntu

Instructions coming soon!

Unsure?

Upgrading the kernel on a remote server can be daunting. Don't hesitate to contact us if you need any help or advice.