Короткий мануал — как реализовать поддержку загрузочного NVMe SSD на старых материнских платах с Legacy BIOS и с использованием Clover (для любых ОС). По следам вот этого поста, где на мой взгляд, решение не так изящно и не для всех BIOS & OS.


Суть проблемы


Старые BIOS не видят новые NVMe SSD, в отличии от EFI (UEFI). Современные ОС эти диски, как правило, видят, и после загрузки ОС работать с диском можно, а вот старый BIOS нет, следовательно, загрузиться с нового быстрого диска не получится. Ну, потому что нельзя дать команду на загрузку тому, чего не видно.

Прелюдия


NVMe SSD диск, как правило, имеет разъем М.2, и работает как бы на прямую с процессором, по шине PCI-E.

Поэтому если на вашей материнской плате нет разъема М.2, то для начала рекомендуется обзавестись переходником PCI-E >> М.2, или PCI-E RAID контроллером для SSD формата М.2.

Существует немного продвинутых NVMe SSD дисков, которые имеют на борту собственные эмулятор Legacy устройства. Например Samsung 950 Pro имеет дополнительный rom для загрузки как Legacy устройство на старых BIOS. А вот вся серия EVO такой возможности не имеет.

Решение


Немного истории


Много лет назад, когда компания Intel стала поставлять Apple свои процессоры и компоненты для применения в Маках, возникла потребность предварительного тестирования железа на совместимость с MacOS. Тогда инженеры Intel написали хитрый загрузчик DUET, который представляет собой эмулятор UEFI, загружаемый поверх Legacy BIOS и позволяющий запускать операционные системы, требующие UEFI (MacOS, например).

Однако использовать DUET «напрямую» задача весьма не тривиальная (пример, или вот еще, б-ррр...), требующая массу ручных операций, зависящих от конкретного железа и ОС, и понимания того, что именно вы делаете.

В дальнейшем, DUET был взят за основу для нескольких проектов по созданию мульти-загрузчиков. Один из них Hackintosh — проект по установке последних MacOS на любые Intel, а в последствии и AMD машины. В результате развития Hackintosh появился многофункциональный загрузчик Clover (Клевер), который заточен, разумеется, под загрузку MacOS и Intel, но сейчас может с успехом применяться для загрузки чего угодно на, практически, чём угодно. Вот им, Клевером, мы и воспользуемся для решения нашей проблемы.

Clover Configurator


Клевер сам по себе настраивается тоже не абы как, и для того, чтобы как-то облегчить в дальнейшем процесс тюнинга, была выпущена настроечная утилита Clover Configurator, и множество мануалов по использованию.

Но беда в том, что Clover Configurator работает только в MacOS, и на Windows вы его, в лучшем случае, запустите только в VmWare.

Web-конфигуратор для Clover
Некоторые пользователи рекомендует воспользоваться вместо Clover Configurator web-конфигуратором для Clover. Правда не факт, что прессет для вашей MB будет в списке. А документация по Клеверу объемна и подробна. Но, попробуйте, а вдруг.

Так же ходят слухи (в комментах), что сам автор Клевера (SergeySlice) не рекомендует использовать Clover Configurator а рекомендует редактировать конфигурационный файл руками.

Не пойдем этим путем… у нас лапки и Мастдай.

Boot Disk Utility (BDUtility.exe)


Специально для тех, у кого лапки, один русский энтузиаст написал утилиту BDUtility.exe, которая сама скачивает последний релиз Clover, делает необходимые минимальные настройки и записывает полученный образ на флешку.

Не пугайтесь вырвиглазного сайта, утилита работает отлично :-)

Для загрузки утилиты нажмите на картинку с буквами «Bu» и синей стрелкой, посредине сайта :-)

Примечание


Для решения нашей проблемы мы будем использовать дополнительную загрузочную флешку, с которой поверх BIOS будет загружаться Clover, идентифицировать ваш новый быстрый NVMe SSD и передавать ему команду на загрузку вашей новенькой 64-битной Windows 10 (или любой другой).

Отныне флешка навсегда будет установлена в свободном USB порту вашего компьютера, до тех пор, пока вы обновите старое железо!

Да, у кого ноутбук, тот должен озаботиться тем, что свободных портов USB мало, а длинная флешка, все время торчащая из ноута, может оказаться не достаточно эстетичной.

С другой стороны, теперь ваша флешка является крутейшим ключом защиты к вашему компьютеру, ибо без него комп просто не включится, а догадаться, что флешка должна БЫТЬ, да еще и с Клевером — это задача для истинных спецслужб.

Если остался лишний SATA диск...
Теоретически, можно попробовать поставить Clover на лишний SATA диск или даже карту памяти, если таковые имеются в системе и с них поддерживается загрузка (у меня дисков не осталось, снес все, жужжат, а с карт памяти опции загружаться не было и нет). Во всяком случае документация по Клеверу такое допускает. Однако, в этом случае придется вручную поколдовать с загрузочной областью.

Создание установочной флешки


Если вам удалось загрузить утилиту BDUtility — запустите ее. Она запускается под Windows и с правами администратора, будьте внимательны.

Счастливым обладателем других операционных систем стоит пропустить этот пункт и вернуться к Clover Configurator выше.

Запускаем BDUtility.exe


Далее следует выполнить ряд настроек, чтобы утилита загрузила последний дистрибутив Clover, настроила его и записала на вашу флешку. Флешка должна быть вставлена в USB-порт, и желательно начисто отформатирована.

Примечание


В настоящий момент утилита BDUtility забирает релизы Clover с сайта sourceforge.net, где размещены релизы вплоть до версии Clover_v2.5k_r5070.zip. После этого разработка Clover была перенесена на GitHub, где сейчас размещен релиз Clover_v2.5k_r5097.zip. Учтите это в работе. BDUtility может опционально пользоваться предварительно скаченными релизами Clover (но совместимыми с BDUtility), если вам необходимо использовать именно последний релиз.
Мы отправили запросы разработчикам Clover и BDUtility с просьбой прокоммуницировать между собой и переключить BDUtility на GitHub.

Настройка BDUtility:


  1. Убедитесь, что ваша флешка определилась утилитой
  2. Зайдите в настройки утилиты Options => Configuration
  3. Поставьте галочку Check at Startup, чтобы новая версия Clover проверялась при каждой загрузке
  4. Нажмите кнопку Check Now, чтобы загрузить последний релиз Clover прямо сейчас
  5. (опционально, рекомендация) Уберите галочку Boot Partition Size, чтобы весь объем вашей флешки был отведен поз загрузчик Colver, в противном случае вы будете видеть дополнительные диски (незанятые и не размеченные разделы флешки) в «Моем компьютере», что через какое-то время начнет вас раздражать
  6. Нажмите ОК
  7. Нажмите кнопку Format, изучите конфигурацию создаваемого загрузчика и нажмите ОК
  8. Ожидайте положительного результата (сядь на печку, приободрись...)

Теперь, когда флешка готова, попробуйте с нее загрузиться. Не забудьте настроить в BIOS загрузочный диск => ваша флешка.

Если загрузка произойдет, на экране должна появиться примерно такая картинка, с перечнем текущих вариантов загрузки. Можете попробовать найти вашу загрузочную запись и загрузить текущую ОС.



Драйвера NVMe


Если ваш NVMe SSD диск уже вставлен в компьютер, не пытайтесь его найти в настройках Clover — его там нет. Дело в том, что по-умолчанию Clover не загружает драйвера для NVMe устройств. Драйвера необходимо включить в загрузку вручную.

Для этого открываем флешку в проводнике.

Заходим в папку G:\EFI\CLOVER\drivers\off (где диск «G» — это ваша флешка, а папка «off» — это папка с не подключенными драйверами Клевера).

Находим файл NvmExpressDxe.efi

Нажимаем Ctrl + C, чтобы скопировать файл в буфер обмена, и копируем файл в папки G:\EFI\CLOVER\drivers\BIOS и G:\EFI\CLOVER\drivers\UEFI. Копируем на всякий случай в обе папки, чтобы не разбираться, какой у вас сейчас биос, старый BIOS или старый UEFI.

Перезагружаем компьютер, загружаемся с флешки-Clover и наблюдаем за количеством иконок на экране, обозначающих варианты загрузки — их должно стать больше, ибо теперь Clover видит ваш NVMe SSD.
Пол дела позади!

Установка новой ОС на новый NVMe SSD диск


Далее, чтобы воспользоваться преимуществом загрузки с быстрого NVMe SSD нам необходимо, собственно, поставить на него систему. И тут есть нюанс. Чтобы в дальнейшем не возникло проблем с попытками загружаться именно с вашего NVMe диска из-под Клевера, крайне рекомендуется не переносить вашу текущую систему на новый диск, а установить на NVMe диск новую систему с нуля. Проблема восходит корнями к типу загрузчика вашей операционной системы, который был выбран и использован при ее установке на компьютер. Если сейчас у вас система с BIOS без поддержки NVMe то и текущей загрузчик ОС ориентирован на BIOS, а не на EFI.
Именно этому загрузчику Clover передает управление, причем в режиме эмуляции EFI. Для справки, клеверный загрузчик моей Win64 лежит на клеверной флешке здесь G:\EFI\BOOT\BOOTX64.efi
Перенести такую ОС на NVMe диск и использовать для загрузки в режиме EFI просто так не получится, потребуется вручную сменить загрузчик ОС, а это трудоемко, не вполне оправданно и чревато, имхо.

Поэтому смело запасаемся лицензионным ключом от новой ОС (ну, или находим, где старый) и идем на страничку загрузки Media Creation Tool, чтобы сделать загрузочный диск вашей операционной системы Windows. Дело в том, что с некоторых пор Микрософт стал сам включать оба загрузчика BIOS и EFI в образ, создаваемый Media Creation Tool. И теперь эта загрузочная флешка может загружаться абсолютно на любых системах с Legacy BIOS, UEFI и EFI. А раньше приходилось обрабатывать полученный загрузочный образ и интегрировать в него Rufus, для загрузки в режиме EFI (пример, промотать до середины).

Примечание


Да, вам понадобится вторая загрузочная флешка, чтобы установить ОС на NVMe SSD.
Нет, на флешку с Clover дистрибутив Windows записать не получится.

Установка ОС


Установка операционной системы на новый NVMe SSD происходит вполне штатно и быстро.
Вам необходимо загрузиться с двумя вставленными флешками, причем загрузиться с клеверной флешки, а не с дистрибутива Windows, не перепутайте.

В интерфейсе Клевера найдите загрузку с флешки с дистрибутивом вашей ОС. Далее должна начаться установка ОС. В какой-то момент система перезагрузится (вы же ставите Windows), и вам придется выбрать для продолжения уже загрузку с вашего NVMe SSD, опять же не перепутайте! Не выбирайте повторно загрузку с дистрибутива ОС, иначе установка просто начнется заново, а нам нужно чтобы она продолжилась с SSD и, желательно, завершилась.

После установки новой системы на ваш новый NVMe SSD, в Clover появится запись, что из-под него была установлена новая ОС. Также иконка загрузки новой ОС должна появиться первой в списке загрузок, и, если я ничего не путаю, то называться она будет «Boot Microsoft EFI Boot from EFI».



И после окончательной установки ОС выньте флешку с ее дистрибутивом, чтобы она не отображалась больше в Клевере и в «Моем компьютере».

А в вашем BIOS порядок загрузки дисков должен всегда начинаться с клеверной флешки, пока не обновите железо до поддержки EFI.

Тогда, и только тогда, вы сможете гордо поставить первым ваш, к тому времени уже постаревший, NVMe SSD!.

Вот, собственно, и все


Теперь при каждой перезагрузке вы будете попадать в интерфейс Clover, и нажимать на клавишу Enter (если ваша ОС стоит в списке первой). Зато потом наслаждаться новой системой и быстрым SSD :-)

Мне, к сожалению, в отсутствии Clover Configuator так и не удалось настроить Клевер, чтобы он автоматически загружал мою ОС, например спустя 5 сек. бездействия. Чтобы каждый раз не нажимать клавишу Enter. Но такая опция в Клевере разумеется есть.

Буду признателен, если кто-то знает как вручную, без конфигуратора, настроить такой режим загрузки. Файл настроек Клевера обычно лежит здесь G:\EFI\CLOVER\config.plist
Говорят, что за эту опцию отвечают теги:

<key>Timeout</key>
<integer>5</integer>
и
<key>DefaultVolume</key>
<string>LastBootedVolume</string>

В первом указывается время задержки перед автозагрузкой, а во втором — id диска с которого мы хотим грузиться по умолчанию, или значение LastBootedVolume, в котором запоминается id последнего диска, с которого производилась загрузка.

Но у меня почему-то не работает :-(

Есть подозрение, что с этими значениями какой-то лаг в Клевере на AMD. То ли таймер не считает, то ли LastBootedVolume не запоминается, но не уверен.

THE END


P.S.
Но если бы вы изначально заплатили чуть побольше, и купили бы не переходник PCI-E >> М.2, а Raid контроллер для M.2 дисков, то вам бы не пришлось читать все вышенаписанное, и тем боле все это делать… Потому что Raid контроллер имеет сою собственную микросистему и эмулирует (или имитирует) себя как Legacy устройство, делая доступными все вставленные в него диски во всех биосах, старых и новых.


UPD
Пользователи alpha_ds и walkman7 любезно дополнили пост тегом DefaultVolume и ссылкой на web-конфигуратор Clover.
Спасибо igrblkv за наводку на CloverGitHub .

Комментарии (31)


  1. Sly_tom_cat
    20.10.2019 19:13

    Если для старого BIOS еще и нужна прослойка что бы загрузить NvmExpressDxe.efi, то если есть UEFI, то UEFI умеет без всяких прослоек грузить недостающие драйвера со своего EFS раздела.

    Т.е. нужно устройство которое видит UEFI, на нем создается EFS раздел — драйвер кладем на него и прописываем в менеджер загрузки UEFI загрузку этого драйвера. Тогда после загрузки уже будет видно устройство NVME.

    Под Linux для создания загрузочной записи UEFI для драйвера есть улилита efibootmgr. Если после загрузки драйвер не активируется то efibootmgr надо собрать из мастер ветики Github — там уже добавлена возможность активировать пере-подсоединения драйверов после загрузки.


    1. Sterpa Автор
      20.10.2019 19:21

      Все верно. Но я тут просто свой клинический случай рассматриваю, старый BIOS, мать без слота M.2, PCI-E 1x, AMD, Мастдай и Eclipce (собственно, ради скорости которого все это и было провернуто через самые фибры души). Конечно, если клинический букет был бы меньше, то и жисть была бы светлее))


    1. dartraiden
      20.10.2019 23:02

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

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

      Потенциальные грабли, в общем, при том, что встроить драйвер непосредственно в UEFI-прошивку не очень трудно, если следовать руководствам с картинками. Если такой возможности нет (допустим, обновлять прошивку может лишь вендор, имеющий приватный ключ), то да, как обходной путь сойдёт.


      1. Sly_tom_cat
        21.10.2019 00:28

        Если обсуждать безопасность, то атакующий с доступом к железу и без того имеет кучу векторов атаки. От него спасет только надежное шифрование всех критичных данных.

        EFS раздел имеет вполне определенную структуру и там что винда, что linux свои загрузкики размещают совершенно спокойно друг с другом не пересекаясь. Но обновления винды это вообще дизастер с чертями и плясками.

        Встраивать в прошивку и перепрошивать — в целом гораздо более рискованное занятие, чем догрузить драйвер с EFS не трогая прошивку. Собственно UEFI специально затачивалась на то что бы уметь загружать с EFS все что нужно для дальнейшей загрузки ОС. Это и драйвера (остаются резидентно) и утилиты (загружаются только на время работы) и загрузчики ОС (если репортят об успехе, то уже не возвращают управление в UEFI).


      1. Sly_tom_cat
        21.10.2019 11:35

        И да, от подмены драйвера есть SecureBoot: добавить ключ, и подписать драйвер — профит: подменить драйвер не получится…

        Но это все все равно не отменяет других возможностей локально атакующего, например тупо извлечь диск и слить с него инфу на другом компе.


        1. JerleShannara
          21.10.2019 17:02

          При такой реализации можно усложнить жизнь взломщика/вора. Например полное шифрование носителя с ключём, который лежит на этой самой клеверной флешке.


          1. Sly_tom_cat
            21.10.2019 17:53

            Если бы вы потрудились прочитать мой самый первый комментарий, то речь шла о том, что клевер — не нужен для компа в котором есть UEFI. И мы тут обсуждали именно такой кейс.

            Если в компьютере никакого другого носителя кроме не поддерживаемого «из коробки» NVME нет — то да, нужна флешка, чтобы на ней организовать EFS раздел для UEFI. Но если есть другой (поддерживаемый) носитель, то тогда и флешка особо не нужна.

            А организация шифрования данных пользователя — это отдельный большой вопрос, который несколько выходит за рамки обсуждаемых тут решений.


  1. alpha_ds
    20.10.2019 21:18
    +2

    Прошел почти тот-же путь.
    Для автозагрузки, кроме Timeout нужно еще прописать в DefaultVolume


    в котом id загрузчного раздела

    И еще я перенес раздел созданный BDU на sata диск.
    Там немного нюансов было с пропиской загрузочной области, но в общем ничего особенного.
    Так избавился от постоянной флешки.


    1. Sterpa Автор
      20.10.2019 21:23

      Отлично! Респект за подсказку, попробую, отпишусь. А где точно узнать id диска? Я помню, что что-то прописывал, но видать не то, или не в том формате.
      У меня, к сожалению, sata дисков не осталось, все снес, чтобы не жужжали. Что за нюансы с загрузочной областью, можно вкратце?


  1. walkman7
    20.10.2019 21:54
    +1

    Для автора:
    1. У Кловера отличная документация, с нее нужно было начинать знакомство.
    2. Для конфигурации «не руками» можно использовать веб конфигуратор cloudclovereditor.altervista.org/cce/editor.php
    3. Для загрузки без Enter, можно использовать в DefaultVolume значение LastBootedVolume.

    P.S. Очень сыро


    1. Sterpa Автор
      20.10.2019 22:10

      Конкретно у меня LastBootedVolume значение не работает, сейчас оно как раз и стоит. У меня есть подозрение, что с этим значением какой-то лаг в Клевере, когда SSD подключается через переходник PCI-E >> M.2 да еще в режиме PCIe1x.
      За Web-конфигуратор спасибо, я его видел краем глаза, но для моей матери прессета не нашел. Поэтому не рискнул.
      А так конечно выглядит для специалиста многообещающе. Добавляю в статью и тег и ссылку.

      У нас сыро, но лапкам тепло)) Пост же не про тонкую настройку Клевера. Для этого есть и документация и пламенный энтузиазм.


  1. GamePad64
    21.10.2019 00:41

    У меня материнка с UEFI, но без поддержки NVMe. Прошёл более рискованный путь: вшил драйвер NVMe в саму UEFI-прошивку по инструкции (для каждого производителя UEFI немного по-разному). Теперь есть возможность загружаться напрямую с SSD без промежуточных загрузчиков.


    1. Dmitri-D
      21.10.2019 07:42

      А что делать тем, у кого биос подписан?
      Т.е. сам факт того что вы смогли модифицировать биос говорит о том, что он не имеет цифровой подписи, т.е. не защищен.


      1. smilyfox
        21.10.2019 08:18

        Asus подписывается утёкшим ключом


        1. Dmitri-D
          21.10.2019 15:37

          Можете дать ссылку как модифицировать подписанный Асусовкий биос?


          1. JerleShannara
            21.10.2019 17:04

            Поищите на mydigitallife


    1. General_Failure
      21.10.2019 07:45

      А разъёма на матплате тоже нет, и подключали через переходник pcie — nvme? Если так, можете скинуть ссылки на мануалы, по которым вы действовали?


      1. GamePad64
        21.10.2019 10:12

        Да, разъема нет. Поставил переходник PCIe x4 -> NVMe. Мать: Gigabyte ga-970a-ds3p fx
        Действовал вот по этому мануалу. По идее, он подойдёт всем владельцам AMI UEFI, но точно сказать нельзя, и делать это стоит на свой страх и риск.


        1. General_Failure
          21.10.2019 10:15

          Спасибо! Будет время — займусь.


          1. Dmitri-D
            21.10.2019 15:42

            Прежде чем это делать убедитесь что чип с биосом на колодке, т.е. извлекаемый, и что он есть в продаже для вашей материнке.
            Это план Б на случай если произойдет сбой. А практика показывает, что сбои происходят.


        1. shogunkub
          21.10.2019 13:20

          Делал аналогично, по этому же мануалу. Более рискованный способ, но более удобный после того, как всё сделаешь, т.к. развалить загрузку в этом случае практически нереально. Учитывая, что у меня есть программатор SPI-флешек, риск был минимальный.


  1. vaslobas
    21.10.2019 01:14

    Автор Кловера (Slice) не рекомендует использовать Clover Configurator, а рекомендует редактировать руками.


  1. Dmitri-D
    21.10.2019 07:43

    вместо флешки лучше использовать 10ГБ sata SSD, который стоит копейки. Его к тому же можно сделать невидимым для ОС, чтобы не мешался.


  1. rPman
    21.10.2019 08:33

    Если есть флешка значит можно водрузить grub! и половину системы в придачу туда же вкорячить.

    Так зачем что то еще?

    p.s. на ноуте можно использовать карту памяти (картридер почти на всех есть)


    1. Sterpa Автор
      21.10.2019 11:25

      У меня ноуты Сони и Леново, в их биосах нет опции грузиться с карт памяти… Вероятно, это не для всех.


  1. OpenMind4423
    21.10.2019 09:17

    Чем это лучше Plop Boot manager? Который можно чуть ли не на дискету записать и стартовать с старого компа так же?


  1. igrblkv
    21.10.2019 09:47

    Clover_v2.5k_r5071.zip:
    You are in the wrong place, go here
    github.com/CloverHackyColor/CloverBootloader/releases

    PS: Clover of Hacky Color_5000_rus.pdf — документация на русском!

    PPS: Кто-нибудь может связаться с автором BDUtility, что-бы обновить её поиск новой версии по новому адресу? Или она не поддерживается уже? Что-то я на сайте не нашел контактов, а applelife — не мой профиль…
    UPD: Нашел почту, отписался, не знаю рабочая-ли, правда…


    1. Sterpa Автор
      21.10.2019 11:27

      Тоже отправили уже, и в Клевер и в BDUtility.
      Ссылку на гит добавил в пост.
      Спасибо за наводку!


  1. KirovReporting
    21.10.2019 12:17

    Извиняюсь за оффтоп, но проблема насущная. Ввиду дрязг между Nvidia и Apple, нет возможности завести последние macOS на видеокартах серии 1xxx и 2xxx. Интересует каким образом можно разрабатывать под ios 13 с видеокартой этих серий. Может кто этим занимается, мне бы очень не помешала помощь.
    Максимум чего я добился — это установка High Sierra, веб-драйвера на видеокарту и Xcode 10.3, но поддержки ios 13 в нем нет. Пробовал вручную добавлять платформы в пакет Xcode, но он их отказывается воспринимать.


    1. bisquitie
      21.10.2019 14:29

      Купите RX580 за 100 баксов и разрабатывайте на здоровье.


  1. Compiller
    21.10.2019 16:16

    А чего не вшить кловер в Legacy BIOS? с PLOP вроде нечто подобное делали…