View previous topic :: View next topic |
Author |
Message |
wuesti Apprentice
Joined: 07 Mar 2009 Posts: 191
|
Posted: Mon Oct 14, 2013 11:46 am Post subject: Grub2: Reihenfolge der Menüeinträge von /etc/grub.d/10_linux |
|
|
Moin Moin!
Falls beim Kompilieren des Kernels das System nicht mehr startet, kopiere ich den aktuellen, funktionierenden Kernel nach /boot/kernel-ok.
Code: | # ls /boot
kernel-3.10.7-gentoo kernel-ok |
grub2-mkconfig setzt ihn mir immer an die erste Stelle des Menüs. Ich habe schon alles Mögliche versucht: höhere Zahlenkombinationen, einen neuen Kernel erstellen, etc. Er bleibt vorne. Das wäre nicht so wild gäbe es nicht das zweite Problem: Ich kann den Originalkernel nicht starten.
Code: | # grub2-mkconfig -o /boot/grub/grub.cfg
grub.cfg wird erstellt …
Linux-Abbild gefunden: /boot/kernel-ok
Linux-Abbild gefunden: /boot/kernel-3.10.7-gentoo
/dev/mapper/control: open failed: Kein passendes Gerät gefunden
Failure to communicate with kernel device-mapper driver.
Check that device-mapper is available in the kernel.
No volume groups found
Ubuntu 11.04 (11.04) auf /dev/sda2 gefunden
erledigt
|
Code: | # cat /boot/grub/grub.cfg
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7ca0e3be-b764-47e7-ac46-4bbc0cfef43d' {
...
echo 'Linux ok wird geladen …'
linux /kernel-ok root=/dev/sda5 ro
}
submenu 'Erweiterte Optionen für Gentoo GNU/Linux' $menuentry_id_option 'gnulinux-advanced-7ca0e3be-b764-47e7-ac46-4bbc0cfef43d' {
menuentry 'Gentoo GNU/Linux, mit Linux ok' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-ok-advanced-7ca0e3be-b764-47e7-ac46-4bbc0cfef43d' {
...
echo 'Linux ok wird geladen …'
linux /kernel-ok root=/dev/sda5 ro
}
menuentry 'Gentoo GNU/Linux, mit Linux 3.10.7-gentoo' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.10.7-gentoo-advanced-7ca0e3be-b764-47e7-ac46-4bbc0cfef43d' {
...
echo 'Linux 3.10.7-gentoo wird geladen …'
linux /kernel-3.10.7-gentoo root=/dev/sda5 ro
}
}
### END /etc/grub.d/10_linux ### |
Setze ich in /etc/default/grub wird kernel-ok geladen. Das ist klar.
Setze ich wird die Menüzeile für das Submenü angewählt und der erste Kernel (kernel-ok) geladen.
Setze ich wird der dritte Kernel im Hauptmenü geladen und das ist Ubuntu. Der zweite Unterpunkt im Submenü ist nicht für die Ladeautomatik zu erreichen.
Ich hätte gern eine Lösung, die auch nach einem grub2-Update noch funktioniert. Entweder soll das Untermenü nicht erstellt werden oder der Originalkernel soll an die erste Stelle im Menü. Die zweite Version wäre natürlich eleganter.
Kann jemand helfen? _________________ Linux-User seit 1999 |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Mon Oct 14, 2013 4:37 pm Post subject: |
|
|
Verzichte auf den blödsinnigen Automatismus und richte Dir eine vernünftige grub.cfg von Hand ein: Anders musst Du immer gegen irgendwelche Skripte arbeiten. |
|
Back to top |
|
|
mrsteven Veteran
Joined: 04 Jul 2003 Posts: 1938
|
Posted: Mon Oct 14, 2013 10:05 pm Post subject: |
|
|
Oder alternativ einfach den alten Dateinamen beibehalten, laut Gentoo-Doku ist GRUB2 schon schlau genug dann einfach den mit der höchsten Versionsnummer als Default auszuwählen. Nachteil ist halt, dass du nach jeder Kernel-Installation die Config neu erzeugen musst: Code: | grub2-mkconfig -o /boot/grub/grub.cfg |
Besser ist es da schon, die grub.cfg selber zu schreiben und die vom install-Target des Kernel-Makefiles gesetzten Symlinks zu verwenden, dazu bin ich allerdings bisher auch noch nicht gekommen... _________________ Unix philosophy: "Do one thing and do it well."
systemd: "Do everything and do it wrong." |
|
Back to top |
|
|
wuesti Apprentice
Joined: 07 Mar 2009 Posts: 191
|
Posted: Tue Oct 15, 2013 4:51 am Post subject: |
|
|
mrsteven wrote: | ...laut Gentoo-Doku ist GRUB2 schon schlau genug dann einfach den mit der höchsten Versionsnummer als Default auszuwählen.... |
Das ist es was ich noch nicht ausprobiert habe. Ich musste nur den Kernel-ok in kernel-1-ok umbenennen. So hat er eine niedrige Versionsnummer und wird ans Ende gehängt.
Vielen Dank _________________ Linux-User seit 1999 |
|
Back to top |
|
|
toralf Developer
Joined: 01 Feb 2004 Posts: 3922 Location: Hamburg
|
Posted: Thu Oct 17, 2013 3:59 pm Post subject: |
|
|
Wie setze ich eigentlich jetzt einen timeout über /etc/grub.d/00_header ?
ick -das hier ist wirklich eine dumme Frage von mir - Antwort steht wohl in /etc/default/grub
Last edited by toralf on Thu Oct 17, 2013 4:58 pm; edited 1 time in total |
|
Back to top |
|
|
franzf Advocate
Joined: 29 Mar 2005 Posts: 4565
|
Posted: Thu Oct 17, 2013 4:33 pm Post subject: |
|
|
Dumme Frage:
Ich hab hier die Faulmeier-Variante mit dem alten grub am laufen: kernel werden nach /boot kopiert, dort existieren drei symlinks: kernel_current, kernel_testing und kernel_failsafe. testing symlink kommt immer bei neuem minor-release, bei bug-update kommt der neue direkt nach current. failsafe wird gaaanz selten aktualisiert, damit ich auch gaaanz sicher mein System hochkrieg. grub.cfg hat für alle drei kernels nen Eintrag, zuletzt hab ich darin rumeditiert, als ich mit modesetting spielen musste
Geht so ein Ansatz auch mit grub2? |
|
Back to top |
|
|
wuesti Apprentice
Joined: 07 Mar 2009 Posts: 191
|
Posted: Thu Oct 17, 2013 5:32 pm Post subject: |
|
|
franzf wrote: | Dumme Frage:
...
Geht so ein Ansatz auch mit grub2? |
Ein Menüeintrag in meiner /boot/grub/grub.cfg sieht so aus:
Code: | menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7ca0e3be-b764-47e7-ac46-4bbc0cfef43d' {
load_video
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' 41a3e6b0-c9ac-45e8-ac08-b8c1f7b9d1f7
else
search --no-floppy --fs-uuid --set=root 41a3e6b0-c9ac-45e8-ac08-b8c1f7b9d1f7
fi
echo 'Linux 3.10.7-gentoo wird geladen …'
linux /kernel-3.10.7-gentoo root=/dev/sda5 ro
}
|
Wenn du einmal sie die grub.conf einmal mit Code: | grub2-mkconfig -o /boot/grub/grub.cfg | erzeugst und deinen links und Bedürfnissen anpasst, brauchst du sie ja nicht mehr zu ändern. _________________ Linux-User seit 1999 |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Thu Oct 17, 2013 7:08 pm Post subject: |
|
|
franzf wrote: | Geht so ein Ansatz auch mit grub2? |
Ja, die grub.cfg ist das Analogon zur grub.conf. Es hat auch im Prinzip die gleichen Möglichkeiten, nur noch mehr (z.B. Variablen, Tests usw.) Die Skripte, die sie verändern, braucht man nicht zu benutzen (und sollte es m.E. auch nicht), außer vielleicht das allererste mal um eine vernünftige Beispiel-Konfiguration zu haben.
wuestl wrote: | 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' 41a3e6b0-c9ac-45e8-ac08-b8c1f7b9d1f7
else
search --no-floppy --fs-uuid --set=root 41a3e6b0-c9ac-45e8-ac08-b8c1f7b9d1f7
fi |
Da schaut man einmal nach, wie $feature_platform_search_hint auf der eigenen Platform definiert ist - normalerweise "y" - und kann den anderen Fall gleich mal wegräumen.
Hier sieht man übrigens einen der Vorteile von grub2: Wenn möglich, wird die Partition aufgrund der UUID gefunden (so dass das Ganze also meist auch dann noch geht, wenn die Festplatte wegen Rechnerumbau eine andere Nummer bekommt), und wenn es diese nicht findet, ist der Fallback nach den obigen "Hints" die erste Partition auf der Platte 0 (so dass das Ganze also meist auch dann noch geht, wenn man umpartitioniert hat). Natürlich kann man auch auf "search" verzichten, und einfach wie in Legacy Grub auf eine feste Partition zugreifen... |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2545 Location: Konradsreuth (Germany)
|
Posted: Wed Oct 23, 2013 10:24 am Post subject: |
|
|
franzf wrote: | Dumme Frage:
Ich hab hier die Faulmeier-Variante mit dem alten grub am laufen: kernel werden nach /boot kopiert, dort existieren drei symlinks: kernel_current, kernel_testing und kernel_failsafe. testing symlink kommt immer bei neuem minor-release, bei bug-update kommt der neue direkt nach current. failsafe wird gaaanz selten aktualisiert, damit ich auch gaaanz sicher mein System hochkrieg. grub.cfg hat für alle drei kernels nen Eintrag, zuletzt hab ich darin rumeditiert, als ich mit modesetting spielen musste ;)
Geht so ein Ansatz auch mit grub2? |
So ungefähr sieht’s bei mir auch aus. Folgendes hab ich gemacht:
/etc/grub.d/40_custom
Code: | #!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Gentoo" {
root=hd0,1
linux /boot/vmlinuz root=/dev/sda3
} |
Wobei /boot/vmlinuz mein Symlink auf den aktuellen Kernel ist
/etc/default/grub
Code: | GRUB_DISTRIBUTOR="Gentoo"
GRUB_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT=1
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DEFAULT="Gentoo"
GRUB_TERMINAL=console |
Man kann nämlich nicht nur einen Menüeintrag per Listenposition referenzieren, sondern auch per Name. Läuft alles 1A, so wie bisher auch mit GRUB1. Und man muss kein grub2-mkconfig nach einem Kernelupdate aufrufen. |
|
Back to top |
|
|
|