UEFI logo.svg

Если у вас есть компьютер, загружающийся в режиме 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 напрямую.


Dell EFI BIOS Editor Select.jpg
Dell EFI BIOS Editor.jpg
Автозапуск командного скрипта из 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 проделать следующее:

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) и продолжать установку.
fdisk /dev/sda
(На этот раз без параметра -l и, разумеется, снова указываем правильный диск.)

А я потерял прежний идентификатор, что делать?

В этом случае есть возможность вытащить старый идентификатор из реестра Windows. Можно воспользоваться какой-нибудь Linux-программой визуального представления реестра, но проще обойтись тем, что под рукой.

MC Edit SYSTEM.png
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, как указано выше.