kanotix.com
HowTo - Umgang mit Grub2
jokobau - 10.06.2009, 19:32 Uhr
Titel: Umgang mit Grub2
Umgang mit Grub2
(Mit der Bitte um Kritik, bevor wie das ins Wiki setzen)
In aller Regel braucht man keine Anpassung des Menüs.
Die Stärke von grub2 ist die Automatisierung.
Man installiert wie gewohnt z.B. ein MS-Produkt in die 1. Partition.
Wenn man mehrere Linuxe verwendet, muss man sich überlegen, von welchem aus man grub2 "bedienen" will.
Dieses "Leit"-Linux mit grub2 installieren- und grub2 in den Bootsektor, in der Regel wird das /dev/sda sein, installieren.
Wenn man nun ein zusätzliches Betriebssystem installiert dieses nicht den Bootsektor überschreiben lassen.
Dann im "Leit"-Linux in einer Konsole als root
Code:
update-grub
fertig.
Os-prober findet alle Betriebssysteme
Bei jeder Veränderung immer
Code:
update-grub
Was kann man von Hand verändern?
1. Die /etc/default/grub
Die Zahl in diesen Zeilen
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
Erstere bedeute den automatisch zu startenden Menüpunkt
Der zweite ist die Wartezeit.
Die Zeile
GRUB_CMDLINE_LINUX=" quiet vga=791 splash "
sind die Cheatcodes die übergeben werden. Man kann für einen schnelleren Bootvorgang splash oder wenn man alle Kernelmeldungen sehen will auch "quiet" entfernen .
2. Dateien im Verzeichnis /etc/grub.d
00_header
05_debian_theme
10_linux
30_os-prober
40_custom
README
Die vorderen Zahlen bestimmen die Reihenfolge im Menü.
10_linux steht für die Kernel die sich im Verzeichnis /boot befinden
30_os-prober sammelt alle im System befindlichen Betriebssysteme und trägt sie ins Menü ein
40_custom kann individuell editiert werden.
Möglichkeiten:
- die Zahlen vorne ändern, Zahl bestimmt die Reihenfolge im Menü
- das Ausführbar-Attribut entziehen, dann wird das script nicht mehr ausgeführt - Vorsicht !!
- die xx-custom editieren
So kann man z.B. aus der /boot/grub/grub.cfg Menüpunkte herauskopieren und an die /etc/grub.d/40_custom anhängen!! (vorhandene Zeilen nicht ersetzen) und dann verändern.
Bsp.:
aus
### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, linux 2.6.30-8-generic" {
set root=(hd0,1)
search --fs-uuid --set 75b508bc-d7fd-48d6-90ef-7584cb0b6563
linux /boot/vmlinuz-2.6.30-8-generic root=UUID=75b508bc-d7fd-48d6-90ef-7584cb0b6563 ro vga=791
initrd /boot/initrd.img-2.6.30-8-generic
}
mache ich
menuentry "Mein Super-Kanotix" {
set root=(hd0,1)
search --fs-uuid --set 75b508bc-d7fd-48d6-90ef-7584cb0b6563
linux /boot/vmlinuz-2.6.30-8-generic root=UUID=75b508bc-d7fd-48d6-90ef-7584cb0b6563 ro vga=791
initrd /boot/initrd.img-2.6.30-8-generic
}
Wenn ich jetzt noch die 40_custom als 09_custom abspeichere und
Code:
update-grub
gemacht habe
habe ich als ersten Menüpunkt
"Mein Super-Kanotix"
3. Debian - Live - CD's eintragen:
Das Verzeichnis "live" aus der ISO komplett auspacken. Am besten mit dem Isomaster.
Dann in die xx-custom eintragen (Bsp):
menuentry "<irgenwas man will>" {
set root=(hd0,7) # alternativ dazu:
# search --set /<Pfad wohin man ausgepackt hat>/vmlinuz1
linux /<Pfad wohin man ausgepackt hat>/vmlinuz1 boot=live quiet vga=791 utc=no timezone=Europe/Berlin locale=de keyb=de-latin1-nodeadkeys union=aufs live-media-path=<Pfad wohin man ausgepackt hat>
initrd /<Pfad wohin man ausgepackt hat>/initrd1.img
}
Die Partition hd0,7 ist hier beispielhaft.
4. MS-Windows von 2. oder 3. Platte starten:
#!/bin/sh
exec tail -n +3 $0
# Copy into /etc/grub2.d and set chmod +x
menuentry "Windows 2nd hd" {
drivemap (hd0) (hd1)
drivemap (hd1) (hd0)
set root=(hd1,1)
chainloader +1
}
#!/bin/sh
exec tail -n +3 $0
# Copy into /etc/grub2.d and set chmod +x
menuentry "Windows 3rd hd partition 2" {
drivemap (hd0) (hd2)
drivemap (hd2) (hd0)
set root=(hd2,2)
chainloader +1
}
PitTux - 11.06.2009, 10:13 Uhr
Titel: Re: Umgang mit Grub2
[quote="jokobau"]Umgang mit Grub2
(Mit der Bitte um Kritik, bevor wie das ins Wiki setzen)
Bei jeder Veränderung wie Kernelupdates immer
Code:
update-grub
Hi jokobau,
führt das Script beim Kernelupdate update-grub nicht automatisch durch?
Daddy-G - 11.06.2009, 12:00 Uhr
Titel:
@Pittux
Normal ja, wenn in deinem "Haupt"-system, wo grub im mbr ist ein Kernelupdate machst.
Wenn du aber ein Hauptsystem mit Kanotix hast, wo grub im MBR ist und z.B. ein 2. Kanotix mit KDE4, wo du grub in der rootpartition hast., dann wird beim Kernelupdate im Zweitsystem ja das automatische grub-update im dortigen grub, das da in root ist, gemacht.
Dann musst du noch ein update-grub in deinem Hauptsytem machen, damit der neue Kernel des Zweitsystems auch im MBR-Grub eingetragen wird.
LaCa - 11.06.2009, 12:25 Uhr
Titel:
hallo jokobau,
sehr schöne Beschreibung.
Habe aber noch ein kleines Problem.
Liegt das "ausgepackte" live-Verzeichnis vom Iso auf einer eigenen Partition (home-Partition) funktioniert es nicht.
Nur wenn es auf der gleichen Partition wie das boot-Verzeichnis liegt funktioniert es bei mir.
Habe es mit "set root" und mit "search" versucht. Leider ohne Erfolg.
->
set root=(hd0,3) 3. Partition auf erster Festplatte
und auch
search --set /home/LaCa/kanotix-live/vmlinuz1 wobei home auf der 3. Partition liegt. Das System (also boot) auf der 2.
<-
Hast Du da evtl. eine Idee?
Gruß LaCa
jokobau - 11.06.2009, 13:03 Uhr
Titel:
@Pittux
Das ist in der Tat etwas blöd formuliert. Weils in der Regel beim Kernelupdate ausnahmsweise nicht braucht. Ausnahme wie Daddy-G beschreibt.
Will aber sagen, dass im Gegensatz zu Grub 0.96 das editieren nicht reicht, sondern immer man mit update-grub den Grub neu schreiben muss.
@LaCa
Das ist sicher ein Pfad - Problem
z.B. /home/LaCa/kanotix-live/vmlinuz1 funktioniert sicher nicht, da wohl die sda3 unter /home eingehängt wird, wenn Kanotix gestartet ist.
Muss wohl eher heißen
Code:
search --set /LaCa/kanotix-live/vmlinuz1
Den selben Fehler wirst wohl gemacht haben bei
Code:
<Pfad wohin man ausgepackt hat>
LaCa - 11.06.2009, 13:56 Uhr
Titel:
Danke jokobau,
genau das war`s. Wieder was dazu gelernt.
Gruß LaCa
Deppsche - 12.06.2009, 07:46 Uhr
Titel:
Zitat:
Wenn du aber ein Hauptsystem mit Kanotix hast, wo grub im MBR ist und z.B. ein 2. Kanotix mit KDE4, wo du grub in der rootpartition hast., dann wird beim Kernelupdate im Zweitsystem ja das automatische grub-update im dortigen grub, das da in root ist, gemacht.
Dann musst du noch ein update-grub in deinem Hauptsytem machen, damit der neue Kernel des Zweitsystems auch im MBR-Grub eingetragen wird.
Das kann man ganz einfach mit chainloader übergehen. So mach ich das zumindest.
Und dann sieht das ganze dann so aus
Code:
menuentry "Windows Vista" {
set root=(hd0,2)
chainloader +1
}
menuentry "Kanotix KDE4" {
set root=(hd0,8)
chainloader +1
}
menuentry "*buntu 9.04" {
set root=(hd0,4)
chainloader +1
}
Es wird dann der jeweilige Bootmanager geladen und man hat immer die Kernel zur auswahl.
jokobau - 14.06.2009, 20:15 Uhr
Titel:
Na, ja, wems so gefällt.
Das kannste doch alles im 1. Menü schon haben. Os-prober sammelt ja alles. Warum ein 2tes aufrufen ? Wenn ein Kernelupdate machst für Kanotix KDE4, wirst wohl auch eins für dein "Leit-BS" machen. Ich weiss nicht wie oft du kernelupdates für deine *buntus machst. Wird wohl nicht so wild sein, oder ???
Daddy-G - 14.06.2009, 22:52 Uhr
Titel:
Nun
trotzdem gut an chainloader erinnert zu werden, anhand der Beispiele mal getestet
Ist aber in der Tat so, dass man ja gerade beim Hauptsystem am ehesten update-grub macht und dann ist quasi doppelt gemoppelt, dergestallt der grub dann eh alles einsammelt.
Deppsche - 16.06.2009, 09:43 Uhr
Titel:
Ich habe bei mir OS-Proper abgestellt, da es eine Recovery Partition immer mit aufnimmt und die Namen mir nicht gefallen, die in die grub.cfg übernommen werden.
Kano - 16.06.2009, 13:31 Uhr
Titel:
@jokobau
Habe letztens noch einen Fehler gefunden, der verhintert hat, dass Grub2 mit variablen umgehen kann. Mit dem neusten update geht nun auch
set var="was auch immer"
benutzt wirds dann mit
${var}
Die kurzschreibweise $var ist zwar in der Theorie auch möglich, aber wird erst das nächste Grub update können - Menüeinträge damit werden einfach gar nicht angezeigt. Was man damit machen kann siehst im Beispiel dir. Ich denke das wolltest du eh wissen, wie das geht
Achja, das "insmod drivemap" braucht man doch nicht, es wird auch so automatisch geladen. Kann man aus den Anleitungen entfernen. Aktuell ist linux eigentlich linux16 und das was vorher linux war ist momentan linux32.
Wichtig: Unbedingt grub an die stelle beim dist-upgrade neu installieren lassen, wo es auch war. Wenn es NICHT im mbr einer platte war (wo man einfach mit SPACE aktivieren kann als ziel beim update), dann schaut man mit
mount|head -1
nach und installiert es mit
grub-install /dev/xxx
wo halt da als erstes steht.
jokobau - 16.06.2009, 22:56 Uhr
Titel:
insmod drivemap habe ich entfernt.
Die *buntu-ISO-Geschichte mal kurz angeschaut.
Werde es gelegentlich einpflegen
Wenn ich denn Variable setzen kann dann kann ich das wohl auch Menüpunkt übergreifend
Könnt ich mir so vorstellten
set ISOVAR = "Booten vom ISO --> "
menuentry " ${ISOVAR} Kanotix KDE4" {
....
.....
}
menuentry " ${ISOVAR} Kanotix 64 AMD" {
...
..
}
Kano - 16.06.2009, 23:27 Uhr
Titel:
Das mit der variable geht noch nicht korrekt. Da $root in os-prober mit drin war, musst ich das update erstmal wieder austun, oder ich hätte noch nen hotfix machen müssen. Ich hoffe bald gibts ein paket, wo $var und ${var} korrekt läuft. Aktuell gehts nur so wie im .old file. Aber sobald grub im update ist MUSS es auch installiert werden. Der grund ist, dass ne ältere Grub version mit den geänderten parametern nicht klarkommt welche natürlich geschrieben werden mit update-grub.
jokobau - 16.06.2009, 23:55 Uhr
Titel:
Na, ja. Ich kann die Pfade ja dann auch jeweils ausschreiben, statt Variable zu benutzen.
krishan1 - 29.08.2009, 16:44 Uhr
Titel:
Deppsche hat folgendes geschrieben::
Ich habe bei mir OS-Proper abgestellt, da es eine Recovery Partition immer mit aufnimmt und die Namen mir nicht gefallen, die in die grub.cfg übernommen werden.
Hallo,wie wird os-prober abgestellt?
Bei "reinen" Debian-Systemen wird es nicht ausgeführt obwohl das Skript vorhanden und ausführbar ist.
Viele Grüsse
jokobau - 29.08.2009, 19:59 Uhr
Titel:
chmod -x /etc/grub.d /30_os-prober
Kano - 29.08.2009, 21:22 Uhr
Titel:
Man kann auch einfach os-prober löschen. Das Paket ist optional, wird von grub2 aber mit jedem Aufruf von update-grub ausgewertet. Bei grub1 war das nur bei der Install der Fall. Jetzt ist es praktischer, da es neue installs sofort findet.
krishan1 - 30.08.2009, 10:37 Uhr
Titel:
jokobau hat folgendes geschrieben::
chmod -x /etc/grub.d /30_os-prober
Kano hat folgendes geschrieben::
Man kann auch einfach os-prober löschen.
Ja, das waren auch meine ersten Gedanken. Aber wie wird das bei nativen Debian-Systemen gehandhabt? Dort ist, wie gesagt, 30_os-prober vorhanden und ausführbar in /etc/grub.d, es werden aber trotzdem keine Einträge generiert. Getestet bei Squeeze und Sid. Es gibt also scheinbar noch einen anderen Trick.
Würde mich mal einfach aus Neugier empfehlen.
Viele Grüsse
stalin2000 - 30.08.2009, 12:45 Uhr
Titel:
Hallo Ihr,
was haltet Ihr eigentlich vom Programm "startupmanager" ? Kann der auch mit grub2?
Gibt es nicht ein GUI für grub2? Irgendwie finde ich das etwas zu kompliziert.
Kano - 30.08.2009, 13:06 Uhr
Titel:
@krishan1
Hast es nicht geschnallt, dass das PAKET os-prober auch installiert sein muss?
krishan1 - 30.08.2009, 16:01 Uhr
Titel:
Kano hat folgendes geschrieben::
@krishan1
Hast es nicht geschnallt, dass das PAKET os-prober auch installiert sein muss?
Nein, hatte ich tatsächlich nicht geschnallt und war davon ausgangen dass das Skript alleine genüge. Jetzt bin ich schlauer.
Eine Sache noch:
Der Parameter vga ist bei Grub2 ja "deprecated". Beim Starten weisst Grub kurz darauf hin und sagt man möge gfxpayload verwenden. Wie wird dieser Parameter in die /etc/default/grub eingebaut damit er verwendet wird? Eigene Versuche brachten kein Ergebnis.
Viele Grüsse
jokobau - 30.08.2009, 17:53 Uhr
Titel:
@Stalin2000
Zitat:
Irgendwie finde ich das etwas zu kompliziert.
Ist
Ist es überhaupt nicht. Weil normal musst du gar nix machen. Bestenfalls ein
Code:
update-grub
Seine Stärke ist ja, dass er automatisch funktioniert.
Kano - 30.08.2009, 19:32 Uhr
Titel:
@krishan1
Die Meldung ist mir durchaus bekannt, entweder patche ich GRUB2 selbst oder ich warte bis jemand anders dies macht, damit man es in der /etc/default/grub festlegen kann. Es geht aktuell nur "halb", weil es wirkt auf das theme dann auch, das ist nicht so sinnvoll.
krishan1 - 30.08.2009, 20:49 Uhr
Titel:
Kano hat folgendes geschrieben::
@krishan1
Die Meldung ist mir durchaus bekannt, entweder patche ich GRUB2 selbst oder ich warte bis jemand anders dies macht, damit man es in der /etc/default/grub festlegen kann. Es geht aktuell nur "halb", weil es wirkt auf das theme dann auch, das ist nicht so sinnvoll.
OK, ich kann warten. Dachte es würde schon damit funktionieren.
Kano - 30.08.2009, 21:26 Uhr
Titel:
Es funktioniert auch so, es ist ja nur ne belanglose hinweismeldung.
krishan1 - 01.09.2009, 09:19 Uhr
Titel:
Es gibt ja in der /etc/default/grub die Option
Zitat:
# Uncomment to disable generation of recovery mode menu entrys
GRUB_DISABLE_LINUX_RECOVERY="true"
Dieses wirkt sich aber nur auf /etc/grub.d/10_linux aus. 30_os-prober bleibt davon unberührt und erzeugt weiter Einträge für die recovery.
Ich nehme mal an da kann man nichts machen, oder?
Kano - 01.09.2009, 09:46 Uhr
Titel:
os-prober nimmt die Einträge der anderen Distributionen. Also musst dort die Einstellung auch ändern (update-grub nicht vergessen) und dann update-grub in der Hauptdistro aufrufen, wo der Loader im mbr ist.
stalin2000 - 03.09.2009, 18:43 Uhr
Titel:
Zitat:
Möglichkeiten:
- die Zahlen vorne ändern, Zahl bestimmt die Reihenfolge im Menü
Heißt das, wenn ich aus der 40_custom eine 10_custom und aus der Linux_10 eine Linux_40 mache, bootet custom standardmäßig als erstes?
Wie erhöhe ich die Zeit für die Auswahl des Betriebssystems?
Kano - 03.09.2009, 19:01 Uhr
Titel:
Es ist nicht sinnvoll bestehende Einträge in der Nummer zu ändern, weil die bei einem Grub update wieder da sind. Wenn du ne zusätzliche Datei machst, also z.b. ne 09_sonstwas wird die vor Linux eingebaut.
Deppsche - 03.09.2009, 20:10 Uhr
Titel:
Zitat:
Wie erhöhe ich die Zeit für die Auswahl des Betriebssystems?
in der Datei /etc/default/grub
und natürlich update-grub danach aufrufen, damit es auch übernommen wird
krishan1 - 06.09.2009, 00:06 Uhr
Titel:
Ich habe über Grub2 mal was ins Wiki geschrieben:
http://www.kanotix.com/index.php?module=pnWikka&tag=Grub2
Durchsicht/Änderungen/Ergänzungen/Verbesserungen erwünscht (Themes fehlt z.B. noch).
thebluesman - 07.09.2009, 08:47 Uhr
Titel:
Gut gemacht!
Das versteh sogar ich.
Daddy-G - 07.09.2009, 12:09 Uhr
Titel: Wiki-Artikel
danke für den Wiki-Artikel.
Schön, dass das fortgeführt wird. Habe das mit einem zusätzlichen grünen-EX markiert. Es ist zwar klar, dass es für Excalibur ist, aber hinsichtlich der Übersichtlichkeit im Wiki sinnvoll.
Auch danke für den Artikel zur Installation von Excalibur.
Anguis_fragilis - 07.09.2009, 21:56 Uhr
Titel:
@ krishan1
Ich möchte mich der Meinung von thebluesman anschließen.
Super!
Gruß
Anguis_fragilis
stalin2000 - 10.10.2009, 10:41 Uhr
Titel: Geht nicht!
Hallo Ihr,
also ich wollte die Bootreihenfolge ändern.
Habe das:
Zitat:
Die Zahl der custom Datei in /etc/grub.d auf 09 geändert
und das gemacht:
Zitat:
/boot/grub/grub.cfg Menüpunkte herauskopieren und an die /etc/grub.d/40_custom anhängen!"
geht aber nicht!
Für mich ist Grub2 ein guter Grund in dieses große Lied einzustimmen:
Nieder mit IT!
krishan1 - 10.10.2009, 11:01 Uhr
Titel: Re: Geht nicht!
stalin2000 hat folgendes geschrieben::
...geht aber nicht!
Kannst Du das etwas genauer umschreiben und die Inhalte der Dateien posten?
update-grub wurde gemacht?
jokobau - 10.10.2009, 12:02 Uhr
Titel: Re: Geht nicht!
Ein schöner Link zu dem guten Song von Pigor.
Jedoch ist grub2 ein echter Fortschritt. Normale Leute müssen nämlich gar nix machen. Haben alle ihre BS automatisch zur Auswahl.
Im konkreten musst überprüfen, ob deine 09_custom ausführbar ist. Wird wohl sein. und dass der Syntax stimmt:
exec tail -n +3 $0
menuentry "3Text" { ########## geschweifte Klammer dann CR
.....
....
.....
..... ##### dann CR
} ##### geschweifte Klammer dann CR
bata32 - 15.10.2009, 13:58 Uhr
Titel:
hab zwei komische Fragen:
Wie repariert man GRUB2,
a) nachdem Windows neu installiert wurde und den MBR überschrieben hat?
b) wenn sich das "Masterlinux" ändert (von sda7 auf sda9)?
Gruß
bata
Deppsche - 15.10.2009, 14:32 Uhr
Titel:
Am besten mit der Kanotix LiveCD booten, dann ein Terminal öffnen
und über chroot Grub neuinstallieren.
Code:
mount /dev/sda9 /mnt
mount --bind /dev /mnt/dev
chroot /mnt
dann einfach
update-grub
danach
grub-install /dev/sda
und Grub ist wieder im MBR
Anguis_fragilis - 17.07.2010, 14:48 Uhr
Titel:
Hallo allerseits,
habe vor ein paar Tagen mein Win XP neu installiert und muss Grub2 reparieren.
Dabei habe ich mich an die Anleitung von Deppsche gehalten, mit dem Unterschied, dass ich für sda9 in der ersten Zeile sdb1 eingesetzt habe.
Also:
Zitat:
mount /dev/sdb1 /mnt
statt:
Zitat:
mount /dev/sda9 /mnt
Dabei gab es einige Fehlermeldungen, an die ich mich leider nicht mehr erinnern kann.
Auf sdb1 befindet sich meine Kanotix Systempartition, auf sda2 meine Win-Partition (Win C:\)
Jetzt bin ich in der glücklichen Lage, Kanotix wieder starten zu können, jedoch leider nicht Win.
Wenn ich den Rechner starte, habe ich lediglich Kanotix zur Auswahl.
Das ist meiner Meinung nach suboptimal.
Caillean hat ja auch mal was dazu geschrieben http://www.kanotix.com/index.php?module ... Reparieren
Und zusätzlich habe ich diesen link: www.osfight.de/archives/tag/grub2-reparieren gefunden,
Der ist aber für Ubuntu. Kann man den 1zu1 übernehmen?
Die Anleitungen unterscheiden sich alle irgendwie von einander, Ich bin verwirrt.
Eigentlich wollte ich jetzt nicht in Aktionismus verfallen und alles Mögliche ausprobieren, sondern hier erst einmal nachfragen.
Hat jemand ne` Lösung zu meinem Problem?
Gruß
Anguis_fragilis
P.S.: Ich bin ein Dau und gar nicht schlau.......
Kano - 17.07.2010, 15:40 Uhr
Titel:
Wenn Grub2 benützt wird einfach
update-grub
aufrufen, so einfach ist das... Bei Grub1 musstest ja manuell rumfummeln, hier geht alles automatisch.
Anguis_fragilis - 17.07.2010, 16:29 Uhr
Titel:
Hallo Kano,
danke für den Tipp, habe Grub2 und nach
Code:
update-grub
klappt es jetzt vorzüglich!
Gruß
Anguis_fragilis
Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007