В исходном Grub вы могли бы сделать это, установив в /boot/grub/menu.lst ключевое слово по умолчанию "сохранено", а затем используя ключевое слово savedefault в каждой записи загрузочного меню.
Обновлено:
Grub2 немного сложнее.  Он также все еще развивается, поэтому, несмотря на то, что Ubuntu 9.10 и 10.04 используют Grub2, существует достаточно различий в том, как все упаковано и настроено, чтобы сделать вещи интересными.
Вот как сделать трюк с сохранением по умолчанию в обоих случаях:
- Ubuntu 10.04:
 9.10 направления являются хитростью; Lucid намного проще.  См. Справку Ubuntu для более подробной информации.  Вам нужно внести два изменения в /etc/default/grub:
 - 
- Измените строку с - GRUB_DEFAULT=0на- GRUB_DEFAULT=saved
 
- Добавьте строку с - GRUB_SAVEDEFAULT=true
 
 - Вот и все.  На самом деле не так ли плохо, не так ли?  Не забудьте запустить - sudo update-grub.
 
 
 
- Ubuntu 9.10:
 На форумах Ubuntu есть несколько хаков, чтобы заставить это работать; очевидно, ключевое слово savedefault было ошибочным в Grub v1.97.  Этот пост на форумах Ubuntu предоставляет один метод.  Другой пост предлагает немного более простой метод:
 - 
- Установите GRUB_DEFAULT = сохранено в /etc/default/grub . 
- Поместите эти две строки в /etc/grub.d/40_custom (рядом с нижней частью , после строки "exec tail" ): - saved_entry=${chosen}
save_env saved_entry
 
 - Я протестировал этот метод в Ubuntu 9.10, и он работает; следующая загрузка автоматически выделит последнюю выбранную запись.  В сочетании с таймаутом это автоматически загрузится в последнюю ОС, которую вы загрузили.
 
 
 
И не забудьте запустить sudo update-grub .  После того, как вы закончите со своими изменениями.  Это важно и смущающе легко забыть ....
Grub не может отличить перезагрузку от холодной загрузки, поэтому Grub не может сделать это при перезагрузке самостоятельно.  Однако, если вы загрузились в Linux, вы можете использовать sudo grub-set-default N (где N - номер пункта меню загрузки, начиная с 0), чтобы установить запись N, которая будет выбрана при следующей загрузке (вместо любых запись была сохранена).  
Теоретически, вы могли бы собрать воедино что-то, что подключалось к процедурам завершения работы (возможно, сценарий Upstart ), которые запускали grub-set-default для вас, когда вы указывали Linux завершать работу (но не когда вы указывали перезагрузить).  Однако при закрытии Windows вы не получите такую же функциональность.
Я слышал о методике Grub4DOS или Grub1, которая включала установку Grub в раздел FAT32 или NTFS /boot , который позволял бы вам также запускать grub-set-default из Windows, чтобы вы могли вызывать его из сценария выхода из Windows.  В прошлый раз я видел что-то об этом, это было невозможно на Grub2.  Это, возможно, изменилось к настоящему времени.