[erledigt] GRUB2-einträge nach belieben sortieren?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
kupe
Beiträge: 958
Registriert: 30.05.2011 21:58:16
Lizenz eigener Beiträge: MIT Lizenz

[erledigt] GRUB2-einträge nach belieben sortieren?

Beitrag von kupe » 25.11.2011 22:34:10

abend,

in aller gebotenen kürze: wie strukturiere ich möglichst elegant und dauerhaft die vorhandenen einträge im GRUB-bootloader um bzw. ändere beliebig deren reihenfolge?

folgendes beispiel: rechner mit Windows7 auf sda1 respektive sda2, ein Debian jeweils auf sda3 und sda4, systeme wurden in angegebener reihenfolge installiert, dementsprechend wurzeldateisystem auf sda4. GRUB ordnet nun die einträge folgendermaßen an:

- Debian (sda4)
- Windows (sda1 respektive sda2)
- Debian (sda3)

wie GRUB auf derlei anordnung kommt bzw. welcher mechanismus nach welcher logik die reihenfolge genau bestimmt ist mir grundsätzlich unklar, zumal früher mit nur einem debianesken system auf sda3 es folgendermaßen zuging:

- Debian (sda3)
- Windows

lange rede, bescheidene quintessenz: wie erreiche ich folgende reihenfolge, welche auch geschichten wie beherzte update-grub's überstehen kann?

- Debian (sda4)
- Debian (sda3)
- Windows


mir ist schon bewusst, daß es für derartige probleme rein ästhetischer natur reichlich spät ist, aber es pressiert ja auch keineswegs, zumal der eigentliche lösungsansatz wahrscheinlich keine familienbibeldicken wälzer füllen dürfte. hope so.

in diesem sinne schon einmal ein vergnügliches wochenende und vielen dank im voraus.
Zuletzt geändert von kupe am 08.12.2011 12:31:51, insgesamt 1-mal geändert.
My bash says Ultraman.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 26.11.2011 01:51:18

bolivar hat geschrieben:wie GRUB auf derlei anordnung kommt bzw. welcher mechanismus nach welcher logik die reihenfolge genau bestimmt ist mir grundsätzlich unklar,
Zuerst das Betriebssystem auf dem 'update-grub' ausgeführt wird, dann alle anderen von os-prober erkannten Betriebssysteme. Diese sind nach Reihenfolge der Partitionen sortiert.. ist doch logisch :D

Um die Reihenfolge zu ändern müsstest du dir die Dateien im Verzeichnis '/etc/grub.d/' anschauen. Dort findest du unter anderem die Datei '10_linux', die den Eintrag für das laufende Betriebssystem schreibt und '30_os-prober', die die Einträge für andere Betriebssysteme erstellt.

Ich hab mir mal die Datei '30_os-prober' etwas näher angesehen. Um die Einträge alphabetisch zu sortieren ändere Zeile 35 in der Datei wie folgt ab:

Code: Alles auswählen

OSPROBED="`os-prober | sort -t ':' -k 2 | tr ' ' '^' | paste -s -d ' '`"
os-prober gibt Zeilen aus wie z.B "/dev/sda2:Windows 7 (loader):Windows:chain". Durch das Weiterleiten der Ausgabe an sort kann die Reihenfolge verändert werden. Der Parameter -t ':' sagt sort dass ein Doppelpunkt die Felder trennt, -k 2 veranlasst dann dass nach dem zweiten Feld sortiert wird. Ich hab's noch nicht getestet, also keine Garantie dass es dir nicht die grub.cfg zerschießt. :lol:

Benutzeravatar
detix
Beiträge: 1744
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von detix » 26.11.2011 08:20:06

Wenn es dich nicht stört, das Einträge doppelt vorhanden sind,
dann erstell eine /boot/grub/custom.cfg, Menüpunkte ungefähr so:
menuentry "Debian GNU/Linux, mit Linux 3.0.0-1-686-pae sda6" {
savedefault
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set=root 9514e789-ace5-4cfe-bdb7-fd9b0564970d
linux /boot/vmlinuz-3.0.0-1-686-pae root=UUID=9514e789-ace5-4cfe-bdb7-fd9b0564970d ro vga=791 quiet
initrd /boot/initrd.img-3.0.0-1-686-pae
}
...
Damit eigene Einträge am Anfang zur Auswahl bereitstehen,
benenn die /etc/grub.d/41_custom als /etc/grub.d/08_custom um.
Je nachdem ob du ein bestimmtes oder das zuletzt gestartete System booten willst,
editier noch die /etc/default/grub:
GRUB_DEFAULT=saved
# oder (Ziffer anpassen)
GRUB_DEFAULT=0
Dann nur noch ein beherztes update-grub ausführen.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 01.12.2011 12:54:14

bolivar hat geschrieben:vielen dank im voraus
Eine Rückmeldung wäre mir lieber :P

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von cosmac » 01.12.2011 18:29:40

r900 hat geschrieben:
bolivar hat geschrieben:vielen dank im voraus
Eine Rückmeldung wäre mir lieber :P
bei grub-Fragen doch lieber im voraus, anschließend geht's ja meist nicht mehr :twisted:
Beware of programmers who carry screwdrivers.

Benutzeravatar
kupe
Beiträge: 958
Registriert: 30.05.2011 21:58:16
Lizenz eigener Beiträge: MIT Lizenz

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von kupe » 01.12.2011 22:24:21

r900 hat geschrieben:
bolivar hat geschrieben:vielen dank im voraus
Eine Rückmeldung wäre mir lieber :P
deine wünsche werden neuerdings bereits am ersten dezember erhört:

zu allererst die schlechte nachricht: aufgrund des in dieser beziehung fehlenden hintergrundwissens kann ich dir zwar nicht genau beschreiben, wieso/weshalb/warum die vorgeschlagene methode sämtliche einträge verschwinden läßt, aber fakt ist: sie tut es einfach. erschreckend und faszinierend zugleich, die überraschung war's allemal wert.

somit hat grml seine existenzberechtigung mal wieder eindrucksvoll unter beweis gestellt.

nun die bessere: die von detix beschriebene methode funktioniert natürlich einwandfrei, bringt allerdings das schon vorangekündigte problem mit sich, das ausgewählte einträge nun doppelt vorhanden sind; schwer zu beurteilen, ob das nicht auf die dauer anomale formen von hirnsausen verursacht, versuchsreihe hierzu läuft eben momentan noch...
My bash says Ultraman.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 01.12.2011 23:10:57

bolivar hat geschrieben:zu allererst die schlechte nachricht: aufgrund des in dieser beziehung fehlenden hintergrundwissens kann ich dir zwar nicht genau beschreiben, wieso/weshalb/warum die vorgeschlagene methode sämtliche einträge verschwinden läßt, aber fakt ist: sie tut es einfach. erschreckend und faszinierend zugleich, die überraschung war's allemal wert.
:lol:
Jetzt hab ich's doch mal selbst probiert. Funktioniert bei mir wunderbar. Du fügst nur den rot markierten Teil ein:
OSPROBED="`os-prober | sort -t ':' -k 2 | tr ' ' '^' | paste -s -d ' '`"
Wichtig ist dabei dass du den Doppelpunkt in Apostrophe, nicht Anführungszeichen setzt und den Rest der Zeile, insbesondere den accent ` zu Beginn und am Ende, nicht veränderst. Sehe natürlich gerade dass man das am Bildschirm fast nicht unterscheiden kann.. ich bin eh dafür diese Schreibweise zu verbieten und stattdessen $( ) zu schreiben :)

AxelMD
Beiträge: 1452
Registriert: 15.03.2009 08:02:11

Wilde Sachen

Beitrag von AxelMD » 02.12.2011 14:20:12

Hallo,

Ihr macht hier wilde Sachen.

Schaut euch mal das an:

http://wiki.ubuntuusers.de/GRUB_2/Konfiguration
Die Abarbeitungs-Reihenfolge der Skripte

Wie man sieht, werden die Skriptnamen von einer Nummer (XX_) angeführt. Die Skripte werden aufsteigend dieser Nummer entsprechend abgearbeitet. Haben zwei Skripte die gleiche Nummer, so bestimmt deren weitere alphanumerische Reihenfolge die Abarbeitung.

Ein Skript mit der Bezeichnung 10_eigenes (Skript) wird vor 10_linux zur Abarbeitung aufgerufen. Auf diese Weise lässt sich die Reihenfolge der Menü-Einträge beeinflussen.

Ein Klassiker dabei ist es, im Verzeichnis /etc/grub.d/ die Datei 30_os-prober in 09_os-prober umzubenennen, um so die Windowseinträge vor den Linuxeinträgen anzuordnen.
Viel Erfolg.

Könnt Ihr mir hier helfen?

http://debianforum.de/forum/viewtopic.php?f=12&t=133081 ----wurde geändert


MfG

AxelMD
Zuletzt geändert von AxelMD am 02.12.2011 15:18:30, insgesamt 1-mal geändert.

Benutzeravatar
kupe
Beiträge: 958
Registriert: 30.05.2011 21:58:16
Lizenz eigener Beiträge: MIT Lizenz

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von kupe » 02.12.2011 15:09:03

r900 hat geschrieben: Wichtig ist dabei dass du den Doppelpunkt in Apostrophe, nicht Anführungszeichen setzt und den Rest der Zeile, insbesondere den accent ` zu Beginn und am Ende, nicht veränderst. Sehe natürlich gerade dass man das am Bildschirm fast nicht unterscheiden kann..
das war tatsächlich der springende punkt; nachdem ich das ganze noch einmal »todesmutig« unter akribischer beachtung sämtlicher satzzeichendifferenzen hineingetappst habe, funktioniert es jetzt wirklich prächtig! merci beaucoup pour tes efforts.

allerdings harrt jetzt noch ein daraus resultiertes und eigentlich vernachläßigbares problem seiner lösung:

durch das »komlette herumdrehen« der systemauflistung werden die partition ja genau rückwärts herum aufgezählt (sda4 > sda3 > sda2 > sda1), wobei Windows7 sda1 für den eigentlichen loader und sda2 für das prinzipielle hauptsystem beansprucht.

deshalb würde ich gerne in dieser bestehenden struktur die jetzige auflistung der beiden Win7-partitionen untereinander vertauschen, also zuerst/oberhalb sda1 und darunter der im bootloader eigentlich vollkommen sinnentleerte eintrag des hauptsystems auf sda2 (folgendermaßen: sda4 > sda3 > sda1 > sda2). ginge derartiges grundsätzlich?

AxelMD hat geschrieben: Könnt Ihr mir hier helfen?

http://debianforum.de/forum/viewtopic.php?f=27&t=132969
danke für den darüber befindlichen wiki-link, aber wobei konkret soll dir geholfen werden? dein angegebener viewtopic-link verweist sonderbarerweise wieder genau auf den jetzigen thread. kurze erklärung ist hier sicherlich recht hilfreich...
My bash says Ultraman.

AxelMD
Beiträge: 1452
Registriert: 15.03.2009 08:02:11

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von AxelMD » 02.12.2011 15:17:36

Hallo,

das war ein falscher Link, sorry.

Hier der richtige nochmals:

http://debianforum.de/forum/viewtopic.php?f=12&t=133081


MfG

AxelMD

Benutzeravatar
detix
Beiträge: 1744
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von detix » 02.12.2011 19:35:13

Hirnsausen hin, Hirnsausen her...
Du kannst mit einer custom.cfg nicht nur die Einträge sortieren wie du willst,
sondern auch diverse Live-ISOs die irgendwo rumliegen dort bootfähig einfügen.
Sch... drauf das Einträge doppelt vorhanden sind!

Vielleicht gibt es ja die Möglichkeit die eigenen Menüpunkte von den automatisch erzeugten optisch abzutrennen,
gefunden hab ich da leider noch nichts.
Einen weiteren Vorteil sehe ich in der einfacheren Datensicherung, die custom.cfg zu sichern wird reichen.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 03.12.2011 14:38:54

AxelMD hat geschrieben:Ihr macht hier wilde Sachen. Schaut euch mal das an: http://wiki.ubuntuusers.de/GRUB_2/Konfiguration
Das ist uns bekannt, es geht um die Sortierung der von os-prober erzeugten Einträgen unter sich.
detix hat geschrieben:Du kannst mit einer custom.cfg nicht nur die Einträge sortieren wie du willst, sondern auch diverse Live-ISOs die irgendwo rumliegen dort bootfähig einfügen.
Hat alles seine Vor- und Nachteile. Wenn du z.B. andere Linux-Installationen hast musst du die Einträge immer von Hand anpassen. Es sei denn du arbeitest mit den Befehlen chainloader oder configfile.
bolivar hat geschrieben:deshalb würde ich gerne in dieser bestehenden struktur die jetzige auflistung der beiden Win7-partitionen untereinander vertauschen, also zuerst/oberhalb sda1 und darunter der im bootloader eigentlich vollkommen sinnentleerte eintrag des hauptsystems auf sda2 (folgendermaßen: sda4 > sda3 > sda1 > sda2). ginge derartiges grundsätzlich?
Da stößt die von mir auf die Schnelle gefundenen Methode an ihre Grenzen :) poste doch mal bitte die Ausgabe von 'os-prober'.
Ich sehe gerade dass os-prober auch nur ein script ist, vielleicht kann ich da noch ein bisschen drin rumpfuschen :lol:

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 04.12.2011 19:35:30

So, hier nun meine minimal subversive Lösung für beliebige Reihenfolge der os-prober Einträge. :D
Du erstellst als root mit einem Texteditor die Datei "/usr/bin/my-os-prober" mit folgendem Inhalt:

Code: Alles auswählen

#!/bin/bash
OSPROBED="$(os-prober)"
for i in sda3 sda1 sda2;do
        echo "$OSPROBED" | sed -n "/^\/dev\/$i:/p"
done
Dann machst du die Datei mit 'chmod u+x /usr/bin/my-os-prober' ausführbar. In Zeile 35 der Datei "/etc/grub.d/30_os-prober" nimmst du das "sort..." wieder raus und ersetzt "os-prober" durch "my-os-prober". Die Zeile sieht dann also so aus wie im Original, nur dass "my-os-prober" anstatt "os-prober" da steht.
Die Reihenfolge der Einträge wird über das "for i in ..." in obigem code festgelegt. Netter Nebeneffekt, du kannst darüber auch verändern für welche Partitionen überhaupt ein Eintrag erzeugt wird. Partition 4 steht da übrigens nicht drin, weil die nicht durch os-prober sondern "/etc/grub.d/10_linux" erzeugt wird.
Zuletzt geändert von r900 am 04.12.2011 20:35:29, insgesamt 1-mal geändert.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 04.12.2011 19:57:53

@detix: Ich habe übrigens nichts gegen die von dir vorgeschlagene Methode. Ich habe auch einen statischen Eintrag über den ich ein iso-image vom USB-Stick booten kann. Das Eine schließt das Andere ja nicht aus :)

AxelMD
Beiträge: 1452
Registriert: 15.03.2009 08:02:11

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von AxelMD » 04.12.2011 22:35:04

Hallo r900,

warum installierst Du Grub nicht auf den USB Stick wo sich dein Iso-Image befindet?

Wozu der Umweg über die Festplatte?


MfG

AxelMD

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 04.12.2011 23:34:26

Weil ich dann die bootreihenfolge nicht ändern muss und jeden beliebigen USB-Stick nehmen kann ohne vorher grub drauf zu installieren. Als Umweg empfinde ich das nicht, ganz im Gegenteil. :)

AxelMD
Beiträge: 1452
Registriert: 15.03.2009 08:02:11

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von AxelMD » 05.12.2011 08:31:57

Hallo r900,

das hat wohl Vorteile.

Das Iso liegt einfacht auf dem dem FAT32 USB Stick?

Was und wie hast Grub2 angepaßt?
Die menutentys müssen doch sowie auf das jeweilige iso angepaßt werden.
Insofern relativiert sich dein Nichanpassungsmußvorteil.

Wie sieht dein /etc/grub.d/40_custom aus?

Was für Isos bootet Du?

MfG

AxelMD

Benutzeravatar
kupe
Beiträge: 958
Registriert: 30.05.2011 21:58:16
Lizenz eigener Beiträge: MIT Lizenz

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von kupe » 05.12.2011 19:55:33

r900 hat geschrieben:So, hier nun meine minimal subversive Lösung für beliebige Reihenfolge der os-prober Einträge. :D
Du erstellst als root mit einem Texteditor die Datei "/usr/bin/my-os-prober" mit folgendem Inhalt:

Code: Alles auswählen

#!/bin/bash
OSPROBED="$(os-prober)"
for i in sda3 sda1 sda2;do
        echo "$OSPROBED" | sed -n "/^\/dev\/$i:/p"
done
Dann machst du die Datei mit 'chmod u+x /usr/bin/my-os-prober' ausführbar. In Zeile 35 der Datei "/etc/grub.d/30_os-prober" nimmst du das "sort..." wieder raus und ersetzt "os-prober" durch "my-os-prober". Die Zeile sieht dann also so aus wie im Original, nur dass "my-os-prober" anstatt "os-prober" da steht.
Die Reihenfolge der Einträge wird über das "for i in ..." in obigem code festgelegt. Netter Nebeneffekt, du kannst darüber auch verändern für welche Partitionen überhaupt ein Eintrag erzeugt wird. Partition 4 steht da übrigens nicht drin, weil die nicht durch os-prober sondern "/etc/grub.d/10_linux" erzeugt wird.
herzlichen dank für diesen lösungsansatz, das scheint (auch ohne das nötige vollständige hintergrundwissen) tatsächlich die am wahrscheinlich mit abstand eleganteste lösungsmethode zu sein, zumal man jetzt ja beinahe schon willkürlich mit den einträgen respektive deren erscheinungsformen experimentieren kann.

vor allem der besprochene »nette nebeneffekt« hat's mir besonders angetan, da er ja bezüglich der konfigurationsmöglichkeiten und ganz im gegenteil zum heute abend herumirrlichternden Nikolaus praktisch keinerlei wünsche mehr offen läßt.


jedenfalls noch einmal danke für deine bemühungen.
My bash says Ultraman.

Benutzeravatar
r900
Beiträge: 1053
Registriert: 09.10.2011 20:06:11
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stockholm

Re: GRUB2-einträge nach belieben sortieren?

Beitrag von r900 » 06.12.2011 17:40:55

AxelMD hat geschrieben:Das Iso liegt einfacht auf dem dem FAT32 USB Stick?
Wie sieht dein /etc/grub.d/40_custom aus?
Ist zwar etwas off-topic, aber was soll's :)

Ja der USB-Stick kann ein ganz normales FAT32 Dateisystem haben. Bootfähig sein muss er auch nicht. Mein Eintrag sieht so aus:

Code: Alles auswählen

menuentry "iso-image auf USB (live.iso)" {
       loopback loop (hd1,1)/live.iso
       linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/live.iso file=(loop)/preseed/ubuntu.seed noeject noprompt --
       initrd (loop)/casper/initrd.lz
}
Das sollte für alle Ubuntu-Varianten und Linux Mint funktionieren. Ich habe nur eine Festplatte (hd0), daher ist der USB-Stick für grub hd1. Falls grub den USB-Stick nicht erkennt stimmen eventuell die BIOS-Einstellungen bezüglich USB nicht. Der Kernel der live-CD muss das aber auch unterstützen, deshalb geht es nicht mit allen images. Grub kann zwar das iso-Dateisystem lesen und den kernel starten, aber der muss dann ja auch wissen dass er in einer image-Datei und nicht auf einem optischen Laufwerk nach seinem root-Dateisystem suchen soll.

Ich habe noch einen zweiten Eintrag um iso-images von der Festplatte zu starten.

Code: Alles auswählen

menuentry "iso-image auf HDD" {
        configfile (hd0,msdos6)/iso/grub-iso.cfg
}
Die grub-iso.cfg beinhaltet die einzelnen Einträge die ich mit einem kleinen script aktualisieren kann. Das funktioniert in grub dann etwa so wie ein Untermenü. Also zuerst sehe ich nur "iso-image auf HDD" und wenn ich das auswähle läd er die Einträge aus grub-iso.cfg.

Wie Menüeinträge für andere Live-CD's aussehen findest du evtl hier: http://www.panticz.de/MultiBootUSB
AxelMD hat geschrieben:Die menutentys müssen doch sowie auf das jeweilige iso angepaßt werden.
Wenn es nur kleinere Anpassungen sind kann man die auch in grub selbst vornehmen. Man kann einen Eintrag durch drücken der Taste 'e' bearbeiten bevor man ihn ausführt. Da hat man sogar TAB-Vervollständigung von Dateinamen und grub-Befehlen.

Antworten