Привет Хабр! В голову мне закралась мысль, и я ее думаю. И придумал. Все дело в жуткой несправедливости производителя, которому абсолютно ничего не стоило добавить модули в UEFI Bios для поддержки загрузки с NVMe через переходники на материнках без слота m.2 (что, к стати, без вопросов реализовано китайцами на материнках HuananZhi). Неужели не возможно — подумал я и стал копать. Нарыл кучу нерабочих советов, пару раз окирпичил материнку, но я добился своего. В этой статье я почерпнул львиную долю полезной информации. Но и тут достаточно много подводных камней. Например совершенно не ясно в какой индекс записывать модули. Итак, начнем модифицировать наш биос. Внимание! Данный материал применим ТОЛЬКО к AMI Aptio Bios и ни к одному другому, так что если у вас не оно — смело проходите мимо.

Для начала скачаем инструменты. Распаковав в удобную папку скачаем биос от ближайшей модели с поддержкой NVMe (Для P9X79 это Sabertooth X99) и оригинальный биос для нашей материнки. Кладем скаченные биос в папку с инструментами, запускаем MMTool и открываем биос с поддержкой NVMe:

2019-12-19-22-43-36

Затем идем на вкладку Extract, находим и извлекаем нужные нам модули (NvmeInt13, Nvme, NvmeSmm), имена набираем идентичные с расширением .ffs и жмем Extract, опции оставляем «As is»:

2019-12-19-22-54-15

Когда все модули извлечены, открываетм командную строку от администратора и идем в папку с инструментами\AFUWINx64

Там снимаем дамп:

afuwinx64.exe Extracted.rom /O

Переходим к MMtool и открываем наш дамп.

2019-12-19-23-02-28
Переходим на вкладку Insert и ОБЯЗАТЕЛЬНО кликаем в поле на индекс 02 (для разных материнок индексы могут отличаться, смотрите на индекс, в котором изначально лежали модули NVMe и сравнивайте содержимое с целевым Bios).

2019-12-19-23-07-16

Далее жмем Browse и находим наши извлеченные модули:

2019-12-19-23-09-52

Нажимаем Insert (опция «As is») и повторяем действие для остальных модулей, соблюдая порядок, как в биос с поддержкой NVMe (У меня NvmeInt13, Nvme, NvmeSmm). Затем находим наши новые модули в списке дабы убедится что все они на месте и в правильном порядке:

2019-12-19-23-16-07

Жмем Save Image As и сохраняем модифицированный биос в папку AFUWINx64. В ту же папку помещаем оригинальный биос нашей материнки и приступаем к прошивке. Сначала шьем оригинальный биос, дабы обойти защиту:

afuwinx64.exe P9X79-WS-ASUS-4901.CAP

Затем шьем наш модифицированный:

afuwinx64.exe P9X79-WS-ASUS-4901-NVME.rom /GAN

Соответственно имена файлов подставляем свои. После перезагрузки наш биос будет уметь загружаться с NVMe.

ВСЕ ДЕЙСТВИЯ ВЫ ПРОДЕЛЫВАЕТЕ НА СВОЙ СТРАХ И РИСК, АВТОР МАТЕРИАЛА НИКАКОЙ
ОТВЕТСТВЕННОСТИ НЕ НЕСЕТ!


ТУТ можно скачать собранный мной рабочий биос для Asus P9X79 WS версии 4901 с поддержкой NVMe.

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


  1. dartraiden
    20.12.2019 02:14

    Я бы добавил, что если возникают трудности с подбором похожих плат, то можно взять модуль NvmExpressDxe от проекта TianoCore.


    1. Stealch Автор
      20.12.2019 07:08

      Я пробовал изначально добавлять сторонние модули, но получил кирпич, именно по этому я и стал выдерать модули из материнок с идентичным биос. В этом случае все прошилось нормально. Эксперементировать я больше не буду, дабы не нарушать первое правило системного администратора.


      1. Nikobraz
        20.12.2019 11:18

        Я для прошивки биоса просто отдельную микросхему купил, аналогичную стоявшей.
        Копейки же стоят. И шил программатором, всегда мог на ноуте перепрошить.


        1. Stealch Автор
          20.12.2019 19:06

          Меня бог миловал от таких плясок с бубном, спасибо Asus. Моя материнка способна перешить биос даже без процессора и оперативки с флешки.


  1. Dmitri-D
    20.12.2019 04:58

    Пытался подобное на своём Z77 — после прошивки нового образа, с последующей перезагрузкой и скачиванием содержимого биоса, оказывалось, что образ не поменялся.
    Окирпичить тоже удалось разок. На всякий случай прикупил в калифорнии две пзухи.
    С тех пор бучусь через кловер, но с оригинальным биосом. Не так красиво, но в принципе работает, т.е. 7е винюки бутятся с NMVE (Samsung 970 pro).


    1. Stealch Автор
      20.12.2019 07:14

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


    1. VelocidadAbsurda
      22.12.2019 21:07

      Переделывал Asus P8Z77-V deluxe, заработало. Перешивал «аварийным» способом — файл с определённым именем на флешке в определённый порт, в таком режиме меньше проверок, прошилось и работало.


  1. A1exXx
    20.12.2019 06:38

    Ну информации на данный момент прилично в интернете как бутится. Сам я делаю это через кловер, может не очень красивый, но простой и универсальный способ. мать асрок. биос uefi но старый. биос поддаётся модификации, но записать потом его не получается, так как он не проходит проверку целостности. Как её пройти — одному асроку известно… или видимо через программатор.


    1. Stealch Автор
      20.12.2019 07:20

      Ну я всегда крайне негативно относился к материнкам ASRock по собственному опыту и огромной коллекции трупов материнок данной фирмы. Вы пробовали шить первым оригинальный биос и без перезагрузки заливать мод, как я написал в статье? Индекс, в который добавляется модуль правильный? Редактировали биос чем?


      1. A1exXx
        20.12.2019 11:11

        Редактировал чем-то сильно похожим на ммтул, не помню, но глядя на ваши скрины, как 2 капли воды. Шить оригинальный перед модифицированным не пробовал, хотя мысли такие были и они имеют под собой основания зачастую проверка целостности биоса может не появится в каком -то из старых версий биоса например… Скажем так, для меня в тот момент важно было запустить систему а не провести эксперимент по загрузке с nvme. нужен был второй комп, программаторов под рукой не было. если бы мне не нужен был второй комп я бы обязательно дожал…


        1. Nikobraz
          20.12.2019 11:19

          UEFITool скорее всего
          image


      1. drWhy
        20.12.2019 18:51

        Если не секрет, к каким временам относится огромная коллекция дохлых материнок ASRock?


        1. Stealch Автор
          20.12.2019 18:58

          От 2010 по нынешний, последней сдохла материнка под майнинг — по одному стали отваливаться порты и в конце концов она просто сдохла.


  1. Capacitor10n
    20.12.2019 08:52

    Эх…
    Увидел заголовок и подумал: «добавить поддержку NVME» + habr = наконец то кто то разродился модификацией под nonUEFi.
    Вроде AMI биосы тоже можно модульно модифицировать, но никто так и не и не добавил NVME :(


    1. Stealch Автор
      20.12.2019 10:04

      Да, к сожалению это прискорбно.


    1. JerleShannara
      20.12.2019 20:20

      nonUEFI наводит на времена Core iX 1-2-3 поколений и раньше. Sandy/Ivy-Bridge семейства и раньше, что вполне себе даёт решение — портирование coreboot на эти платы. Payload-ом при этом выбирается SeaBIOS, который уже несколько лет как умеет грузиться с nvme. Для успешного порта надо снять полные дампы настроек SIO, GPIO и прерываний. Также желательно, чтобы на материнке был com порт.


      1. avalak
        20.12.2019 21:54

        Материнки под sandy/ivy bridge уже шли с uefi bios.
        В сущности там даже на бытовые/офисные чипсеты поддержка nvme через модификацию bios спокойно добавляется.

        Добавлял загрузку с nvme на мать с B75 чипсетом год назад. Отлично работает. Единственный минус в том что PCI-E 3.0 доступен с Ivy Bridge и занят видеокартой. Соответственно под nvme остаётся 4 линии pci-e 2.0 (во всяком случае большинство адаптеров расчитано на 4 линии) что немного обрезает возможную скорость но позволяет воткнуть любой дешевый nvme и не переживать.


        1. JerleShannara
          20.12.2019 23:36

          6x серия чипсетов, гигабайт ещё делал последние потуги на Award BIOS.


          1. avalak
            20.12.2019 23:53

            Ну значит мне сильно повезло с Asus.
            В сущности Ivy Bridge это весьма удачное поколение. Там и Sata 3.0 и USB 3.0 и PCI-E 3.0. Туда ещё есть смысл добавлять nvme, а для прошлых поколений и sata ssd хватит (обычный ssd многое может реанимировать).


            1. Stealch Автор
              21.12.2019 09:22

              Ivy Bridge это весьма удачное поколение, в особенности процессоры на Socket 2011 — наличие 40 PCI-e линий дает возможность юзать помимо видюхи еще и высокоскоростной NVMe без каких-либо компромиссов. Sandy Bridge E так же имеет 40 линий, но редакция PCI-e там 2.0 (Core i7-3820). К тому же 4-х канальный контроллер памяти тоже примечательная вещь.


              1. avalak
                22.12.2019 20:28

                lga 2011 это в подавляющем большинстве случаев хуанан + списанный xeon.

                1. пользы от большого объёма оперативки и/или nvme больше чем от теоретической скорости последовательного чтения.
                2. задач где nvme проявит себя и не упрётся в процессор не так много и их ещё поискать надо.
                3. я бы посмотрел на того кто в здравом уме к xeon/huanan будет дорогой nvme ставить.

                P.S. китайский lga 2011 хлам (дешево поиграть, посчитать, поиграться с прошивками — сойдёт (впрочем там уже lga 2011-v2 в тренде), но лучше уж ryzen. как обладатель x79-p3 + e5-2650 v2 говорю.


                1. Stealch Автор
                  22.12.2019 21:23

                  В подавляющем, но не в моем, слава богу. Xeon E5-2687v2 (да, списанный, но даже виртуализация не поломана) + P9X79 WS + 32GB Corsair XMS3 1600 + NVMe Samsung EVO Plus 1Tb, Windows server 2019 — какая в пень рязань, не умею я их готовить…