Как стать автором
Обновить

Комментарии 40

Вместо systemrescuecd можно использовать любую другую утилиту для клонирования разделов. Я использовал AOMEI backupper.
Если я правильно понял, то AOMEI сможет вообще все сам сделать. Сам переводил windows server с MBR на GPT. Делается в один клик на живой системе
Bootrec /RebuildBcd сможет автоматом скорректировать загрузочную запись?
Как правило, может. Но не редки ситуации, когда он запарывает BCD совсем.
С учетом не высокой сложности задачи, предпочитаю делать руками, контролируя все этапы.
Прошу прощения за глупый вопрос не по теме. Я слышал об UEFI лет 6-7 назад и говорил своим товарищам, что он в будущем заменит биос. На меня тогда смотрели как на чудака. А как с этим обстоит дело сейчас? Я отошел от железок и не в курсе, насколько широко представлена эта технология на новых компьютерах?
Распространяется в добровольно-принудительном порядке. Я бы не сказал, что UEFI невероятно лучше, чем BIOS. Задумка хорошая, а вот с реализацией не все гладко (тут, на Хабре, один товарищь очерь подробно разобрал многие проблемы)
Есть ли в UEFI возможность выбора порядка приоритетов видеовыходов? (Например, чтобы из имеющихся DP, HDMI, DVI выходом по умолчанию был не DVI, а DP.) Спасибо.
Все зависит от реализации самого UEFI, в каждом конкретном случае.
Обычно этого нет. Но если сильно захотеть, можно написать efi скрипт (надо впихнуть его до загрузки вашей ОС). И уже в скрипте, выставлять нужные переменные (какие нужны, смотреть опять индивидуально).
В целом, UEFI предоставляет возможности, схожие с *nix shell.
Только не сам UEFI, а его shell. Диспетчер BDS позволяет запускать пользовательские приложения вместо загрузчиков, все остальное — это уже сам UEFI Shell реализует, от UEFI там только сервисы и прямой доступ к еще не выгруженным драйверам и протоколам.
Если коротко, то да, но только если производитель вашей платформы предоставляет соответсвующий драйвер. В произвольной реализации UEFI — скорее всего нет.
По сути, заменил. Материнки все с UEFI идут давным давно. В телефонах уже этот UEFI поселился.
Как мне сказал один французский товарищ, UEFI в массы пошло в принтерах :-)
Только она теперь и представлена, по больше части. Исключения крайне редки — хромобуки с coreboot, да машины Apple с EFI 1.10, все остальное — UEFI 2.1+ начиная с систем на чипсете P67.
Реализация UEFI сильно хромает. Видимо производители не могут осилить спецификацию http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_6.pdf

На хабре даже серия статей была про то какие производители рукозады. https://habrahabr.ru/post/266935/

Например мой HP даже при включении SecureBoot позволяет грузить неподписанные ядра. :facepalm:
Надеюсь статья вам помогла, если есть не очевидный нюанс, то я внесу его в статью.
Я не был в курсе этих команд (/? про это молчал, man'ов в винде тоже нет, печаль). Попробую, вдруг получится без переноса разделов.

bcdboot E:\Windows /s s: /f BIOS
bootsect /nt60 s: /mbr

P.S. Большинство туториалов на эту тему в интернете убоги и написаны школьниками. Не смог найти ни одного толкового. И часто вместо туториала предлагают просмотреть youtube видео. В 90% случаев предлагают скачать специальную графическую утилиту, да еще и платно. Мне после мира Linux это кажется дикостью :)
Еще парочка дикостей (простите, накипело):

1) Windows 7 не имеет встроенной возможности создавать загрузочную флэшку. Только запись на CD/DVD, только хардкор.
2) Windows 8 имеет такую возможность, но всё еще нет варианта "создать образ". Например создал ISO'шник или IMG, перетащил куда надо и записал.
3) Почему нельзя параметры загрузки заключить в текстовый файл? Почему BCD всё хранит в бинарном формате? Или я что-то не понимаю?
bcd это обычный файл реестра, это удобная нативная база данных, зачем им изобретать новый велосипед?
Занятно… Значит в Linux его легко можно отредактировать с помощью hivexregedit. И почему так мало информации об этом. Вот что только что откопал:

hivexregedit --export BCD '\' > BCD.reg

И редактируй сколько душе угодно. Затем:

hivexregedit --merge BCD BCD.reg

Класс!
Нет, не получается. Делаю следующим образом:

Конвертирую MBR->GPT. Само собой система после этого не грузится. Но разделы в норме, можно примонтировать, всё читается (ntfs boot + ntfs windows).

Перезагружаюсь в recovery, там делаю следующее:

$ diskpart
select disk 0 # тот, что с GPT
select partition 1 # тот, что первый с NTFS boot, partition 2 это C:\Windows
assign letter=S
exit

Затем:

$ bcdboot C:\Windows /s s: /f BIOS
Boot files successfully created
$ bootsect /nt60 s: /mbr
Target volumes will be updated with BOOTMGR compatible bootcode

S: <\Device\HarddiskVolume1>

Successfully updated NTFS filesystem bootcode

\??\PhysicalDrive0

Bootcode is only updated on MBR partitioned disks. A different
partitioning scheme is used on this disk.
Bootcode was successfully updated on all targeted volumes.

Преезагружаюсь, результат тот же — при загрузке "Missing operating system"
Дак неудивительно, что не получается. Раз вы мигрируете на UEFI, то команда должна быть такой:
bcdboot E:\Windows /s s: /f UEFI

Самом собой, имена дисков смотрите в diskpart.
Да кто сказал, что я мигрирую на UEFI? Я хочу использовать раздел GPT + Legacy boot.
Я в последнем вашем комментарии прочитал.
«Конвертирую MBR->GPT.»

А что касается вашего вопроса, почему вы уверены, что в легаси можно загрузиться с GPT раздела?
А почему нет? При использовании grub само собой.
Windows, при обнаружении валидной MBR (а у HybridGPT она валидная), проверять наличие gpt уже не будет.
Если же у он находит Protective MBR (специально сформированную заглушку, а HybridGPT кроме раздела заглушки, имеет еще и другие разделы, что не по стандарту, и соответствует валидной MBR), то ищет gpt.
Но это все ерунда, когда выясняется, что код загрузчика Windows, загружаясь в режиме MBR, полностью игнорит существование gpt. Естественно его не находит, и выпадает в осадок.
Костыль: разместить загрузочный раздел на флешке или эмулировать его в памяти (должен быть с разметкой MBR).
Я вот про костыль можно подробнее?
Сам такое не делал, но может прокатить. Идея такая:
GRUB4DOS умеет затягивать в память образы дисков (простые, линейные) и эмулировать из него рамдиск, который на уровне BIOS будет восприниматься вполне себе нормальным диском. А уже раз есть такой диск, который MBR, то на нем и размещайте загрузочные данные от Windows.
Тут только я не вполне уверен, в какой момент загружается код, умеющий работать с gpt
Идея растет из того, что можно грузить Windows с GPT, если раздел загрузки находится на флешке (тот самый раздел на 100 мегов). Его можно сделать по этой статье.

Пример для floppy с DOS
title MS-DOS
find --set-root --ignore-floppies /boot_ntfs
map /boot/win98.ima (fd0) 
map --hook 
chainloader (fd0)+1 
rootnoverify (fd0) 
map --floppies=1


Можно попробовать это сделать и на чистом GRUB\GRUB2.
Видимо вас сбила столка концовка статьи, теперь я ее отделил, чтобы больше никого не путать.
Нет, никто не смутил. Как я описал выше. Я хочу использовать GPT раздел + Legacy boot.
Это называется HybridGPT. Windows такое очень "любит" и воспринимает как обычный mbr.
Так и не получилось завести legacy boot + GPT. Сделал возможной двойную загрузку с MBR (используя bcdboot E:\Windows /s s: /f UEFI). При отключенном EFI сохранена возможность грузиться в Legacy mode, при включенном EFI сохранена возможность грузиться в EFI. К сожалению SecureBoot не работает с Windows 7. Во время экспериментов также выяснился любопытный факт, что подписанный grub2, поставляемый с Ubuntu игнорирует проверку подписей для Linux ядер. Так что моё замечание об HP неверное.
В догонку, в Ubuntu пришлось пофиксить определение сторонних OS с EFI + MBR.
Там можно использовать параметр /f ALL. Он разместит оба типа загрузчиков, но это не гарантирует запуска. Как я уже писал, загрузчик до определенной стадии не воспринимает разметку GPT, а значит грузиться не будет.
Мне два загрузчика не требуется. Только UEFI, т.к. загрузка с MBR работала изначально.
Тогда по пунктам, что хочешь получить, и что для этого делал. А то я нифига уже не понимаю.
Да я уже получил. Просто не стал конвертировать раздел в GPT. EFI boot прекрасно работает с MBR.
Это при том, что скорее всего, он работает не совсем по стандарту (не гарантирует работу на другой версии прошивки). Для загрузки нужен раздел с fat (16/32), на котором будет правильно оформленный загрузчик. И очень желательно, чтобы был идентификатор раздела ef00 (что есть только в gpt).
создаешь 0xEF тип в MBR.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории