GRUB v2: Forma prática de gerenciar entradas numéricas para usar com o grub-reboot

1

Eu uso o GRUB v2 como meu gerenciador de inicialização.
Sempre que eu quero reiniciar para outro sistema operacional (ou entrada de menu, como MemTest ), eu uso o comando:

# grub-reboot n

em que n é o número (iniciando em 0) da entrada de menu desejada .
Por exemplo:

então,se,noexemploacima,euquiserreinicializarparaSqueezeLinux,euentrarei:

#grub-reboot4

Mas,aotervárioscomputadorese/ousistemasoperacionais,édifícillembraronúmerodessaentrada,eeufinalmenteprecisoreinicializaromenuparaverificaronúmero.

Euseiqueasentradassãoarmazenadasem/boot/grub/grub.cfgnaslinhaschamadasmenuentryou"submenu" mas, desde que o GRUB se torne mais complexo (e avançado, é claro), este arquivo é um pouco complicado de ler para contar o número de entradas.

Existe uma maneira prática de saber o número de todas as entradas do menu de inicialização do GRUB v2?

    
por Sopalajo de Arrierez 09.11.2014 / 21:55

1 resposta

1

Eu uso essa linha de comando , que é apenas uma análise de /boot/grub/grub.cfg , para mostrar entradas numeradas , uma por linha:

sed ':again;$!N;$!b again; :b; s/{[^{}]*}//g; t b' /boot/grub/grub.cfg | cut -c -60 | grep -e "^menuentry" -e "submenu" | nl -v 0 | grep -e "menuentry" -e "submenu" --color

que resulta (não é o mesmo exemplo do gráfico anterior, desculpe):

Meumétodopreferidoéadicioná-locomoumaliasoufunção.Porexemplo,comoumafunçãoem~/bashrc:

#Listentriesnumbersforgrub-reboot:functionGRUB-ListMenu(){sed':again;$!N;$!bagain;:b;s/{[^{}]*}//g;tb'/boot/grub/grub.cfg|cut-c-60|grep-e"^menuentry" -e "submenu" | nl -v 0 | grep -e "menuentry" -e "submenu" --color
}

Explicação :

  • O comando sed remove todas as linhas entre chaves ( { e } ), pois elas correspondem aos submenus suspensos .
  • O comando cut deixa apenas os primeiros 60 caracteres, para tornar os resultados mais legíveis para o usuário.
  • O comando grep deixa apenas as linhas correspondentes a entradas do menu real : menuentry e submenu .
  • O comando nl numera cada linha (a partir de 0, é claro).
  • Existe um comando adicional grep , não estritamente necessário, que simplesmente adiciona cores aos resultados ;-).

Conselhos sobre otimizações são bem-vindos.
Testado trabalhando no GRUB v2.02 ~ beta2-9ubuntu1 rodando em Ubuntu Desktop, Servidor, v12, v14, Kali e BackTrack. Feedbacks sobre o comportamento em outro Linux são encorajados (vou adicioná-los a este post).

    
por 09.11.2014 / 21:55

Tags