On Mon, Dec 27, 2010 at 12:55:07PM +0300, Sergei Epiphanov wrote: > На выходных решил на домашнем компе сменить lilo на grub2. Установил grub2, > снес lilo. Конфигурация железа такова: > > SATA0 - винт с Windows, даже загрузчик в MBR там от Windows > SATA1- винт с Linux, этот же винт стоит в BIOS как винт, с которго загружать > систему > > В lilo.conf строки про Windows были > other=/dev/hda > master-boot > chainloader +1 > > Сам grub (точнее, его программа grub-devicemap) прописывает устройства: > (hd0) - винт с Windows > (hd1) - винт с Linux В данном случае файл /boot/grub/device.map придётся исправлять вручную, поменяв местами (hd0) и (hd1). Дело в том, что grub-mkdevicemap не может определить, что в BIOS выставлен нестандартный порядок загрузки, и предполагает, что номера дисков BIOS назначаются в том же порядке, что и устройства /dev/sdX в Linux, однако в данной конфигурации это не так - устройство, выбранное в BIOS для загрузки, получает в BIOS номер 0x80, обозначаемый в GRUB как (hd0), но на порядок обнаружения дисков ядром Linux эта настройка BIOS никак не влияет. Хотя, если делать привязку к UUID разделов, а не к номерам дисков, исправлять device.map не обязательно - раздел с нужным UUID будет найден на любом диске, доступном для BIOS. > После установки grub конфигуратор груба не смог найти > Windows и мне пришлось руками изменять файл /etc/grub.d/40-custom.conf с > указанием нужного мне menuentry с параметрами (согласно info grub): > > insmod chain > drivemap -s (hd0) (hd1) > set root=(hd0) > chainloader +1 Как уже было замечено, нужно установить пакет os-prober - генерируемая им запись в меню использует UUID для поиска раздела с Windows, поэтому её работоспособность не зависит от порядка обнаружения дисков в BIOS. Правда, в этом случае управление будет передаваться непосредственно загрузочному сектору раздела Windows, без использования MBR.