Очевидно, несколько пунктов, которые я буду описывать у тебя уже сделаны. Но опишу всё полностью, как готовую инструкцию.
1. Скачиваем последний релиз Grub4DOS
http://download.gna.org/grub4dos/grub4dos-0.4.4.zip.
2. Распаковываем файлы grldr и grldr.mbr в корень диска где установлена Windows xp (вижу у тебя это dev/sda1).
3. Создаем в корне диска файл boot.ini со следующим содержанием:
;
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect
C:\grldr.mbr="Ubuntu"
4. Создаём в корне диска файл menu.lst со следующим содрежанием:
default 0
timeout 0
title Chainload into GRUB 2
root (hd1,0)
kernel /boot/grub/core.img
Если при установке Ubuntu grub установлен в /dev/sdb, то всё будет хорошо. Теперь виндовый загрузчик без труда сможет загрузить grub2 через grub4dos. А grub2 загрузит Ubuntu. При обновлении ядер, загрузчик grub2 сам обновляет информацию о ядрах. А раз мы загружаем grub2 через grub4dos, то делать руками ничего не нужно.
P.S. У тебя наверное в boot.ini прописано d:\grldr.mbr="Ubuntu", да?
Ещё под вопросом, в какую директорию установлена Windows, так что вместо multi(0)disk(0)rdisk(0)partition(1)\WINDOWS напиши своё (то, что было в оригинальном boot.ini).
Пользователь решил продолжить мысль [time]Thu Jun 2 22:33:51 2011[/time]:
Кстати, как узнать версию GRUB в составе линукс?
По-моему, начиная с Ubuntu 9.10, поумолчанию используется grub2.
Можно, например, зайти в /boot/grub/. Если там будет куча файлов и будет присутствовать файл grub.cfg - это grub2. Если там мало файлов, и присутствует файл menu.lst - это первый grub. Или можно в менеджере пакетов версию посмотреть.
Пользователь решил продолжить мысль [time]Thu Jun 2 22:40:30 2011[/time]:
Сорри, слеши (C:\) куда-то пропали. И кусок из menu.lst отвалился. Теперь вроде всё исправил.