Намедни столкнулся с интересной проблемой.
Есть ноутбук MSI с установленными параллельно Windows XP и Ubuntu 8.10. Обе системы установлены на логические (logical) разделы. Загрузочик Windows и необходимые для него файлы однако установлены в основной (primary) раздел по понятным причинам. GRUB установлен по-умолчанию - то есть в MBR.
Загрузка Ubuntu происходит коррентно сколько угодно раз. Загрузка Windows также работает корректно. НО. Стоит в Windows запустить такую небезызвестную программу как AutoCAD 2009, как происходит очень странная вещь - слетает MBR. Симптомы такие: ноутбук включается, проходит POST, проскакивает надпись "Grub loading, stage1" и ноутбук тут же перезагружается. Цикл повторяется до бесконечности. GRUB можно восстановить с LiveCD, но после очередного запуска AutoCAD 2009 в Windows MBR снова слетает.
Да, именно AutoCAD. Я сам сначала не поверил. Казалось бы, да? AutoCAD - просто пользовательское приложение для Windows, какое оно вообще имеет отношение к MBR? Однако факт есть факт. Есть предположение, что AutoCAD (как самый умный) записывает в MBR какие-то данные о том, сколько ему осталось работать в trial-режиме. Но так как он не подозревает, что в MBR может быть что-то, отличное от загрузчика Windows, то возникают такие вот неприятности. Это гипотеза. Есть желающие проверить - милости просим, будет интересно.
Способ решения проблемы при загрузке с LiveCD:1) Монтируем раздел жесткого диска, на котором находятся файлы каталога
/boot (обычно это тот же раздел, на который устанавливалась Ubuntu). Примонтировать раздел можно выбрав его в меню "Переход". В таком случае он обычно монтируется в папку /media/disk (этот путь потребуется позже)
2) Открываем терминал (Приложения - Стандартные - Терминал)
3) В терминале переходим в папку с файлами GRUB:
cd /media/disk/boot/grub4) Удаляем все файлы загрузчика стадии 1_5:
sudo rm *1_55) Входим в командную оболочку GRUB:
sudo grub6) Определяем номер раздела, где расположены загрузочные файлы:
find /boot/grub/stage1. Команда должна выдать что-то вроде
(hdX,Y), где X и Y - некоторые цифры.
7) Устанавливаем корневой раздел для GRUB'а:
root (hdX,Y)8) Устанавливаем GRUB в MBR:
setup (hdX)9) Выходим из оболочки GRUB:
quit10) Перезагружаемся.
Способ решения проблемы при работе в установленной Ubuntu:1) Открываем терминал (Приложения - Стандартные - Терминал)
2) В терминале переходим в папку с файлами GRUB:
cd /boot/grub3) Удаляем все файлы загрузчика стадии 1_5:
sudo rm *1_54) Входим в командную оболочку GRUB:
sudo grub5) Определяем номер раздела, где расположены загрузочные файлы:
find /boot/grub/stage1. Команда должна выдать что-то вроде
(hdX,Y), где X и Y - некоторые цифры.
6) Устанавливаем корневой раздел для GRUB'а:
root (hdX,Y)7) Устанавливаем GRUB в MBR:
setup (hdX)8) Выходим из оболочки GRUB:
quit9) Перезагружаемся.
Всё, после этих манипуляций, Windows перестает портить MBR. Точнее он-то её портить продолжает, но на работе загрузчика это уже не сказывается.
Еще один нюанс для знатоков. Не похоже, чтобы Windows портил именно MBR, поскольку дампы MBR (первые 512 байт жесткого диска) до переустановки GRUB и после переустановки GRUB совпадают. Вопрос: что же он портит, если указанные выше действия приводят к решению?