DualBoot для Kubuntu 12.04 и Windows 8 [Решено]

Итак, начну издалека :)

У меня компьютер без UEFI, собран на AMD/ATI.

Есть два диска: SSD и HDD (SATA).

SSD размечен полностью на ext4, hdd содержит 2 ntfs раздела для Windows и один ext4 раздел для linux.

На SSD находится загрузчик grub и kubuntu 12.04. На HDD находилась Windows 7.

SSD диск установлен в BIOS первым в порядке загрузки. При запуске компьютера я мог из меню grub выбрать какую ОС загружать.

Но! В один прекрасный день раздел с Windows умер, и восстановить можно было только форматированием. Что я и сделал, и поставил на этот раздел windows 8, предусмотрительно отключив физически диск с kubuntu.

После установки я подключил диск обратно, в BIOS выставил порядок загрузки с SSD, загрузился в Kubuntu, выполнил там команду sudo update-grub. В результате которой os-prober удачно нашел раздел с windows 8 на /dev/sdb1. Перезагрузившись, я попробовал запустить из меню grub загрузчик Windows 8

B через несколько секунд получаю вот такой ERROR

Неоднократное повторение попыток загрузиться приводило к появлению системы автоматического восстановления windows 8.

Вопрос, как с этим бороться? Гугл не помогает, или я не так ищу...

0
DEamON - 16 Май, 2013 - 20:33
Изображение пользователя DEamON.

Кажется Windows негодует почему на 2-х дисках есть MBR записи, только одну она не может понять видимо.

На буржуйских сайтах тоже особого решения нету. Есть предположения по решению абсолютно разные.

Попробуй для начала удалить файл гибернации Windows 8. Если не поможет можно попробовать восстановить виндовыми средствами (запускившись с виндового диска) загрузчик виндовский и её загрузочную запись (груб при этом снесётся и его нужно будет восстановить по инструкции). Я точно не уверен, что это поможет, возможно это даже стрельба по воробьям из пушки.

0
wiw - 16 Май, 2013 - 20:43

Файл гибернации уже удален. Быстрая загрузка отключена. Если в биосе установить порядок загрузки с hdd то windows загружается нормально. Да и виндовый загрузчик сидит на hdd диске, а grub на ssd...

Была у меня мысль, что может быть винде не нравится что её диск стоит не первым... Поясню: груб передает права загрузки виндовому загрузчику, тот в свою очередь лезет на первый диск установленный в биосе и обнаруживает там груб - итог - ошибка. Хотя я может быть бред несу...

0
wiw - 16 Май, 2013 - 20:44

Ещё мысль, а если попробовать установить груб на диск с виндой...
Но с другой стороны два загрузчика на одном разделе жить не смогут, надо разбивать диск...

0
DEamON - 16 Май, 2013 - 20:49
Изображение пользователя DEamON.

Попробуйте. Есть шанс, что дело в этом. Но не думаю, что нужно разбивать диск. Загрузчик винды и так стоит на 100мб разделе, так что он затереться не должен.

0
wiw - 16 Май, 2013 - 20:53

Спасибо. Я так понимаю наиболее адекватно я это могу сделать по инструкции выше? То есть установить grub на диск /dev/sdb. А на диске /dev/sda я так понимаю grub трогать не надо?

0
Buy - 18 Май, 2013 - 06:37

Загрузчик винды и так стоит на 100мб разделе
Загрузчик винды стоит и на 100мб разделе и в MBR, это неразрывное целое.

0
Buy - 18 Май, 2013 - 06:29

Не плохо бы чтоб ты выложил вывод
sudo fdisk -l
Было бы нагляднее. На диске с виндой должен быть виндовый MBR иначе не будет загружаться. И все правильно, если переставить на загрузку с HDD то загружается только винда как обычно. Не надо туда grub ставить.
Я бы для сначала сделал следующее:
sudo apt-get install --reinstall grub-pc
Просто переинсталлировал grub. Перезагрузился и посмотрел. Мне эта операция помогала не раз.
Поясню: груб передает права загрузки виндовому загрузчику, тот в свою очередь лезет на первый диск установленный в биосе и обнаруживает там груб - итог - ошибка. Хотя я может быть бред несу...
Все верно, но ведь раньше работало? Винда была всегда на /dev/sdb или нет? По идее ее надо всегда держать на диске, что в выводе fdisk -l обозначается как /dev/sda. Даже в первом разделе, то есть /dev/sda1. Так было раньше, насчет win8 не знаю.
Вот и не понятно, раз раньше работало, то как? Может быть такое, что в процессе тягомотины с дисками ты поменял местами шлейфы в разъемах и винда стала /dev/sdb, а какой она раньше была не помнишь? Словом, начни с переустановки grub (именно apt-get install с парамертром --reinstall).

Инструкция что дали хороша, но зачем сразу загружаться с LiveCD если у тебя кубунта рабочая (как я понял)? Это если вообще загрузиться не можешь! Смысла устанавливать grub на оба диска нету, затрет он виндовый MBR и будешь ее по новой ставить (разве что в восьмерке что-то поменялось, сомневаюсь...).

0
wiw - 18 Май, 2013 - 06:40

Благодарю за совет, сегодня обязательно попробую. Шлейфы местами точно не менял, но вот была ли она раньше на sda или на sdb уже не помню. И да, раньше с Win7 всё работало.

0
wiw - 18 Май, 2013 - 08:02

sudo fdisk -l

Диск /dev/sda: 32.0 Гб, 32017047552 байт
255 головок, 63 секторов/треков, 3892 цилиндров, всего 62533296 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x000858fe

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *          63    58396274    29198106   83  Linux
/dev/sda2        58396275    62524979     2064352+  82  Linux своп / Solaris

Диск /dev/sdb: 500.1 Гб, 500107862016 байт
255 головок, 63 секторов/треков, 60801 цилиндров, всего 976773168 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x00083ab6

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1   *        2048   104871935    52434944    7  HPFS/NTFS/exFAT
/dev/sdb2       104872320   540823551   217975616   83  Linux
/dev/sdb3       540823552   976773119   217974784    7  HPFS/NTFS/exFAT

0
wiw - 18 Май, 2013 - 08:39

Не помогло :(

Переустановку груба сделал - та же ошибка.

Поменял местами шлейфы, обновил груб, теперь структура дисков такая
Диск /dev/sda: 500.1 Гб, 500107862016 байт
255 головок, 63 секторов/треков, 60801 цилиндров, всего 976773168 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x00083ab6

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *        2048   104871935    52434944    7  HPFS/NTFS/exFAT
/dev/sda2       104872320   540823551   217975616   83  Linux
/dev/sda3       540823552   976773119   217974784    7  HPFS/NTFS/exFAT

Диск /dev/sdb: 32.0 Гб, 32017047552 байт
255 головок, 63 секторов/треков, 3892 цилиндров, всего 62533296 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x000858fe

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1   *          63    58396274    29198106   83  Linux
/dev/sdb2        58396275    62524979     2064352+  82  Linux своп / Solaris

Но тоже не помогло...

Похоже надо что-то с виндой колдовать...

И ещё такой момент, винда у меня 64бит, а кубунта 32бит - это может каким либо образом влиять (Например для UEFI битность важна и должна быть одинаковой)

0
Buy - 18 Май, 2013 - 19:23

Сразу напишу, чтоб не забыл, не совсем по теме. У тебя смотрю первый раздел на SSD начинается с сектора 63, это НЕ есть хорошо. Необходимо, чтоб стартовый сектор делился на 8 без остатка, то есть начало должно быть например c 2048, вот для HDD это так и есть у тебя (хотя для жестких дисков как раз не важно). Про выравнивание есть например тут. Теперь уже не поменяешь без пересоздания раздела, но на будущее помни и предлагаю использовать fdisk для разметки, он правильно размечает.
Насчет 64/32бит. Теоретически может. Вопрос в том, что раньше-то работало. Значит имхо должно работать и теперь. Или "старая" win7 была 32 битная?

0
wiw - 18 Май, 2013 - 18:54

Благодарю за статью, очень полезная. Жаль что она не встретилась мне когда я устанавливал kubuntu...

А диск я размечал встроенным установщиком kubuntu 10.04... Похоже что надо сначала загружаться с live-cd (flash), размечать диск и только потом запускать установку kubuntu...

0
dyug - 19 Май, 2013 - 09:31

Эммм... Вспоминаем, что счет (во многих компьютерных приложениях) начинается не 1, а с 0, и сразу все становится на свои места, и делится на 8 без остатка. :-)

+1
Buy - 20 Май, 2013 - 00:39

На самом нижнем уровне современный жесткий диск делится на сектора размером 4Кб (4069 байт) (физические сектора). Второй уровень – абстрактное представление в виде секторов размером 512 байт для внешних систем.
63 сектора (по 512 байт), по чисто математическим причинам не выравниваются по секторам в 4 Kб (т.е. по реальным физическим).
Если начальный сектор 63, значит перед ним было 63 сектора считая с нулевого [0-62], суммарный объем не делится без остатка на 4069, т.е. границы секторов верхнего "абстрактного слоя" не совпадают с границами секторов на физическом уровне (смещены). И это смещение может продолжаться до конца диска если последующие разделы идут впритык.

(63 сектора х 512 байт)/(1 сектор х 4069 байт) = 7,875

Это не обеспечивает минимально возможное количество операций записи-чтения при работе с разделом. Но

(64 сектора х 512 Kб)/(1 сектор х 4069 байт) = 8. Отсюда и правило о кратности, в этом случае все будет совпадать.

0
dyug - 20 Май, 2013 - 15:15

все понятно, чтение, увы явно не Ваш конек, спасибо за разъяснение несуществующего.
На всякий случай - рекомендую ВНИМАТЕЛЬНО посмотреть таблицу разбиения диска, обратив внимание на:

255 головок, 63 секторов/треков, 3892 цилиндров, всего 62533296 секторов

/dev/sdb1 * 63 58396274 29198106 83 Linux

И подумать, почему раздел начинается с 1(первой) дорожки, при начале нумерации с 0. (наличии НУЛЕВОЙ дорожки)
Излагать принципы низкоуровневого построения винтов - я не буду, для этого вполне хватит сайтов, посвященных хардам. :-)

И вообще, я зол, даже очень зол. Учитывая что с утра на другой площадке навернулся свитч.

0
Buy - 21 Май, 2013 - 17:07

Если что, я говорил о необходимости выравнивания на SSD, а не HDD. Причем я не отрицаю того факта, что с развитием микроконтроллеров для SSD (а низкоуровневая логика их работы известна только производителям) ситуация может меняться.
О выравнивании говорил в статье например Т.Тсо, он как главный разраб ext4 разбирается в вопросе, почему не учитывать его мнение? Есть конечно и другие статьи с размышлениями и разъяснениями по этому вопросу.
И подумать, почему раздел начинается с 1(первой) дорожки, при начале нумерации с 0. (наличии НУЛЕВОЙ дорожки)
Потому что выравнивание производится по этой дорожке, 63 сектора (32256 байт) – устоявшийся размер "цилиндра" диска. Но размер модулей памяти SSD составляет 4096 байт это та самая заводская физическая разметка. Логично, что отступ от начала надо делать так чтоб в него помещалось N целых кусков по 4096 байт или 64 сектора х 512 байт - аналог нулевой "дорожки" для SSD. Он может быть и больше, но куски по 4096 байт должны влазить в этот "отрезок" целиком.
Хорошо, я допускаю что что-то упустил, так объясни. Ну как свитч починишь и если будет настроение.

0
dyug - 22 Май, 2013 - 10:58

Давай так:
У меня есть мнение, что ты перепутал несколько понятий...
Ты путаешь логическую разметку диска, каковая видится системой, и физическую разметку внутри ССД, недоступную системе, как таковой.
Ибо эта физическая разметка преобразуется в логическую (по крайней мере, на текущем уровне системы) контроллером ССД, и ты никак не в состоянии изменить это.
Посему - обсуждать состояние доконтролерное, и как правильно это все сделать, не имея возможности управления этим процессом - на мой взгляд не имеет смысла.
Фактически, сколько байт внутри одного отдельно взятого модуля памяти ССД, и как именно он разбит - это интересно только производителю, ибо он закрыл возможность доступа к этому уровню, поставив контролер, обеспечивающий трансляцию в общепринятые параметры (типа цилиндр, сектор). К тому же, я не уверен, что ты точно знаешь, что там оно не ретранслируется в эти самые 2048 байт, и что система защиты от сбоев там не вписывается в это значение.
А то, что любой ССД имеет емкость больше, чем указано - это особо не скрывают. Ибо иначе срок службы этого ссд был не больше пары месяцев.

0
Buy - 18 Май, 2013 - 19:42

Глянь еще в /boot/grub/grub.cfg там должны быть строки похожие на эти:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 154DC44112218852
chainloader +1
}

154DC44112218852 - это UUID раздела с виндой (у меня), проверь совпадает ли у тебя с твоим. UUID разделов можно узнать коммандой:
ls -l /dev/disk/by-uuid/

0
wiw - 18 Май, 2013 - 19:00

Спасибо, проверим

0
wiw - 20 Май, 2013 - 07:21

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 8 (loader) (on /dev/sda1)" --class windows --class os {
        insmod part_msdos
        insmod ntfs
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root 4618D7E718D7D451
        drivemap -s (hd0) ${root}
        chainloader +1
}
### END /etc/grub.d/30_os-prober ###

uuid совпадает с выводом команды ls -l /dev/disk/by-uuid/

0
Buy - 18 Май, 2013 - 19:18

Насчет ошибки 0x00000050 накопал это. Но если поставить загрузку с HDD, то ведь нет проблемы. Хм... Еще такая мысль. Поменяй загрузку на HDD, загрузись в винду (в этом случае ведь все нормально?), потом приведи ее полностью "в порядок", поставь ВСЕ необходимые драйвера и обновления. Потом опять попробуй загрузиться с помощью grub.

0
wiw - 18 Май, 2013 - 19:02

Это я видел, но надежды мало на то что "железная проблема"
Хотя вот это Отключение кэширования памяти BIOS может устранить сбой. довольно интересно :)

0
wiw (не зарегистрирован) - 20 Май, 2013 - 08:20

В общем проблему решил используя известную поговорку "Если гора не идет к Магомету, значит Магомет пойдет к горе". Если не удается загрузить Windows через grub, значить будем загружать linux через Windows Boot Manager.

Для редактирования загрузчика Windows я воспользовался следующей статьей How to dual-boot Windows 8 and Linux.

Теперь загрузчик Windows передаёт права на загрузку Grub, а не наоборот...

0
wiw - 20 Май, 2013 - 09:02

P.S.: Это я писал :)

0
Buy - 20 Май, 2013 - 17:48

Ага, тоже видел эту статью. Главное чтоб майкрософт не положила этому конец в одном из обновлений ).

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры