Minha solução alternativa:
#!/bin/bash
# Patch grub-mkconfig to not probe / when GRUB_DEVICE is set.
cat <<'PATCH' | patch /usr/sbin/grub-mkconfig
+++ /usr/sbin/grub-mkconfig 2013-10-28 11:33:15.000000000 -0400
@@ -129,7 +129,7 @@
mkdir -p ${GRUB_PREFIX}
# Device containing our userland. Typically used for root= parameter.
-GRUB_DEVICE="'${grub_probe} --target=device /'"
+GRUB_DEVICE=${GRUB_DEVICE-"'${grub_probe} --target=device /'"}
GRUB_DEVICE_UUID="'${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null'" || true
# Device containing our /boot partition. Usually the same as GRUB_DEVICE.
--------------------------------
PATCH
# Pass the GRUB_DEVICE parameter through sudo
echo 'Defaults env_keep +="GRUB_DEVICE"' > /etc/sudoers.d/keep-grub-device
chmod 0440 /etc/sudoers.d/keep-grub-device
Agora, defina-o (em bashrc ou em qualquer outro lugar) e atualize-o:
export GRUB_DEVICE=/dev/sda5
sudo update-grub
Definitivamente não é ideal, mas pode ser muito pior. Será bem-vindo melhorias para este método.