[gelöst]Grub2:Eigenes Bootmenü,aber Gemecker

Hinweis: In dem Thema [gelöst]Grub2:Eigenes Bootmenü,aber Gemecker gibt es 6 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo,


    ich habe mein eigenes Bootmenü erstellt, aber eine anscheinend unwesentliche Kleinigkeit falsch gemacht. Als ersten Schritt habe ich
    etc/grub.d/30_os-prober
    das x-Recht genommen und damit die automatischen Menüeinträge unterbunden.
    Dann habe ich in /etc/grub.d
    3 neue
    Skripte erzeugt, mit verschiedenen Möglichkeiten zu booten.


    11_Win

    Bash
    #!/bin/sh -e
    echo "Adding Windows XP to GRUB 2 menu" >&2
    cat << EOF
    menuentry "Windows XP" {
    set root=(hd0,1)
    chainloader (hd0,1)+1
    }
    EOF


    12_Suse11.1

    Bash
    #!/bin/sh -e
    echo" Adding Suse 11.1 to GRUB 2 menu"
    cat << EOF
    menuentry "Suse 11.1" {
    set root=(hd1,1)
    linux /boot/vmlinuz
    initrd /boot/initrd
    }
    EOF

    13_Debian Lenny

    Bash
    #!/bin/sh-e
    echo "Adding Debian Lenny to GRUB 2 menu"
    cat << EOF
    menuentry "Debian Lenny" {
    set root=(hd1,3)
    configfile (hd1,3)/boot/grub/menu.lst
    }
    EOF

    Anschließend habe ich die Skripte ausführbar gemacht und die Grub.cfg neu
    erstellen lassen:




    Ich kann damit die 3 Systeme ohne Probleme starten, aber was wird hier
    angemeckert?

    Einmal editiert, zuletzt von tuxpapa ()

    Für den Inhalt des Beitrages 51884 haftet ausdrücklich der jeweilige Autor: tuxpapa

  • Hallo boser,


    danke für die schnelle Antwort. Mit welcher Escapesequenz wird EOF erzeugt? Nachdem ich diese Scripts durch copy and paste erzeugt habe, kann so etwas vorkommen. Und erstaunlicherweise funktioniert es ja.

    Für den Inhalt des Beitrages 51906 haftet ausdrücklich der jeweilige Autor: tuxpapa

  • Da passiert auch etwas anderes.
    Der Befehl "cat" erhält seine Eingabe von einem sogenannten "here-Dokument".
    Ein solches Here Dokument beginnt in der Zeile nach dem "cat"-Befehl und jede Zeile, die nun folgt, wird zur Eingabe.
    Bis die Here-Dokument Marke "EOF" ALLEINE auf einer Zeile erscheint.

    In diesem Falle hat es also überhaupt nichts mit End-Of-File zu tun.
    Gleichbedeutend wäre:

    Code
    cat << Irgendwas
    menuentry "Windows XP" {
    set root=(hd0,1)
    chainloader (hd0,1)+1
    }
    Irgendwas


    Hier heißt die Marke "irgendwas".


    Dieses Script gibt also lediglich diese 4 Zeilen aus:

    Zitat


    menuentry "Windows XP" {
    set root=(hd0,1)
    chainloader (hd0,1)+1
    }

    Für den Inhalt des Beitrages 51924 haftet ausdrücklich der jeweilige Autor: uhelp

  • Hallo uhelp,


    ich habe das mit Deinem Vorschlag versucht


    Code
    1cat << Irgendwas
    2menuentry "Windows XP" {
    3set root=(hd0,1)
    4chainloader (hd0,1)+1
    5}
    6Irgendwas


    Es ändert aber leider nichts am Ergebnis, meckern wie gehabt:


    Code
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    grub.cfg wird erstellt …
    Thema gefunden: /boot/grub2/themes/openSUSE/theme.txt
    Linux-Abbild gefunden: /boot/vmlinuz-3.4.11-2.16-default
    initrd-Abbild gefunden: /boot/initrd-3.4.11-2.16-default
    Adding Windows XP to GRUB 2 menu
    /etc/grub.d/11_Win: Zeile 8: Warnung: here-document at line 3 delimited by end-of-file (wanted `Irgendwas')
    /etc/grub.d/12_Suse11.1: Zeile 9: Warnung: here-document at line 3 delimited by end-of-file (wanted `EOF')
    /etc/grub.d/13_DebianLenny: Zeile 9: Warnung: here-document at line 3 delimited by end-of-file (wanted `EOF')
    erledigt]


    Noch ein Versuch mit `Irgendwas' mit den Anführungszeichen


    Code
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    grub.cfg wird erstellt …
    Thema gefunden: /boot/grub2/themes/openSUSE/theme.txt
    Linux-Abbild gefunden: /boot/vmlinuz-3.4.11-2.16-default
    initrd-Abbild gefunden: /boot/initrd-3.4.11-2.16-default
    Adding Windows XP to GRUB 2 menu
    /etc/grub.d/11_Win: Zeile 8: Warnung: here-document at line 3 delimited by end-of-file (wanted `Irgendwas')
    /etc/grub.d/11_Win: Zeile 3: Falsche Ersetzung: Keine schließende "`" in `Irgendwas'


    Das ist jetzt kein Gemecker mehr, sondern echt falsch.
    Kannst Du einen Hinweis geben, wo die Scriptbefehle erklärt werden? Ich habe leider nichts gefunden.

    Für den Inhalt des Beitrages 51941 haftet ausdrücklich der jeweilige Autor: tuxpapa

  • Ich habe lediglich das letztlich umständliche sinnfrei Script erklärt.
    ( ein einfaches [code]printf "menuentry...\nset root....\n..." hätte es auch getan. )


    Deine Fehlermeldung ist Klartext: grub2-mkconfig erwartet eine Datei (und damit implizit ein "echtes" EOF), statt von der Standardeingabe ein paar Zeilen.
    Ich weiß nicht, was das soll, und woher du das Script hast. Gib Quellen, und wir können sehen.


    Es sollte aber auch genügen ein literales EOF jeweils am Ende mitzuschicken.
    Davon rate ich aber mehr als dringend ab, und weigere mich die Buchstabenfolge zu schreiben, die dies machen würde.
    Das ist nur noch krank.


    Gute Quellen
    http://mywiki.wooledge.org/BashGuide
    http://wiki.bash-hackers.org/
    http://www.grymoire.com/Unix/Quote.html
    http://www.shelldorado.com


    und natürlich "man bash" "info bash"
    Die bash ist ein Shell, die einen POSIX-Mode kennt.
    Lautet der shebang "#!/bin/sh" so wird sie zu einer POSIXshell.
    Dort gibt es viele moderne Features der Bash nicht, dafür läuft das Script dann auf (fast) jedem unixoiden System.
    Also schön kritisch lesen.


    Beim Systemstart verwenden alle Linuxe POSIX.

    Einmal editiert, zuletzt von uhelp ()

    Für den Inhalt des Beitrages 51948 haftet ausdrücklich der jeweilige Autor: uhelp

  • Hallo uhelp,


    danke für die Hinweise. Ich habe die Lösung gefunden nämlich "Irgendwas" statt Irgendwas.
    Das gleiche Spiel mit EOF scheitert aber.


    So schaut es jetzt aus:


    Bash
    #!/bin/sh -e
    echo "Adding Windows XP to GRUB 2 menu" >&2
    cat <<"Irgendwas"
    menuentry "Windows XP" {
    set root=(hd0,1)
    chainloader (hd0,1)+1
    }
    Irgendwas


    Ursprünglich stammt das Script aus diesem Tutorial:


    http://www.dedoimedo.com/computers/grub.html

    Für den Inhalt des Beitrages 51967 haftet ausdrücklich der jeweilige Autor: tuxpapa