2 сообщения / 0 новое
Последнее сообщение
Andrew88
Аватар пользователя Andrew88
Не в сети
Последнее посещение: 2 месяца 4 дня назад
Регистрация: 24/09/2013 - 12:48
Не работает dual-boot OpenSuse 13.1 и Windows 8.1 (в режиме Legacy BIOS)

Здравствуйте, если на форуме есть еще кто живой.
Столкнулся с проблемой переключения между двумя системами. Дело в следующем:
Получил задание накатить сюзю на комп с предустановленной восьмеркой. Система установлена на одном из дисков в режиме 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, а заставить все это работать надо как можно скорее Sad

Статус: 

Теги: 

Отредактировано: Andrew88 вкл 08/08/2016 - 16:37
Andrew88
Аватар пользователя Andrew88
Не в сети
Последнее посещение: 2 месяца 4 дня назад
Регистрация: 24/09/2013 - 12:48
Вопрос снимается, проблема

Вопрос снимается, проблема решена. Действительно, как я и подозревал, при установке сюзи Grub2 видел все загрузочные файлы, но генерировал неправильные (точнее, неподходящие) секции. Для систем, установленных в Legacy-BIOS mode запись должна быть совершенно другой. Потыкался по Нету, нагуглил описание в вики по Arch'у.
Если кто-то с таким столкнется, вот решение:

  1. Сначала любым доступным способом узнаем UUID раздела, который имеет метку "Зарезервировано системой", "SYSTEM RESERVED" или просто "System". На диске с виндой он идет самым первым и имеет размер от 100 до 350 МБ. Чтобы узнать UUID, я использовал GParted - там можно просто скопировать значение в буфер обмена. Также его можно посмотреть в Yast.
  2. Открываем от su файл /boot/grub2/grub.cfg
  3. Находим запись для загрузки Windows, сгенерированную самим Grub'ом.
  4. Заменяем ее на:

    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, естественно, пишем любое устраивающее нас название.

  5. Сохраняем файл.
  6. Перезагружаемся.

Теперь прекрасно грузятся и OpenSUSE, и винда! Biggrin