Po pierwsze, dowiedz się, jak Ubuntu konfiguruje Grub2.
- /boot/grub/grub.cfg to menu Grub2
- polecenie update-grub automatycznie generuje ten plik
- ... czytając domyślne ustawienia z / etc / defaults / grub
- ... i uruchamianie skryptów powłoki w /etc/grub.d
Tak więc, jeśli nie chcesz edytować grub.cfg po każdej aktualizacji jądra, chcesz dostosować skrypty w /etc/grub.d, aby zmiany były stosowane przy każdym uruchomieniu aktualizacji-grub .
Po drugie, aby odpowiedzieć bezpośrednio na twoje pierwsze pytanie, nie znam żadnego sposobu na uczynienie określonych opcji rozruchu niewidocznymi, ale nadal dostępnymi poprzez menu Grub. W Grub1 jest wiele drobiazgów, które nie zostały ponownie zaimplementowane w Grub2 i nie zdziwiłoby mnie, gdyby to była jedna z nich.
Zamiast tego możesz sprawić, że wszystkie pozycje menu będą niewidoczne (dopóki nie zostaną podświetlone), ustawiając kolor czcionki menu na taki sam jak kolor tła. W /etc/grub.d/05_debian_theme zmień menu_color_normal, aby pierwszy kolor (czcionka) pasował do drugiego koloru (tło). Pozostaw menu_kolor_wyróżnienie inne, aby pojawił się wpis pod kursorem.
# 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
Przeniesienie separatora do menu Grub.
W Grub1 wstawiłbyś nowy wpis w ten sposób. O ile pamiętam, potrzebujesz deklaracji roota, aby uczynić ją prawidłową pozycją menu, w przeciwnym razie Grub1 zignoruje ją.
# separator
title --------------------
root
Podejrzewam, że Grub2 może być podobny. Bardzo prosta pozycja menu wygląda tak w grub.cfg :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Ponieważ „cokolwiek” w podwójnych cudzysłowach jest wyświetlane jako tytuł, można o tym podrobić separator. Podobnie jak Grub1, Grub2 chce, aby słowo kluczowe linux traktowało je jako prawdziwą pozycję menu, więc uważaj, aby przypadkowo go nie wybrać.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
Niestety, „coś” nie oznacza nic ; podczas testowania tego wypróbowałem długi ciąg myślników („----------------”) i to nigdy nie zadziałało. Ale lubi krótki ciąg kropek pokazany powyżej, więc możesz go użyć.
.....
Oto jak zrobić jeden separator. Aby utworzyć wiązkę i automatycznie umieścić je tam, gdzie chcesz, musisz dodać je do skryptów w /etc/grub.d .
W tym przykładzie umieśćmy prosty separator między różnymi sekcjami grub.cfg . Jeśli spojrzysz na /etc/grub.d , zobaczysz następujące skrypty:
- 00_header
- 05_debian_theme
- 10_linux - wpisy dotyczące jądra i odzyskiwania Ubuntu
- 20_memtest86 + - pozycja dla Memtest86 +
- 30_os-prober - wpisy dla systemu Windows i innych dystrybucji Linuksa
- 40_custom - domyślnie nic; specjalne wpisy użytkowników mogą przejść tutaj
Utworzymy nowy skrypt, separator i umieścimy w nim następujące elementy:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Teraz przenieś ten skrypt na miejsce pierwszego separatora i połącz go na miejscu z innymi. Skrypty są wykonywane w kolejności, więc jeśli chcesz, aby pierwszy pojawił się przed 10_linux , nazwij go 09_separator lub coś takiego.
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
Jeśli masz określony wpis ustawiony jako domyślny w / etc / default / grub , może być konieczna jego aktualizacja - Grub2 zaczyna zliczać wpisy menu od 0, a każdy z tych „separatorów” jest prawidłowym wpisem, więc i one się liczą. Jeśli twój poprzedni domyślny wpis wynosił 0 i dodałeś przed nim jeden separator, pamiętaj, aby zmienić GRUB_DEFAULT na 1
Teraz uruchom update-grub i sprawdź /boot/grub/grub.cfg - powinieneś zobaczyć tam separatory. Jeśli to zrobisz, uruchom ponownie i sprawdź je.
…
Jeśli chcesz umieścić separatory w innym miejscu, powiedzmy, między różnymi wersjami jądra, musisz bezpośrednio edytować 10_linux (lub inny skrypt) i znaleźć odpowiednie miejsce do dodania separatora. Możesz użyć wierszy ze skryptu powyżej; obejmują wszystko oprócz pierwszej linii #! / bin / sh .
Jeśli chcesz czegoś ładniejszego, użyj grubych obrazów lub motywów powitalnych. Muszę dać ci kontrolę nad tymi tematami, ale sprawdź poniższe zasoby.
Zasoby:
Istnieją dwa duże przewodniki Grub2 na UbuntuForums, które poznałem i uwielbiam:
GNU Grub 2 to kolejny świetny zasób. Ma zestaw skryptów do poprawiania Grub2 Karmica ( pełne ujawnienie: nie próbowałem ich ).
Format strony Grub Wiki jest niezbędny do zhakowania tematów Grub2.