Existe uma maneira de recuperar a lista de títulos "menuentries" do GRUB?
Preciso de resultados em um formato que grub-set-default
aceite. por exemplo.
"Ubuntu"
"Memory test (memtest86+)"
etc.
command-line
grub2
madneon
fonte
fonte
Respostas:
Usando
awk
fornece uma lista completa de todas as entradas de menu no
grub.cfg
.fonte
awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
awk
. : \awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg
para usar emgrub-set-default
Captura de tela colorida (versão curta)
Roda de uso de rolagem do mouse, Home, End, PgUp, PgDn, ↑e ↓teclas para navegar no menu.
Texto Captura de tela (versão longa)
O script bash usa em
whiptail
vez dedialog
para exibir o menu. Uma vantagem é que você pode copiar a imagem do terminal para a área de transferência como texto e colá-la neste site como texto. Outras vantagens incluem:dialog
não está instalado por padrão no Ubuntu Server ou no Lubuntu.whiptail
está incluído por padrão.Aqui está uma captura de tela de texto:
Destaque entrada e pressione Enter
Use as teclas de navegação para destacar uma opção e pressione Enterpara ver os drivers pré-kernel carregados
grub
e os parâmetros de inicialização passadosgrub
para o kernel ao inicializá-lo:grub-menu.sh
script bashgrub-menu.sh
só tem uma opção para ajustar:Defina o valor para
true
(ocultar as entradas extras) oufalse
(listar todas as entradas).O formato padrão pode ser substituído ao chamar o script usando:
ou:
O código:
fonte
Exatamente isso me incomoda há mais de um ano - então eu fiz um script rápido e sujo para fazer isso. Espero que isso ajude os outros?
Isso empilha os nomes em uma fila push / pop, mas não na indexação de menus, para que pudesse ser melhor, mas eu fui o mais longe possível.
Aqui você pode ver uma captura de tela da minha caixa mostrando-a em execução
Como foi solicitado em um comentário de 2019/8, mencionei acima fazendo uma "inicialização temporária". Essa ideia foi o que começou originalmente no meu script, e o método de inicialização temporária veio de outro post e é algo como isto
# vi /etc/default/grub
# sudo update-grub
# sudo grub-set-default 0
# sudo grub-reboot 4
Ref: https://ubuntuforums.org/showthread.php?t=1310463
fonte
push
epop
na sua resposta. Gostaria de tê-los conhecido antes de escrever minha resposta.test
1. Defina GRUB_DEFAULT como GRUB_DEFAULT = salvo (/ etc / default / grub) 2. Atualize a configuração do grub em / boot #sudo update-grub 3. Configure o sistema operacional padrão para carregar (isso será carregado toda vez que você reiniciar a máquina) # sudo grub -set-default 0 4. Quando for necessário carregar outro SO (number é um número de menu do SO, como em /boot/grub/grub.cfg, isso carregará outro SO apenas uma vez durante a próxima reinicialização - a reinicialização deve ser iniciada manualmente): sudo grub-reboot 4Essa deve ser a "string" correta ...
O último canal exclui o espaço em branco no início de cada linha e corrige a sequência numérica de acordo com a entrada do número do grub. Saída de amostra:
Se você quiser ver todas as entradas, também as avançadas, poderá usar
mas a sequência numérica não é adequada para uso com o grub-set-default.
fonte
Acabei de descobrir que você pode usar o preenchimento automático (pressionando
tab
duas vezes) em comandos comogrub-reboot
ougrub-set-default
e ele fornecerá uma lista das entradas disponíveis no menu de inicialização. Você pode simplesmente copiar o título que deseja literalmente, não precisa usar um número.Infelizmente, por algum motivo, minha instalação do Windows 7 não aparece dessa maneira.
fonte
Um outro one-liner do awk que lida com submenus:
Isso pode ser um pensamento falível, porque \ t é usado para identificar entradas do submenu.
fonte
No OpenSuSE, o grub2-once fornece o ID do menu que você pode usar em outros comandos. Porém, não há muita ajuda para os usuários do Ubuntu.
fonte