Verstehen Sie zunächst, wie Ubuntu Grub2 konfiguriert.
- /boot/grub/grub.cfg ist das Grub2-Menü
- Der Befehl update-grub generiert diese Datei automatisch
- ... indem Sie die Standardeinstellungen aus / etc / defaults / grub lesen
- ... und Shellskripte in /etc/grub.d ausführen
Wenn Sie also grub.cfg nicht nach jedem Kernel-Update bearbeiten möchten , möchten Sie die Skripte in /etc/grub.d optimieren, damit Ihre Änderungen bei jeder Ausführung von update-grub übernommen werden.
Zweitens, um Ihre erste Frage direkt zu beantworten, kenne ich keine Möglichkeit, bestimmte Startoptionen unsichtbar zu machen, aber dennoch über das Grub-Menü zugänglich zu sein. Es gibt viele kleine Dinge an Grub1, die in Grub2 nicht neu implementiert wurden, und es würde mich nicht wundern, wenn dies eines davon wäre.
Stattdessen können Sie alle Menüeinträge unsichtbar machen (bis sie hervorgehoben werden), indem Sie die Schriftfarbe des Menüs auf die gleiche Hintergrundfarbe einstellen. In /etc/grub.d/05_debian_theme , ändert menu_color_normal , so dass die erste Farbe (Schriftart) mit der zweiten Farbe (Hintergrund). Lassen Sie menu_color_highlight anders, damit der Eintrag unter dem Cursor angezeigt wird.
# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white
# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white
Ein Trennzeichen in das Grub-Menü aufnehmen.
In Grub1 würden Sie einen neuen Eintrag wie diesen einfügen. Soweit ich mich erinnere, brauchten Sie die Root- Deklaration, um einen gültigen Menüeintrag zu erstellen, andernfalls ignorierte Grub1 sie.
# separator
title --------------------
root
Ich vermute, Grub2 könnte ähnlich sein. Ein sehr einfacher Menüeintrag sieht in grub.cfg folgendermaßen aus :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Da "irgendetwas" in den doppelten Anführungszeichen als Titel angezeigt wird, können Sie damit ein Trennzeichen vortäuschen. Wie Grub1 möchte Grub2, dass das Linux- Schlüsselwort es als echten Menüeintrag behandelt. Achten Sie also darauf, dass Sie es nicht versehentlich auswählen.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
Leider bedeutet "alles" nichts ; Während ich dies testete, versuchte ich es mit einer langen Reihe von Strichen ("----------------") und es funktionierte nie. Aber es mag die kurze Punktfolge, die oben gezeigt wird, also können Sie das verwenden.
..... .....
So macht man ein Trennzeichen. Um ein Bündel zu erstellen und sie automatisch dort zu platzieren, wo Sie sie möchten, müssen Sie sie zu den Skripten in /etc/grub.d hinzufügen .
In diesem Beispiel setzen wir ein einfaches Trennzeichen zwischen die verschiedenen Abschnitte von grub.cfg . Wenn Sie sich /etc/grub.d ansehen , sehen Sie die folgenden Skripte:
- 00_header
- 05_debian_theme
- 10_linux - Einträge für Ubuntu-Kernel & Recovery
- 20_memtest86 + - Eintrag für Memtest86 +
- 30_os-prober - Einträge für Windows und andere Linux-Distributionen
- 40_custom - standardmäßig nichts; spezielle Benutzereinträge können hier gehen
Wir erstellen ein neues Skript, ein Trennzeichen und fügen Folgendes ein:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Verschieben Sie nun das Skript für das erste Trennzeichen und verknüpfen Sie es für die anderen. Die Skripte werden der Reihe nach ausgeführt. Wenn Sie also möchten, dass das erste vor 10_linux kommt , nennen Sie es 09_separator oder so.
cd /etc/grub.d
# start the editor, paste in the script above, save, and exit
sudo nano separator
# set executable
sudo chmod +x separator
# rename into the first position
mv separator 09_separator
# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator
Wenn Sie in / etc / default / grub einen bestimmten Eintrag als Standard festgelegt haben , müssen Sie ihn möglicherweise aktualisieren. Grub2 beginnt mit der Zählung der Menüeinträge bei 0, und jedes dieser "Trennzeichen" ist ein gültiger Eintrag, sodass auch diese zählen. Wenn Ihr vorheriger Standardeintrag 0 war und Sie zuvor ein Trennzeichen hinzugefügt haben, müssen Sie GRUB_DEFAULT in 1 ändern
Führen Sie nun update-grub aus und untersuchen Sie /boot/grub/grub.cfg - Sie sollten die Trennzeichen dort sehen. Wenn Sie dies tun, starten Sie neu und checken Sie sie aus.
....
Wenn Sie Trennzeichen an einer anderen Stelle platzieren möchten, z. B. zwischen verschiedenen Kernelversionen, müssen Sie 10_linux (oder ein anderes Skript) direkt bearbeiten und den geeigneten Ort zum Hinzufügen des Trennzeichens finden. Sie können die Zeilen aus dem obigen Skript verwenden. Fügen Sie alles außer der ersten Zeile #! / bin / sh hinzu.
Wenn Sie etwas Schöneres wünschen, verwenden Sie Grub-Splash-Bilder oder -Themen. Ich muss Ihnen einen Regencheck zu diesen Themen geben, aber überprüfen Sie die Ressourcen unten.
Ressourcen:
Es gibt zwei große Grub2-Anleitungen auf UbuntuForums, die ich kennen und lieben gelernt habe:
GNU Grub 2 ist eine weitere großartige Ressource. Er hat eine Reihe von Skripten, mit denen er Karmics Grub2 optimieren kann ( vollständige Offenlegung: Ich habe sie nicht ausprobiert ).
Die Theme Format- Seite von Grub Wiki ist ein Muss für das Hacken von Grub2-Themes.