Fare grub mantenere il boot predefinito sotto gli aggiornamenti del kernel

Ho doppio avvio la mia macchina e voglio che sia predefinito per l'avvio in windows in modo che each volta che riavvii la macchina da remoto dalla mia casa sarà in grado di tornare in Windows (invece di Ubuntu).

Il problema è che each volta che Ubuntu aggiorna il kernel, devo reimpostare l'elemento di avvio predefinito di grub torna alle windows. Ciò è dovuto al fatto che il loader del menu grub usa posizioni cioè 6 per il sistema predefinito per l'avvio. E quando Ubuntu installa un nuovo kernel, modifica tale ordine.

Sto cercando un modo per configurare grub per ricordare l'elemento di avvio predefinito sotto gli aggiornamenti del kernel.

Grub 1 (Ubuntu 9.04 e versioni precedenti)

Trovo il modo più semplice per farlo è quello di spostare la voce di avvio di Windows sopra le voci di Ubuntu in /boot/grub/menu.lst . Per impostazione predefinita, il file di configuration di Grub è strutturato in questo modo:

  1. opzioni di base
  2. debian auto-magia kernel config (incluse utility come memtest86 + per impostazione predefinita)
  3. altri OS rilevati

La sezione 2 è delimitata da queste righe nel file di configuration:

 ### BEGIN AUTOMAGIC KERNELS LIST (lots of stuff here) ### END DEBIAN AUTOMAGIC KERNELS LIST 

Le voci relative a sisthemes operativi individuati (ad esempio, Windows) vengono posizionati dopo questa sezione. Quando si installa un nuovo kernel, la sezione 2 è l'unica sezione che viene modificata. Così spostare il sistema di rilevamento automatico in un posto prima che la linea BEGIN lo colloca where il numero di voce non cambia quando viene installato un nuovo kernel.


Grub 2 (Ubuntu 9.10 e versioni successive)

Con Grub2, l'integer file di configuration viene creato nuovamente in qualsiasi momento in cui l' update-grub viene eseguito, quindi la modifica di /boot/grub/grub.cfg non sarà una correzione di permament. Come viene generato il file viene gestito dai file /etc/default/grub e dagli script in /etc/grub.d/* . Così modifichiamo la configuration modificando i file che controllano le singole sezioni del configfile, quindi eseguendo nuovamente il update-grub .

Il mio /etc/grub.d include questi file:

  • 00_header
  • 05_debian_theme
  • 10_hurd
  • 10_linux
  • 20_memtest86 +
  • 21_memtest86
  • 30_os-prober
  • 40_custom

Questi sono script di shell che vengono eseguiti per generare il file di configuration. La voce di avvio di Windows viene generata da 30_os-prober , che viene eseguito dopo che le voci di avvio di linux vengono generate in 10_linux . Così, basta rinominare 30_os-prober a qualcosa di less di 10, e rieseguire l' update-grub

 mv /etc/grub.d/30_os-prober /etc/grub.d/09_os-prober update-grub 

Ora la voce di Windows dovrebbe essere la prima voce e puoi impostarla come la voce di avvio predefinita ( GRUB_DEFAULT= ) in /etc/default/grub .

Seguire le istruzioni sul mio blog qui per utilizzare il bootloader pulito di Windows per il tuo lavoro. Lo uso ora, e quando inizio il PC, ho due opzioni:

Windows Vista Ubuntu 10.04

Non c'è nessun altro disordine. È anche ansible impostare diverse opzioni. Se non premere niente per 5 secondi, Windows si avvia.

In bocca al lupo.