Grub 1 (Ubuntu 9.04 i wcześniejsze)
Uważam, że najprostszym sposobem na to jest przeniesienie wpisu rozruchu systemu Windows ponad wpisy Ubuntu w /boot/grub/menu.lst
. Domyślnie plik konfiguracyjny Grub jest ułożony w następujący sposób:
- podstawowe opcje
- automatyczna konfiguracja jądra debiana (w tym narzędzia takie jak memtest86 + domyślnie)
- inne wykryte systemy operacyjne
Sekcja 2 jest wyznaczona przez następujące wiersze w pliku konfiguracyjnym:
### BEGIN AUTOMAGIC KERNELS LIST
(lots of stuff here)
### END DEBIAN AUTOMAGIC KERNELS LIST
Wpisy dla automatycznie wykrywanych systemów operacyjnych (np. Windows) są umieszczane po tej sekcji. Kiedy instalujesz nowe jądro, sekcja 2 jest jedyną sekcją, która ulega zmianie. Więc przesuwając wykrywana OS do gdzieś wcześniej na BEGIN
linii będzie umieścić go gdzie liczba pozycja nie ulegnie zmianie, gdy zostanie zainstalowany nowy kernel.
Grub 2 (Ubuntu 9.10 i nowsze)
W Grub2 cały plik konfiguracyjny jest tworzony od nowa za każdym razem, gdy update-grub
jest uruchamiany, więc edycja /boot/grub/grub.cfg
nie będzie stałą poprawką. Sposób generowania tego pliku jest obsługiwany przez pliki /etc/default/grub
i skrypty w /etc/grub.d/*
. Dlatego modyfikujemy konfigurację, modyfikując pliki kontrolujące poszczególne sekcje pliku konfiguracyjnego, a następnie uruchamiając update-grub
ponownie.
My /etc/grub.d
obejmuje te pliki:
- 00_header
- 05_debian_theme
- 10_hurd
- 10_linux
- 20_memtest86 +
- 21_memtest86
- 30_os-prober
- 40_custom
Są to skrypty powłoki uruchamiane w celu wygenerowania pliku konfiguracyjnego. Wpis rozruchowy systemu Windows jest generowany przez 30_os-prober
, który jest uruchamiany po wygenerowaniu wpisów rozruchowych systemu Linux 10_linux
. Więc po prostu zmień nazwę 30_os-prober
na mniejszą niż 10 i uruchom ponownieupdate-grub
mv /etc/grub.d/30_os-prober /etc/grub.d/09_os-prober
update-grub
Teraz wpis Windows powinien być pierwszym wpisem i możesz ustawić go jako domyślny wpis rozruchu ( GRUB_DEFAULT=
) w /etc/default/grub
.