Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Grub2: Reihenfolge der Menüeinträge von /etc/grub.d/10_linux
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
wuesti
Apprentice
Apprentice


Joined: 07 Mar 2009
Posts: 191

PostPosted: Mon Oct 14, 2013 11:46 am    Post subject: Grub2: Reihenfolge der Menüeinträge von /etc/grub.d/10_linux Reply with quote

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
Code:
GRUB_DEFAULT=0
wird kernel-ok geladen. Das ist klar.
Setze ich
Code:
GRUB_DEFAULT=1
wird die Menüzeile für das Submenü angewählt und der erste Kernel (kernel-ok) geladen.
Setze ich
Code:
GRUB_DEFAULT=2
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
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6747

PostPosted: Mon Oct 14, 2013 4:37 pm    Post subject: Reply with quote

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
View user's profile Send private message
mrsteven
Veteran
Veteran


Joined: 04 Jul 2003
Posts: 1938

PostPosted: Mon Oct 14, 2013 10:05 pm    Post subject: Reply with quote

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
View user's profile Send private message
wuesti
Apprentice
Apprentice


Joined: 07 Mar 2009
Posts: 191

PostPosted: Tue Oct 15, 2013 4:51 am    Post subject: Reply with quote

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
View user's profile Send private message
toralf
Developer
Developer


Joined: 01 Feb 2004
Posts: 3921
Location: Hamburg

PostPosted: Thu Oct 17, 2013 3:59 pm    Post subject: Reply with quote

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
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Thu Oct 17, 2013 4:33 pm    Post subject: Reply with quote

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
View user's profile Send private message
wuesti
Apprentice
Apprentice


Joined: 07 Mar 2009
Posts: 191

PostPosted: Thu Oct 17, 2013 5:32 pm    Post subject: Reply with quote

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
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6747

PostPosted: Thu Oct 17, 2013 7:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
l3u
Advocate
Advocate


Joined: 26 Jan 2005
Posts: 2540
Location: Konradsreuth (Germany)

PostPosted: Wed Oct 23, 2013 10:24 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum