Wie man Partitionsbootmenus einrichtet, die vom MBR aus ansteuerbar sind

Autor: Peter Starfinger, auch Autor der auf Ubuntu basierenden Distribution Starbuntu

      Um im MBR (Master Boot Record) nur das Bootmenu zu haben, das auf die Bootmenus in den Partitionen verweist, geht man wie folgt vor:

  1. In der aktiven Bootpartition /etc/grub.d auf /etc/grub.d.mbr und auf /etc/grub.d.part kopieren
  2. /etc/grub.d löschen
  3. Verknüpfung /etc/grub.d von /etc/grub.d.part erstellen
  4. cd /etc/grub.d.part
  5. Das Skript 40_custom editieren:

    menuentry "" { set root= } # Leerzeile!
    #
    menuentry 'Zurück zum Bootmenu auf /dev/sda' {
    chainloader (hd0)+1
    }
    #
    menuentry "" { set root= }
    #

    Eventuell noch weitere menuentries hinzufügen, z. B. für TinyCore:

    menuentry "TinyCore-13.1 auf /dev/sda1" {
    recordfail
    insmod ext2
    set root='(hd0,1)'
    set gfxmode=1366x768
    linux /opt/tce/boot/vmlinuz loglevel=3 tce=sda1 quiet lang=de_DE.UTF-8 kmap=qwertz/de-latin1 tz=GST-2
    initrd /opt/tce/boot/core.gz
    }

  6. In /etc/default/grub GRUB_DISABLE_OS_PROBER auf true setzen

  7. sudo grub-mkconfig -o /boot/grub/grub.cfg
  8. sudo grub-install --force --boot-directory=/boot /dev/sda1

  9. Rechner neu starten, andere Partition booten, z. B. /dev/sda2

  10. cd /etc/grub.d
  11. Das Skript 40_custom editieren:

    menuentry "" { set root= } # Leerzeile!
    #
    menuentry 'Zurück zum Bootmenu auf /dev/sda' {
    chainloader (hd0)+1
    }
    #
    menuentry "" { set root= }
    #

    Eventuell noch weitere menuentries hinzufügen, z. B. für TinyCore:

    menuentry "TinyCore-13.1 auf /dev/sda2" {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    set gfxmode=1366x768
    linux /opt/tce/boot/vmlinuz loglevel=3 tce=sda2 quiet lang=de_DE.UTF-8 kmap=qwertz/de-latin1 tz=GST-2
    initrd /opt/tce/boot/core.gz
    }

  12. In /etc/default/grub GRUB_DISABLE_OS_PROBER auf true setzen

  13. sudo grub-mkconfig -o /boot/grub/grub.cfg
  14. sudo grub-install --force --boot-directory=/boot /dev/sda2

  15. Rechner neu starten, Bootpartition booten, z. B. /dev/sda1

  16. Falls noch nicht geschehen, erst die vorangegangenen Schritte dieser Anleitung ausführen

  17. Verknüpfung /etc/grub.d löschen

  18. Verknüpfung /etc/grub.d von /etc/grub.d.mbr erstellen
  19. cd /etc/grub.d.mbr
  20. Die Skripte 10_linux, 20_linux_xen, 30_os-prober und 30_uefi-firmware löschen
  21. Das Skript 40_custom editieren:

    menuentry 'Bootmenu auf /dev/sda1 starten (<Bezeichnung>)' {
    chainloader (hd0,1)+1
    }
    #
    menuentry 'Bootmenu auf /dev/sda2 starten (<Bezeichnung>)' {
    chainloader (hd0,2)+1
    }
    #
    menuentry "" { set root= } # Leerzeile!
    #

    Eventuell noch weitere menuentries hinzufügen, z. B. für Iso-Images

  22. Den Ordner /boot/grub auf /boot-mbr/grub kopieren (ohne die Linux-Kernel)

  23. sudo grub-mkconfig -o /boot-mbr/grub/grub.cfg
  24. sudo grub-install --boot-directory=/boot-mbr /dev/sda

    Viel Erfolg!