Eu nunca tive muita sorte com as configurações abstratas, principalmente devido a minha configuração lvm + mdadm e não atualizando meu kernel como "distro way". Felizmente, você pode largar tudo isso e rolar seu próprio grub.cfg muito similar a como menu.lst funcionou.
Uma amostra grub.cfg que é extraída da minha é:
set timeout=15
menuentry 'Linux 3.10.17 (sde) kernel-3.10.17-g' {
root=hd0,1
linux /boot/kernel-3.10.17-g domdadm dolvm root=/dev/md3
initrd /boot/initrd-3.10.17-g
}
menuentry 'Linux 3.10.17 (sdf) kernel-3.10.17-g' {
root=hd1,1
linux /boot/kernel-3.10.17-g domdadm dolvm root=/dev/md3
initrd /boot/initrd-3.10.17-g
}
As maiores diferenças do grub-legacy são como root= é especificado, a menuentry specification e a palavra-chave mudam de kernel para linux para especificar o kernel. Se você tem um menu.lst que funciona para você, você pode facilmente adaptá-lo para funcionar como grub.cfg , abordando essas alterações. Se você precisar de alguma funcionalidade extra do grub2 (carregando módulos grub, etc), você pode pegar linhas relevantes dos scripts de distro e adicioná-las ao seu arquivo.