Grub può essere configurato per ricordare l'ultimo sistema operativo in cui hai avviato?


17

In genere ho 2-3 SO nel mio menu di avvio:

  • Ubuntu 10.04
  • Windows 7
  • [A volte, una terza opzione, come Ubuntu 10.04 Netbook]

Se mi trovo in un sistema operativo diverso dalla scelta predefinita (in questo caso Windows 7) e riavvio, Grub si avvia in Ubuntu 10.04. Questo non dovrebbe accadere: quando riavvio in Windows 7, voglio rimanere in Windows 7. Esiste un modo per configurare Grub in modo da ricordare la mia ultima scelta e avviarlo?

In alternativa, sarebbe ancora meglio se Grub lo facesse solo al riavvio (non al primo avvio del computer). Mi rendo conto che potrebbe non essere possibile, quindi sarei felice con il semplice ricordo dell'ultima scelta.

Risposte:


20

Nel Grub originale lo faresti impostando, in /boot/grub/menu.lst , la parola chiave predefinita su "salvata" e quindi usando la parola chiave savedefault in ogni voce del menu di avvio.


Aggiornato :
Grub2 è un po 'più complicato. Inoltre è ancora in evoluzione, quindi anche se Ubuntu 9.10 e 10.04 usano entrambi Grub2, ci sono abbastanza differenze nel modo in cui le cose vengono impacchettate e configurate per renderle interessanti.

Ecco come fare il trucco del savedefault in entrambi:

  • Ubuntu 10.04:
    le direzioni 9.10 sono un trucco; Lucido è molto più semplice. Vedi l'aiuto di Ubuntu per maggiori dettagli cruenti. È necessario apportare due modifiche in / etc / default / grub :

    1. Modificare la riga che legge GRUB_DEFAULT=0aGRUB_DEFAULT=saved

    2. Aggiungi una linea con GRUB_SAVEDEFAULT=true

    Questo è tutto. In realtà non è poi così male, vero? Non dimenticare di correre sudo update-grub.

  • Ubuntu 9.10:
    Ci sono diversi hack nei forum di Ubuntu per far funzionare tutto ciò; apparentemente la parola chiave savedefault era errata in Grub v1.97. Questo post sui forum di Ubuntu fornisce un metodo. Un altro post suggerisce un metodo leggermente più semplice:

    1. Imposta GRUB_DEFAULT = salvato in / etc / default / grub .

    2. Inserisci queste due righe in /etc/grub.d/40_custom (vicino al fondo, dopo la riga "exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    Ho testato questo metodo in Ubuntu 9.10 e funziona; il prossimo avvio evidenzierà automaticamente l'ultima voce scelta. Combinato con un timeout, questo si avvierà automaticamente nell'ultimo SO che hai avviato.

E non dimenticare di correre sudo update-grub. Dopo aver finito con le modifiche. È importante e imbarazzantemente facile da dimenticare ....


Grub non ha modo di differenziare un riavvio da un avvio a freddo , quindi Grub non può farlo da solo al riavvio. Tuttavia, se si esegue l'avvio in Linux, è possibile utilizzare sudo grub-set-default N(dove N è il numero di una voce del menu di avvio, a partire da 0) per impostare la voce N da scegliere all'avvio successivo (anziché qualsiasi voce salvata).

In teoria, potresti hackerare insieme qualcosa collegato alle routine di spegnimento (uno script Upstart , forse) che ha eseguito grub-set-default per te quando hai detto a Linux di chiudere (ma non quando gli hai detto di riavviare). Tuttavia, non si ottiene la stessa funzionalità quando si arresta Windows.

Ho sentito parlare di una tecnica Grub4DOS o Grub1 che prevedeva l'installazione di Grub su una partizione FAT32 o NTFS / boot - che ti avrebbe permesso di eseguire anche grub-set-default da Windows, in modo da poterlo chiamare da uno script di disconnessione di Windows. L'ultima volta che ho visto qualcosa al riguardo, questo non era possibile su Grub2. Ormai potrebbe essere cambiato.


La soluzione n. 2 non sembra funzionare per me. Ho modificato / etc / default / grub, modificato /etc/grub.d/40_custom ed eseguito sudo update-grub. Ho provato avviando Windows 7, spegnendo e riaccendendo il computer. Ubuntu 10.04 (impostazione predefinita) era ancora selezionato. Ho anche provato a mettere "save_entry" in / etc / default / grub, invece di "save" (non sono sicuro di come funzionano gli script di configurazione di grub), ma non è stato d'aiuto. Non ho ancora provato la soluzione n. 1.
Matteo,

@Matthew: ricontrolla che /etc/grub.d/40_custom sia eseguibile (sudo chmod + x se non lo è). ma sì, ho appena provato sulla mia macchina Ubuntu 10.04 e non funziona neanche lì. controllando perché ...
Quack Quixote

@Matthew: OK, capito. mi dispiace, avrei dovuto sapere che Lucid e Karmic sarebbero stati così diversi. (oh. e assicurati di correre sudo update-grub.)
Quack Quixote

3

Questo post ti sarà probabilmente utile, è abbastanza autoesplicativo. Nota che 10.04 e 9.10 usano la stessa versione di GRUB, quindi le cose dovrebbero essere esattamente le stesse per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.