Page 1 of 2 12 LastLast
Results 1 to 10 of 12

Thread: GRUB2 os-prober erzeugtes bash-script: Wo gibt's eine Erklärung?

  1. #1

    Default GRUB2 os-prober erzeugtes bash-script: Wo gibt's eine Erklärung?

    GRUB2's os-prober findet ja die meisten OSs (ausser mindestens FreeBSD auf ufs2) und produziert daraus eine lange grub.cfg-Datei. Nur, dass ich einen Teil davon überhaupt nicht verstehe. Beispiel:
    Code:
    if [ x$feature_default_font_path = xy ] ; then
      font=unicode
    else
      insmod part_msdos
      insmod ext2
      set root='hd0,msdos5'
      if [ x$feature_platform_search_hint = xy ]; then
       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5   --hint-baremetal=ahci0,msdos5 --hint='hd0,msdos5'  a13e1c0f-c157-4ee5-a1c3-67a39ebe01d1
      else
       search --no-floppy --fs-uuid --set=root a13e1c0f-c157-4ee5-a1c3-67a39ebe01d1
      fi
       font="/usr/share/grub2/unicode.pf2"
    fi
    Speziell das lange if-statement ist mir unklar, ich weiß nicht wie die Variablen Werte zugewiesen bekommen und in der GRUB2 Dokumentation ist auch nichts.

    Hier dasselbe, obgleich ich wenigstens verstehe, dass die SuSE hier gestartet wird, nur die Details entgehen mir:

    Code:
    menuentry 'openSUSE 12.3 (on /dev/sda5)' --class 'opensuse-12-3' --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-a13e1c0f-c157-4ee5-a1c3-67a39ebe01d1'{
        savedefault
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e8b9e1af-e836-4332-8446-d149a0c68d40
        else
          search --no-floppy --fs-uuid --set=root e8b9e1af-e836-4332-8446-d149a0c68d40
        fi
        echo 'Loading Linux 3.7.10-1.16-desktop ...'
        linux /vmlinuz-3.7.10-1.16-desktop root=UUID=a13e1c0f-c157-4ee5-a1c3-67a39ebe01d1  showopts video=1366x768 resume=/dev/disk/by-id/ata-WDC_WD3200BPVT-22JJ5T0_WD-WXU1CB1S5967-part3 nosplash noquiet
        echo 'Loading initial ramdisk ...'
        initrd     /initrd-3.7.10-1.16-desktop
    Für Hinweise auf eine Schritt für Schritt Erklärung wäre ich dankbar.

  2. #2

    Default Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten? Oder gilt das als Doppelpost und pfui?

  3. #3

    Default Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wodenhof View Post
    Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten? Oder gilt das als Doppelpost und pfui?
    Ich würd sagen, das ist schon ok. Ist nicht wirklich ein "Doppelpost"...

    Zu deiner ursprünglichen Frage ein paar Punkte:
    /boot/grub2/grub.cfg solltest du nicht händisch ändern. Die wird automatisch aus den Templates in /etc/grub.d/ erzeugt, daher kommen auch diese ganzen Konstrukte.
    Und die sind natürlich eher generisch gehalten, damit sie möglichst auf allen Distribution/Konfigurationen funktionieren.

    Falls du selber Einträge anlegen willst, solltest du entweder ein eigenes Template in /etc/grub.d/ anlegen, das deine Einträge erzeugt, oder diese in /boot/grub2/custom.cfg händisch eintragen.

    Mit genaueren Details kann ich im Moment allerdings leider auch nicht dienen.

    Sollte sich aber alles in der Online-Dokumentation finden lassen, denke ich.
    Hier z.B. eine Auflistung aller Environment-Variablen:
    http://www.gnu.org/software/grub/man...ml#Environment

    Falls du selber Einträge erstellen willst (und ich denke, das ist der eigentliche Grund deiner Frage), musst du aber meiner Meinung nach das gar nicht alles verstehen.
    Notwendig dürfte nur sein, die entsprechenden Partitionstabellen- und Filesystem-Module zu laden (z.B. "insmod part_msdos" und "insmod ext2"), danach die root partition zu setzen ("set root"), sowie den kernel und die initrd (falls notwendig) mit "linux" und "initrd" laden.
    Also nicht viel anders als beim alten grub, nur dass du eben noch die notwendigen Module laden musst.

    Das ganze muss in "menuentry xxxx {" und "}" eingeschlossen sein, die ganzen --class Parameter dienen dazu mehrere Einträge zu Klassen zuzuweisen, die scheinbar die Darstellung beeinflussen können, ist aber nicht notwendig anzugeben.
    http://www.gnu.org/software/grub/man...html#menuentry

  4. #4

    Default Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wolfi323 View Post
    Ich würd sagen, das ist schon ok. Ist nicht wirklich ein "Doppelpost"...
    Okay, danke, dann probier ich's mal dort.

    Quote Originally Posted by wolfi323 View Post
    .../boot/grub2/grub.cfg solltest du nicht händisch ändern. Die wird automatisch aus den Templates in /etc/grub.d/ erzeugt, daher kommen auch diese ganzen Konstrukte.
    Und die sind natürlich eher generisch gehalten, damit sie möglichst auf allen Distribution/Konfigurationen funktionieren.

    Falls du selber Einträge anlegen willst, solltest du entweder ein eigenes Template in /etc/grub.d/ anlegen, das deine Einträge erzeugt, oder diese in /boot/grub2/custom.cfg händisch eintragen.
    Ich ändere die grub.cfg auch nicht händisch, sondern nehme sie (von os-prober erzeugt) als Templat für meine eigenen Einträge in /etc/grub.d/. Übrigens macht nur SuSE diese Konstrukte, die anderen Distributionen, die ich sonst habe, sind da kürzer gefasst.

    Quote Originally Posted by wolfi323 View Post
    ...Sollte sich aber alles in der Online-Dokumentation finden lassen, denke ich.
    Leider nicht. Das scheint SuSE-spezifisch zu sein.

    Quote Originally Posted by wolfi323 View Post
    Hier z.B. eine Auflistung aller Environment-Variablen:
    http://www.gnu.org/software/grub/man...ml#Environment
    Danke für den Link.

    Quote Originally Posted by wolfi323 View Post
    Falls du selber Einträge erstellen willst (und ich denke, das ist der eigentliche Grund deiner Frage), musst du aber meiner Meinung nach das gar nicht alles verstehen.
    Nein, ich muss nicht und arbeite damit ja auch schon mehr als ein Jahr. Ich möchte das aber gerne verstehen, weil ich immer gerne weiß, was ich da gerade tue(n lasse).

    Quote Originally Posted by wolfi323 View Post
    ...die ganzen --class Parameter dienen dazu mehrere Einträge zu Klassen zuzuweisen, die scheinbar die Darstellung beeinflussen können, ist aber nicht notwendig anzugeben.
    http://www.gnu.org/software/grub/man...html#menuentry
    Ja, SuSE steuert damit z.B. die Thumbnails vor den einzelnen Einträgen im GRUB-menu, das habe ich schon herausgefunden. Und man kann die Einträge wohl damit gruppieren, als Verfeinerung der Möglichkeiten durch die Namensgebung mit den vorangestellten Ziffern in /etc/grub.d/

  5. #5

    Default Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wodenhof View Post
    Ich ändere die grub.cfg auch nicht händisch, sondern nehme sie (von os-prober erzeugt) als Templat für meine eigenen Einträge in /etc/grub.d/.
    Ok, wollte nur darauf hinweisen.
    Aber wie gesagt, du kannst Einträge auch einfach direkt in die /boot/grub2/custom.cfg schreiben. Die wird von der Standard grub.cfg eingebunden und _nicht_ automatisch geändert.

    Übrigens macht nur SuSE diese Konstrukte, die anderen Distributionen, die ich sonst habe, sind da kürzer gefasst.


    Leider nicht. Das scheint SuSE-spezifisch zu sein.
    Hm, soweit ich das sehen kann, kommen die Templates aber praktisch unverändert von upstream, und auch grub(2)-mkconfig das diese Konstrukte erzeugt.
    SuSE-spezifische Änderungen sehe ich da nicht. Hab jetzt nicht alle Patches durchgeschaut, aber z.B. dieses "if [ x$feature_platform_search_hint = xy ]" usw. ist _genau_ so im grub-mkconfig des upstream Tarballs zu finden (genauer gesagt grub-mkconfig_lib, in openSUSE als /usr/share/grub2/grub-mkconfig_lib installiert) .

    Vielleicht benutzen diese anderen Distributionen, du du sonst hast, eine ältere Version von grub2 oder so?
    Oder _die_ machen spezifische Änderungen.

    Nein, ich muss nicht und arbeite damit ja auch schon mehr als ein Jahr. Ich möchte das aber gerne verstehen, weil ich immer gerne weiß, was ich da gerade tue(n lasse).
    Kann ich verstehen.
    Aber sogar die README.openSUSE die bei grub2 dabei ist, sagt:
    Documentation
    -------------


    The GRUB 2 lacks documentation. While you are encouraged to contribute
    the documentation, you can use the GRUB 2 Wiki [1] as primary source of
    information pertaining to this development snapshot.


    [1] http://grub.enbug.org/
    Der Link funktioniert aber leider nicht (mehr).
    Last edited by wolfi323; 27-May-2014 at 04:06.

  6. #6

    Default Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wolfi323 View Post
    ...Aber wie gesagt, du kannst Einträge auch einfach direkt in die /boot/grub2/custom.cfg schreiben. Die wird von der Standard grub.cfg eingebunden und _nicht_ automatisch geändert.
    Die /boot/grub2/custom.cfg gibt es auf meinem system nicht?!? (13.1 installiert von der Live-CD). Wo bekommt man sie her? Ich habe aber eine /etc/default/grub mit eher globalen Voreinstellungen...

    Quote Originally Posted by wolfi323 View Post
    ...Hm, soweit ich das sehen kann, kommen die Templates aber praktisch unverändert von upstream... Vielleicht benutzen diese anderen Distributionen, du du sonst hast, eine ältere Version von grub2 oder so?
    Oder _die_ machen spezifische Änderungen.
    Beides möglich. Ubuntu zumindestens schraubt ja auch gerne an den Sachen herum .


    Kann ich verstehen.
    Aber sogar die README.openSUSE die bei grub2 dabei ist, sagt:

    Quote Originally Posted by wolfi323 View Post
    Documentation
    -------------


    The GRUB 2 lacks documentation. While you are encouraged to contribute
    the documentation, you can use the GRUB 2 Wiki [1] as primary source of
    information pertaining to this development snapshot.




    Der Link funktioniert aber leider nicht (mehr).
    Dann genieße mal dies hier:

    Here is an example from the man page of xorg.conf reproduced verbatim:

    Code:
    VIDEOADAPTOR SECTION
    Nobody wants to say how this works. Maybe nobody knows ...

  7. #7

    Default AW: Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wodenhof View Post
    Die /boot/grub2/custom.cfg gibt es auf meinem system nicht?!? (13.1 installiert von der Live-CD). Wo bekommt man sie her? Ich habe aber eine /etc/default/grub mit eher globalen Voreinstellungen...
    Richtig, du kannst sie aber selber anlegen.
    Wenn sie vorhanden ist, wird sie dem Menü hinzugefügt.
    Sh. /etc/grub.d/41_custom, bzw. die entsprechende Sektion in /boot/grub2/grub.cfg.

    /etc/default/grub enthält allgemeine Voreinstellungen, richtig. Die kannst du z.B. auch in YaST->System->Bootloader->Bootloader-Optionen setzen (das ändert genau diese Datei und ruft grub2-mkconfig auf, um die grub.cfg entsprechend neu zu erzeugen).

    Dann genieße mal dies hier:


    Tja, XV wird aber von modernen Grafikkarten/treibern eh nicht mehr unterstützt, glaube ich.
    Dafür gibts ja glamor, das das auf OpenGL umleitet.

    Ich hatte jedenfalls noch nie die Notwendigkeit eine VideoAdaptor section anzulegen, auch früher nicht.
    Bzw. wusste ich bis gerade eben gar nicht, dass es die überhaupt gibt...
    Last edited by wolfi323; 27-May-2014 at 05:14.

  8. #8

    Default Re: AW: Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wolfi323 View Post
    Richtig, du kannst sie aber selber anlegen.
    Wenn sie vorhanden ist, wird sie dem Menü hinzugefügt.
    Sh. /etc/grub.d/41_custom.
    Aha. Das kann ich ja dann mal probieren. Danke für den Tipp .

  9. #9

    Default Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wodenhof View Post
    Aha. Das kann ich ja dann mal probieren. Danke für den Tipp .
    Bitte. Hätte vielleicht gleich dazuschreiben sollen, dass du sie erst anlegen musst...

    Übrigens, noch was zur ursprünglichen Frage:
    os-prober legt überhaupt keine Einträge an.
    Es sucht nur nach Betriebssytemen und gibt die gefundenen auf stdout aus, bzw. legt eine Liste in /var/lib/os-prober/labels an.

    Die Einträge werden dann von grub2-mkconfig erzeugt.
    (/etc/grub.d/30_os-prober)
    Last edited by wolfi323; 27-May-2014 at 05:21.

  10. #10

    Default Re: AW: Re: Sollte ich das vielleicht nochmal (auf englisch) im englischen Forum posten?

    Quote Originally Posted by wodenhof View Post
    Aha. Das kann ich ja dann mal probieren. Danke für den Tipp .
    Ich habe also eine alte grub.cfg in custom.cfg umbenannt (Test zum Verdoppeln der Einträge). Tja, dann zeigt er beim Start kurz "Loading GRUB", dann wird der Bildschirm schwarz und es hilft nur noch der "Affengriff" (wenigstens das, Gott sei Dank).

    Wenn man nach "opensuse custom.cfg" sucht, stellt man fest, dass das nicht nur mir so geht, aber Lösungen gibt es nicht .

    P.S.: Sowohl bei der Erstinstallation als auch beim Update des Kernels wird /etc/grub.d/* komplett überschrieben. Sehr hässlich, gerade auf Bugzilla gemeldet. Von daher wäre mir eine Lösung unter /boot/grub2/custom.cfg auch lieber, aber wie das Problem lösen?

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •