O Grub pode ser configurado para lembrar o último SO em que você iniciou?

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 SO diferente da opção padrão (Windows 7 neste caso), e eu reiniciar, o Grub inicializa no Ubuntu 10.04. Isso não deve acontecer - quando eu reiniciar no Windows 7, eu quero ficar no Windows 7. Existe alguma maneira de configurar o Grub para lembrar da minha última escolha, e iniciar isso?

Alternativamente, seria ainda melhor se o Grub somente fizesse isso quando eu reiniciei (não quando eu ligo o computador pela primeira vez). Eu percebo que isso pode não ser possível, então eu ficaria feliz com a última lembrança de última escolha.

    
por Matthew 05.05.2010 / 17:51

2 respostas

20

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

Atualizado :
O Grub2 é um pouco mais complicado. Ele também ainda está evoluindo, então mesmo que o Ubuntu 9.10 e o 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 fazer o truque savedefault 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. Você precisa fazer duas alterações em / etc / default / grub :

    1. Altere a linha que lê GRUB_DEFAULT=0 para GRUB_DEFAULT=saved

    2. Adicione uma linha com GRUB_SAVEDEFAULT=true

    É isso. Na verdade não é tão ruim assim, é? Não esqueça de executar 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 bugs no Grub v1.97. Esta publicação 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 (perto da parte inferior, depois da linha "exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    Eu testei esse método no Ubuntu 9.10 e ele funciona; a próxima inicialização realçará automaticamente a última entrada escolhida. Combinado com um tempo limite, ele inicializará automaticamente no último SO que você inicializou.

E não se esqueça de executar sudo update-grub . Depois que você terminar suas alterações. É importante e embaraçosamente fácil esquecer ...

O Grub não tem como diferenciar um reboot de um cold boot , então o Grub não pode fazer isto sozinho na reinicialização. No entanto, se você for inicializado no Linux, você pode usar sudo grub-set-default N (onde N é o número de uma entrada no menu de inicialização, iniciando em 0) para definir a entrada N a ser escolhida na próxima inicialização (em vez de salvar qualquer entrada) .

Em teoria, você poderia hackear algo que estivesse ligado às rotinas de desligamento (um script Upstart , talvez) que executou grub-set-default para você quando você disse ao Linux para desligar (mas não quando você disse para reiniciar). Você não obteria a mesma funcionalidade ao desligar o Windows, no entanto.

Eu ouvi sobre uma técnica Grub4DOS ou Grub1 que envolvia a instalação do Grub em uma partição FAT32 ou NTFS / boot - que também permitiria executar grub-set-default do Windows, para que você possa chamá-lo 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.

    
por 05.05.2010 / 18:10
3

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

    
por 05.05.2010 / 18:01