Установка ROSA в UEFI-режиме при наличии Windows в Legacy-BIOS-режиме
Если у вас есть компьютер, загружающийся в режиме Legacy BIOS, но при этом сам компьютер поддерживает UEFI, и вы хотите установить на него ROSA Fresh именно в UEFI, то эта статья для вас.
Мы решили собрать тут основные проблемы, с которыми вы можете столкнуться при таком сценарии, а также (по возможности) пути их решения. Настоятельно рекомендуется сначала прочесть статью и тщательно взвесить все «за» и «против», прежде чем приступать к установке, потому что, увы, не на всех компьютерах удастся получить рабочую конфигурацию. Кроме того, перед установкой может потребоваться выполнить некоторые шаги, чтобы потом восстановить загружаемость компьютера.
Статья скомпонована в виде списка проблем и их решений.
Содержание
После установки ROSA не загружается
Если у вас был Legacy-BIOS-загрузчик, то, скорее всего, на диске находилась таблица разделов MBR. В настоящее время утилита добавления загрузочного пункта UEFI не поддерживает логические MBR-разделы. Поэтому если ваш EFI-раздел (/boot/efi) является логическим (то есть имеет номер выше 4, например, /dev/sda5, /dev/sdb8 и т. п.), то загрузочный пункт добавлен не будет, и UEFI не будет знать, что загружать.
Возможные решения и обходные пути:
- Использовать таблицу разделов GPT
- Это решение подойдёт, только если у вас чистый диск или если существующие разделы и системы вам не нужны, так как конвертация MBR-диска в GPT без потери данных инсталлятором не поддерживается.
- Создать EFI-раздел как первичный (sdX1-sdX4)
- К сожалению, это не всегда возможно из-за структуры MBR.
На MBR-диске может находиться не более 4-х первичных разделов. Поэтому либо у вас будет всего 4 раздела (без возможности создавать новые), либо будет не более трёх первичных разделов, а четвёртый будет использоваться в качестве так называемого расширенного раздела, который по сути является «контейнером» для дополнительных, логических разделов. Соответственно, если у вас уже есть 3 первичных раздела и несколько логических, создать ещё один первичный раздел для EFI будет невозможно. Кроме того, даже если для первичного раздела есть свободный номер, вы не сможете его расположить между двумя логическими разделами, поскольку тогда его местоположение будет пересекаться с расширенными разделом, что запрещено.
- Вручную прописать UEFI-загрузчик
- Некоторые компьютеры (например, отдельные серии Dell Inspiron или Latitude) позволяют в настройках UEFI создавать собственные пункты загрузки. В этом случае после установки ROSA вы можете добавить такой пункт, выбрав в качестве корневой файловой системы ваш EFI-раздел, а в качестве загружаемого файла —
\EFI\rosa\BOOTx64.efi
или\EFI\rosa\grubx64.efi
. Если у вас поддерживается Secure Boot и вы планируете его включать, то нужно грузиться через BOOTx64.efi, если нет — можно использовать grubx64.efi напрямую.
- Автозапуск командного скрипта из EFI-раздела
- Некоторые UEFI-прошивки поддерживают автозапуск командного скрипта из EFI-раздела. Поэтому если предыдущие варианты не подошли, попробуйте загрузить ROSA в Live-режиме, подмонтировать EFI-раздел в какой-нибудь временный каталог и создать в его корне файл с именем
startup.nsh
, в котором в кодировке UTF-16LE с BOM-сигнатурой должны быть прописаны команды перехода на нужный раздел и загрузки EFI-файла, например:
fs0: \EFI\rosa\grubx64.efi
- UEFI-имена разделов обычно выглядят как
BLKn:
, а для распознанных файловых систем создаются псевдонимыFSn:
, где n — порядковый номер. Список устройств может выводиться на экран при загрузке компьютера (если нет, попробуйте найти нужный номер перебором).
В загрузочном меню UEFI-ROSA отсутствует Windows
Legacy-загрузчик не поддерживается в режиме UEFI, поэтому Windows, установленная в Legacy-режиме, не будет искаться и добавляться в Grub-меню.
Имеющиеся Linux-системы же, напротив, будут корректно добавлены, поскольку для своей загрузки не требуют обращения к Legacy-загрузчику: имеющаяся UEFI-версия Grub2 просто обращается к файлам ядра и initrd напрямую.
С Windows такой механизм невозможен, поэтому для её загрузки необходимо отключать UEFI или явно выбирать загрузку с жёсткого диска через MBR (если в UEFI реализован Legacy-совместимый режим работы).
После установки UEFI-ROSA и переключения в Legacy BIOS перестала грузиться ранее установленная Windows
Эта проблема связана с тем, что загрузчик Windows запоминает идентификатор диска, записанный в MBR. Установка ROSA в UEFI-режиме, по неустановленным пока причинам, может этот идентификатор перезатереть.
В итоге Windows не может найти свой загрузочный диск и падает с ошибкой 0xc000000e
.
Для решения этой проблемы необходимо перед началом установки ROSA проделать следующее:
- Если вы загрузились в Live-режим, то откройте консоль (Konsole); если вы в режиме установки, то переключитесь в терминал (Ctrl+Alt+F2) и залогиньтесь в аккаунт root (пароль не потребуется).
- Выполните команду:
fdisk -l /dev/sda
- Вместо
sda
укажите диск, на котором установлена Windows. На экран должно вывестись что-то вроде следующего:
[root@localhost ~]# fdisk -l /dev/sda Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xcea3e5ff Device Boot Start End Blocks Id System /dev/sda1 * 2048 718847 358400 7 HPFS/NTFS/exFAT /dev/sda2 718848 24680447 11980800 7 HPFS/NTFS/exFAT /dev/sda3 24680448 67108863 21214208 5 Extended /dev/sda5 24682496 28874751 2096128 82 Linux swap / Solaris /dev/sda6 28876800 41459711 6291456 83 Linux
- Нас интересует строчка
Disk identifier: 0xcea3e5ff
. Здесь как раз указан текущий идентификатор, его необходимо куда-то записать. После этого можно возвращаться в инсталлятор (из терминала это делается сочетанием Ctrl+Alt+F1 или Alt+F1) и продолжать установку.
- После завершения установки надо будет загрузиться либо в свежеустановленную ROSA, либо снова в Live-режим и восстановить идентификатор. Для этого открываем консоль и запускаем:
fdisk /dev/sda
- (На этот раз без параметра
-l
и, разумеется, снова указываем правильный диск.)
- Запускается консоль fdisk. Вводим последовательно следующие команды:
- x (вход в режим эксперта)
- i (смена идентификатора диска)
- далее вводим записанный нами ранее код (в примере выше это
0xcea3e5ff
) - r (выход в основной режим)
- w (запись изменений и выход из fdisk)
- Если вы делаете это из установленной системы, программа может вывестись сообщение о невозможности перечитать таблицу разделов. Это нормально, но на всякий случай выполните команду
fdisk -l /dev/sda
, чтобы проверить, что новая метка действительно записалась. - Всё, можно перезагружать компьютер, выключать UEFI-режим и загружать Windows.
А я потерял прежний идентификатор, что делать?
В этом случае есть возможность вытащить старый идентификатор из реестра Windows. Можно воспользоваться какой-нибудь Linux-программой визуального представления реестра, но проще обойтись тем, что под рукой.
- Монтируем основной Windows-раздел в какой-нибудь каталог, например,
/mnt
. - Запускаем
mc
, переходим к файлу /mnt/Windows/System32/config/SYSTEM, открываем его на просмотр (F3). - Открываем диалог поиска (F7), ищем строку
\DosDevices\C:
. - Переключаемся в hex-режим (F4).
- Смотрим на шестнадцатеричные коды в районе найденной строки. Вы должны увидеть примерно следующее (чтобы легче было сопоставить коды с символами, я здесь вытянул всё в одну строку, а символы из правой колонки перенёс под соответствующие коды):
5C 44 6F 73 │ 44 65 76 69 │ 63 65 73 5C │ 43 3A 00 00 │ F0 FF FF FF │ 00 BD 10 B7 ... \ D o s D e v i c e s \ C : . . . . . . . . . . . . . .
- Как видим, сразу после найденной нами строки идут следующие байты (разумеется, в вашем случае они могут отличаться):
00 00 │ F0 FF FF FF │ 00 BD 10 B7
- Пропускаем первые 6 байт, а следующие четыре байта (
00 BD 10 B7
) — это как раз и есть искомый идентификатор, записанный с обратным порядком байтов. Разворачиваем байты в нужном нам порядке, получаем B710BD00. Добавляем префикс 0x и используем этот код (0xB710BD00) в fdisk, как указано выше.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.