Здравствуйте, если на форуме есть еще кто живой.
Столкнулся с проблемой переключения между двумя системами. Дело в следующем:
Получил задание накатить сюзю на комп с предустановленной восьмеркой. Система установлена на одном из дисков в режиме Legacy. Соответственно, никаких разделов в FAT32 с метками EFI нет.
На другом диске установил Suse 13.1, в том же режиме. И тут началось самое интересное - сюзя через Grub2 загружается спокойно, а вот винда начисто отказывается. Получаю сообщение, будто не найден файл \Boot\BCD, как если бы на диске не было загрузчика. Но если зайти в меню UEFI и переключиться на диск с вин, то система прекрасно запускается! Более того, на виндовом диске есть 300-мегабайтный NTFS-раздел "Зарезервировано системой", на котором загрузчик виндовса таки лежит, но Grub этот загрузчик в пор не видит.
Читал, что Grub2 не умеет переключаться между осями, если одна установлена в legacy, а другая в uefi, но здесь-то обе в одном режиме, и проблем вроде бы возникать не должно. Такое ощущение, что Grub просто неправильно на что-то ссылается.
Вот содержимое секции в grub.cfg:### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 8 (loader) (on /dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-chain-6CCA5CB4CA5C7BF0' {
insmod part_msdos
insmod ntfs
set root='hd1,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 --hint='hd1,msdos1' 6CCA5CB4CA5C7BF0
else
search --no-floppy --fs-uuid --set=root 6CCA5CB4CA5C7BF0
fi
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
Пробовал менять секцию с загрузкой вин на вот такую (нашел пример где-то в вики по Grub2):menuentry 'Windows 8 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-6CCA5CB4CA5C7BF0' {
insmod part_msdos
insmod ntfs
set root='hd1,msdos1'
search --no-floppy --fs-uuid --set=root 6CCA5CB4CA5C7BF0
drivemap -s (hd0) ${root}
chainloader +1
}
Результат тот же. Уже и не знаю, что делать. Переустанавливать обе системы в UEFI возможности нет, так как при себе нет установки вин8, а заставить все это работать надо как можно скорее
Вопрос снимается, проблема решена. Действительно, как я и подозревал, при установке сюзи Grub2 видел все загрузочные файлы, но генерировал неправильные (точнее, неподходящие) секции. Для систем, установленных в Legacy-BIOS mode запись должна быть совершенно другой. Потыкался по Нету, нагуглил описание в вики по Arch'у.
Если кто-то с таким столкнется, вот решение:
menuentry 'Microsoft Windows Vista/7/8/8.1 BIOS-MBR' {
insmod part_msdos
insmod ntfs
insmod search_fs_uuid
insmod ntldr
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
ntldr /bootmgr
}
где hd0,msdos1 заменяем на значения для нашего зарезервированного раздела. Так как у меня этот диск шел вторым по счету (sdb2), нужно было написать "hd1,msdos1".
Для ahci0,msdos1 - аналогично.
69B235F6749E84CE - это тот самый UUID зарезервированного системой раздела. Пишем свой.
В menuentry, естественно, пишем любое устраивающее нас название.
Теперь прекрасно грузятся и OpenSUSE, и винда!