O Grub pode ser configurado para lembrar o último sistema operacional em que você inicializou?

17

Normalmente, tenho 2-3 sistemas operacionais no meu menu de inicialização:

  • Ubuntu 10.04
  • Windows 7
  • [Às vezes, uma terceira opção, como o Ubuntu 10.04 Netbook]

Se eu estiver em um sistema operacional que não seja a opção padrão (neste caso, o Windows 7) e reiniciar, o Grub será inicializado no Ubuntu 10.04. Isso não deveria acontecer - quando eu reiniciar no Windows 7, quero permanecer no Windows 7. Existe alguma maneira de configurar o Grub para lembrar minha última opção e inicializá-la?

Como alternativa, seria ainda melhor se o Grub fizesse isso apenas quando reiniciei (não quando ligo o computador pela primeira vez). Sei que isso pode não ser possível, então ficaria feliz com a simples lembrança da última escolha.

Mateus
fonte

Respostas:

20

No Grub original, você faria isso configurando, em /boot/grub/menu.lst , a palavra-chave padrão como "salva" e, em seguida, usando a palavra-chave savedefault em cada entrada do menu de inicialização.


Atualizado :
Grub2 é um pouco mais complicado. Também está evoluindo, portanto, embora o Ubuntu 9.10 e 10.04 usem o Grub2, existem diferenças suficientes em como as coisas são empacotadas e configuradas para tornar as coisas interessantes.

Veja como executar o truque salvo padrão em ambos:

  • Ubuntu 10.04:
    As direções 9.10 são um truque; Lucid é muito mais simples. Veja a ajuda do Ubuntu para mais detalhes sangrentos. Você precisa fazer duas alterações no / etc / default / grub :

    1. Mude a linha que lê GRUB_DEFAULT=0paraGRUB_DEFAULT=saved

    2. Adicione uma linha com GRUB_SAVEDEFAULT=true

    É isso aí. Na verdade não é tão ruim, é? Não se esqueça de correr sudo update-grub.

  • Ubuntu 9.10:
    Existem vários hacks nos fóruns do Ubuntu para fazer isso funcionar; aparentemente a palavra-chave savedefault estava com defeito no Grub v1.97. Esta postagem nos fóruns do Ubuntu fornece um método. Outro post sugere um método um pouco mais simples:

    1. Defina GRUB_DEFAULT = salvo em / etc / default / grub .

    2. Coloque estas duas linhas em /etc/grub.d/40_custom (próximo à parte inferior, após a linha "exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    Eu testei esse método no Ubuntu 9.10 e funciona; a próxima inicialização destacará automaticamente a última entrada escolhida. Combinado com um tempo limite, ele será inicializado automaticamente no último sistema operacional inicializado.

E não se esqueça de correr sudo update-grub. Depois de concluir as alterações. É importante e embaraçosamente fácil de esquecer ....


O Grub não tem como diferenciar uma reinicialização de uma inicialização a frio , portanto, o Grub não pode fazer isso sozinho. No entanto, se você for inicializado no Linux, poderá usar sudo grub-set-default N(onde N é o número de uma entrada do menu de inicialização, começando em 0) para definir a entrada N a ser escolhida na próxima inicialização (em vez de qualquer entrada que foi salva).

Em teoria, você poderia hackear algo que se encaixasse nas rotinas de desligamento (um script Upstart , talvez) que executasse o grub-set-default para você quando você dissesse que o Linux deveria desligar (mas não quando você disse para reiniciar). Você não teria a mesma funcionalidade ao desligar o Windows.

Eu ouvi sobre uma técnica do Grub4DOS ou Grub1 que envolvia a instalação do Grub em uma partição FAT32 ou NTFS / boot - que permitiria que você também executasse o grub-set-default no Windows, para que você pudesse chamá-lo a partir de um script de logoff do Windows. A última vez que vi algo sobre isso, isso não foi possível no Grub2. Isso pode ter mudado até agora.

charlatão quixote
fonte
A solução 2 não parece funcionar para mim. Eu editei / etc / default / grub, editei /etc/grub.d/40_custom e executei sudo update-grub. Testei inicializando no Windows 7, desligando e ligando o computador. O Ubuntu 10.04 (o padrão) ainda estava selecionado. Eu também tentei colocar "saved_entry" em / etc / default / grub, em vez de "saved" (não sei como os scripts de configuração do grub funcionam), mas não ajudou. Ainda não tentei a solução 1.
Matthew
@ Matthew: verifique novamente se o /etc/grub.d/40_custom é executável (sudo chmod + x, se não for). mas sim, eu apenas tentei na minha máquina Ubuntu 10.04 e não funciona lá também. checando o porquê ...
quack quixote 5/05
@ Matthew: OK, entendi. me desculpe, eu deveria saber que Lucid e Karmic seriam tão diferentes. (oh. e certifique-se de que você corre sudo update-grub.) #
4400
3

Este post provavelmente será útil para você, é bastante auto-explicativo. Observe que 10.04 e 9.10 usam a mesma versão do GRUB, portanto, as coisas devem ser exatamente iguais para você.

marcusw
fonte