Primeiro, entenda como o Ubuntu configura o Grub2.
- /boot/grub/grub.cfg é o menu do Grub2
- o comando update-grub gera automaticamente esse arquivo
- ... lendo as configurações padrão em / etc / defaults / grub
- ... e executando shellscripts em /etc/grub.d
Portanto, se você não deseja editar o grub.cfg após cada atualização do kernel, você deve ajustar os scripts em /etc/grub.d para que suas alterações sejam aplicadas sempre que o update-grub for executado.
Segundo, para responder sua primeira pergunta diretamente, não conheço nenhum meio de tornar invisíveis as opções específicas de inicialização, mas ainda acessíveis através do menu Grub. Existem muitas pequenas coisas sobre o Grub1 que não foram reimplementadas no Grub2 e não me surpreenderia se esse fosse um deles.
Em vez disso, você pode tornar todas as entradas do menu invisíveis (até destacadas) configurando a cor da fonte do menu para a mesma cor de fundo. Em /etc/grub.d/05_debian_theme , altere menu_color_normal para que a primeira cor (fonte) corresponda à segunda cor (plano de fundo). Deixe menu_color_highlight diferente, para que a entrada abaixo do cursor seja exibida.
# 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
Colocando um separador no menu Grub.
No Grub1, você inseria uma nova entrada como esta. Pelo que me lembro, você precisava da declaração raiz para torná-la uma entrada de menu válida, caso contrário, o Grub1 a ignorou.
# separator
title --------------------
root
Eu suspeito que o Grub2 possa ser semelhante. Uma entrada de menu muito básica se parece com isso no grub.cfg :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Como "qualquer coisa" entre aspas duplas é exibida como título, você pode falsificar um separador com isso. Como o Grub1, o Grub2 deseja que a palavra-chave linux a trate como uma entrada de menu real, portanto, tenha cuidado para não selecioná-la acidentalmente.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
Infelizmente, "qualquer coisa" não significa nada ; enquanto testava isso, tentei uma longa sequência de traços ("----------------") e nunca funcionou. Mas ele gosta da pequena sequência de pontos mostrada acima, para que você possa usá-lo.
.....
Agora, é assim que se faz um separador. Para criar um monte e colocá-lo onde você deseja automaticamente, você precisa adicioná-lo aos scripts em /etc/grub.d .
Neste exemplo, vamos colocar um separador simples entre as várias seções do grub.cfg . Se você olhar para /etc/grub.d , verá os seguintes scripts:
- 00_header
- 05_debian_theme
- 10_linux - entradas para kernels e recuperação do Ubuntu
- 20_memtest86 + - entrada para Memtest86 +
- 30_os-prober - entradas para Windows e outras distribuições de Linux
- 40_custom - nada por padrão; entradas especiais de usuário podem ir aqui
Criaremos um novo script, separador e colocaremos o seguinte nele:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Agora, mova esse script para o primeiro separador e vincule-o para os outros. Os scripts são executados em ordem; portanto, se você quiser que o primeiro venha antes do 10_linux , nomeie-o 09_separator ou algo assim.
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
Se você tem uma entrada específica definida como padrão em / etc / default / grub , pode ser necessário atualizá-la - o Grub2 começa a contar as entradas do menu em 0 e cada um desses "separadores" é uma entrada válida, portanto eles também contam. Se sua entrada padrão anterior foi 0 e você adicionou um separador antes, lembre-se de alterar GRUB_DEFAULT para 1
Agora execute update-grub e examine /boot/grub/grub.cfg - você deve ver os separadores lá. Se o fizer, reinicie e verifique-os.
....
Se você deseja colocar separadores em outro lugar, digamos, entre diferentes versões do kernel, precisará editar 10_linux (ou outro script) diretamente e encontrar o local apropriado para adicionar o separador. Você pode usar as linhas do script acima; inclua tudo, exceto a primeira linha #! / bin / sh .
Se você quiser algo mais bonito, use imagens ou temas especiais do Grub. Preciso fazer uma verificação geral sobre esses tópicos, mas verifique os recursos abaixo.
Recursos:
Existem dois grandes guias do Grub2 no UbuntuForums que eu conheci e adoro:
O GNU Grub 2 é outro ótimo recurso. Ele tem um conjunto de scripts para ajustar o Grub2 do Karmic ( divulgação completa: eu não os experimentei ).
A página de formato de tema do Grub Wiki é uma obrigação para hackers em temas do Grub2.