Нужен ли rEFInd код в MBR для загрузки Windows на Mac?

1368
David Anderson

Я прочитал много постов, касающихся установки и загрузки Windows на компьютерах Mac. Многие процедуры используют rEFInd для загрузки установки Windows в BIOS. Процедуры, по-видимому, не указывают на какую-либо установку кода в MBR. Таким образом, либо предполагается, что в MBR уже есть код из предыдущей установки, либо rEFInd не требует такого кода для загрузки Windows. Кто-нибудь знает ответ?

0

2 ответа на вопрос

2
Rod Smith

И rEFIt, и rEFInd поместят копию загрузочного кода MBR SYSLINUX в ​​MBR, если MBR еще не загружается и если в разделе существует соответствующий загрузочный код. Тем не менее, загрузочный код должен существовать в MBR, хотя он может быть уничтожен инструментами разбиения, которые предполагают, что первые 440 байтов MBR на диске GPT должны быть обнулены, как это обычно имеет место для EFI-загрузочных GPT-дисков.

Это поднимает еще один момент: Windows 8 (и, вероятно, Windows 10) довольно хорошо устанавливается в режиме EFI на многих компьютерах Mac. При такой установке загрузочный код в режиме BIOS не требуется ни в MBR, ни в разделах Windows. Установка в режиме EFI, вероятно, будет более безопасной, поскольку нет необходимости в опасной гибридной MBR, которую используют Mac для двойной загрузки OS X и более ранних версий Windows. Подвох в этом типе установки заключается в том, что Дисковая утилита и некоторые другие инструменты OS X создадут гибридную MBR, если вы попытаетесь подготовить диск для Windows - например, установив раздел FAT. Когда установщик Windows, загруженный в режиме EFI, увидит гибридную MBR, он пожалуется, что не может установить ее на диск MBR. Вы можете обойти эту проблему, используя любое количество инструментов (таких как gdisk: Тип x, затемn, затем w), но это может быть расстраивающим и сбивающим с толку, если вы не понимаете природу проблемы или как ее решить.

1
luttztfz

Когда используется CSM, можно загрузить загрузочный код MBR так, как это сделал бы BIOS.

Логика: CSM должен действовать точно так же, как BIOS, чтобы быть совместимым. ОС поместит требуемый загрузочный код в MBR и загрузочный сектор (ы) раздела.

Но это для начальной загрузки на основе CSM. Имейте в виду, что сам rEFInd является опцией загрузки EFI. Из-за этого rEFInd будет загружен (U) EFI как стандартный двоичный исполняемый файл EFI (32- или 64-разрядный PE, в зависимости от EFI), как и любой загрузчик для операционной системы EFI. Когда отображается меню rEFInd, CSM еще не загружен. Поскольку rEFInd загружается как исполняемый файл EFI, в CSM нет необходимости.

С загрузкой EFI в качестве отправной точки REFInd сам rEFInd продолжит поиск параметров загрузки, то есть разделов, других загрузчиков EFI или ядер. Для операционных систем на основе BIOS rEFInd определит, является ли опция вообще загружаемой точно так же, как CSM, проверив наличие MBR (гибридного) раздела с загрузочным кодом из вашей операционной системы на основе BIOS. Если он отсутствует или прерывается, ОС не будет загружаться. (Причиной может быть то, что что-то пошло не так при установке операционной системы в раздел MBR.)

Итак, короткий ответ: нет. Только при загрузке диска (не раздела!) Из CSM загрузочный код MBR будет загружен. rEFInd, запущенный как загрузчик EFI, не требуется или даже не может запустить MBR.

Представьте, что rEFInd запустит MBR (и для этого давайте просто предположим, что он также может заставить UEFI загружать CSM): если есть ошибка в загрузочном коде и / или разбиении (например, если раздел не задан как активный ) или если выбрано выбранное Параметр загрузки (через rEFInd) не помечен как активный раздел в таблице разделов MBR, загрузочный код MBR не будет загружать выбранный раздел, что делает всю цель меню выбора загрузки rEFInd недействительной.

Из rEFInd Boot Manager: Использование драйверов EFI, раздел Выбор драйвера EFI :

NTFS - Сэмюэль Ляо предоставил этот драйвер, который использует структуру драйвера rEFIt / rEFInd. Обратите внимание, что этот драйвер не требуется для загрузки Windows с помощью rEFInd, поскольку Windows хранит свой загрузчик EFI на (FAT) ESP, а процесс загрузки BIOS (обычно используемый при двойной загрузке на Mac) зависит только от загрузочного сектора раздела., который читается без пользы этого драйвера.

Это ясно подразумевает, что rEFInd просто загрузит загрузочный сектор соответствующего раздела MBR (хотя должен быть гибридным разделом), тем самым намеренно пропуская MBR.

Кроме того, UEFI (EFI 1.x на Mac) предоставляет средства для «унаследованной загрузки» выбранного раздела, который при выборе / получении инструкции автоматически загружает CSM. Не все машины UEFI имеют такую ​​возможность. Если он отсутствует, rEFInd не может загрузить операционную систему на основе BIOS из раздела MBR.

Из OSDev Wiki, раздел UEFI, класс 0-3 и CSM :

ПК относятся к классу UEFI 0, 1, 2 или 3. Машина класса 0 - это устаревшая система с устаревшим BIOS; т.е. не система UEFI вообще.

Машина класса 1 - это система UEFI, которая работает исключительно в режиме модуля поддержки совместимости (CSM). CSM - это спецификация того, как прошивка UEFI может эмулировать устаревший BIOS. Прошивка UEFI в режиме CSM загружает старые загрузчики. Система UEFI класса 1 может вообще не объявлять о поддержке UEFI, поскольку она не предоставляется загрузчику. Это только UEFI "внутри" BIOS.

Машина класса 2 - это система UEFI, которая может запускать приложения UEFI, но также включает возможность запуска в режиме CSM. Большинство современных ПК являются машинами UEFI класса 2. Иногда выбор для запуска приложений UEFI вместо CSM - это параметр «один или другой» в конфигурации BIOS, а в других случаях BIOS решает, какой из них использовать, после выбора загрузочного устройства и проверки наличия у него устаревшего загрузчика или Приложение UEFI.

Машина класса 3 - это система UEFI, которая не поддерживает CSM. Машины UEFI класса 3 только запускают приложения UEFI и не реализуют CSM для обратной совместимости с устаревшими загрузчиками.

Из rEFInd Boot Manager: Использование раздела rEFInd Загрузка устаревших ОС :

Чтобы помочь при загрузке в режиме BIOS, rEFInd поддерживает загрузку устаревших ОС; однако, детали различаются между компьютерами Mac и UEFI. Также имейте в виду, что на некоторых компьютерах UEFI отсутствует модуль поддержки совместимости (CSM), необходимый для работы этой функции. Это верно даже для некоторых компьютеров, которые могут загружать ОС на основе BIOS. Это может произойти из-за того, что прошивка - это, в основном, BIOS с реализацией UEFI; такие системы полагаются на собственный BIOS для загрузки и могут не обеспечивать приложениям EFI доступ к функциям BIOS через механизмы CSM. Если у вас есть такой компьютер и если вы включили устаревшую опцию загрузки в файле конфигурации, rEFInd уведомит вас о невозможности представить устаревшие опции загрузки при запуске.

Если вас интересует, есть ли в вашем меню загрузки EFI какие-либо записи CSM - не rEFInd, а реальные (U) варианты загрузки EFI - вы можете попробовать efibootmgr -vна Linux. Это будет работать только тогда, когда сам Linux загружается как (U) EFI. Когда Linux загружается как выбор загрузки CSM, он не будет иметь доступа к базовой реализации EFI. Только в Linux нет большой разницы в отношении разделения, поскольку Linux не так требователен, как Windows, и может с радостью использовать GPT-разделение в режиме BIOS.

# efibootmgr -v Timeout: 2 seconds BootOrder: 0000,0004,0005 Boot0000* Windows Boot Manager HD(2,GPT,1bf25484-f461-4892-a640-a24136b1d45f,0xe1800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...e................ Boot0004* Hard Drive BBS(HD,,0x0)P0: INTEL SSDSC2CT060A3 . Boot0005* UEFI: SanDisk Extreme 0001 PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(4,0)/HD(1,MBR,0x97,0xb4,0x298c)/File(\EFI\BOOT\BOOTX64.EFI) 

В этом примере есть только записи UEFI.

# efibootmgr -v BootCurrent: 0002 Timeout: 3 seconds BootOrder: 0003,0002,0000,0004 Boot0000* CD/DVD Drive BIOS(3,0,00) Boot0001* Hard Drive HD(2,0,00) Boot0002* Fedora HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\fedora\grubx64.efi) Boot0003* opensuse HD(1,800,61800,6d98f360-cb3e-4727-8fed-5ce0c040365d)File(\EFI\opensuse\grubx64.efi) Boot0004* Hard Drive BIOS(2,0,00)P0: ST1500DM003-9YN16G 

В этом примере Boot0000и Boot0004CSM выбор (обратите внимание на BIOSпуть) и UEFI будет загружать эти записи с загруженным CSM. Но имейте в виду, что все еще UEFI вызывает загрузку выбранной записи!

Когда rEFInd должен использовать механизмы CSM для загрузки устаревших операционных систем из MBR (гибридных) разделов, я могу только предположить, что это очень похоже на постоянные загрузочные записи UEFI. Может быть, что rEFInd использует одноразовые загрузочные записи (вроде BootNext) для этой задачи ...

Похожие вопросы