Включаем поддержку NVMe на старых материнках на примере Asus P9X79 WS

Привет Хабр! В голову мне закралась мысль, и я ее думаю. И придумал. Все дело в жуткой несправедливости производителя, которому абсолютно ничего не стоило добавить модули в 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.
Тут биос версии 4701 для P9X79
Тут биос версии 1704 для P9X79-E WS
Тут биос версии 4701 для P9X79 LE
Тут биос версии 4701 для P9X79 PRO

Средняя зарплата в IT

120 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 7 154 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 27

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

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

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

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

          0

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

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

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

              0
              Редактировал чем-то сильно похожим на ммтул, не помню, но глядя на ваши скрины, как 2 капли воды. Шить оригинальный перед модифицированным не пробовал, хотя мысли такие были и они имеют под собой основания зачастую проверка целостности биоса может не появится в каком -то из старых версий биоса например… Скажем так, для меня в тот момент важно было запустить систему а не провести эксперимент по загрузке с nvme. нужен был второй комп, программаторов под рукой не было. если бы мне не нужен был второй комп я бы обязательно дожал…
                0
                UEFITool скорее всего
                image
                0
                Если не секрет, к каким временам относится огромная коллекция дохлых материнок ASRock?
                  0
                  От 2010 по нынешний, последней сдохла материнка под майнинг — по одному стали отваливаться порты и в конце концов она просто сдохла.
              0
              Эх…
              Увидел заголовок и подумал: «добавить поддержку NVME» + habr = наконец то кто то разродился модификацией под nonUEFi.
              Вроде AMI биосы тоже можно модульно модифицировать, но никто так и не и не добавил NVME :(
                0

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

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

                    Добавлял загрузку с nvme на мать с B75 чипсетом год назад. Отлично работает. Единственный минус в том что PCI-E 3.0 доступен с Ivy Bridge и занят видеокартой. Соответственно под nvme остаётся 4 линии pci-e 2.0 (во всяком случае большинство адаптеров расчитано на 4 линии) что немного обрезает возможную скорость но позволяет воткнуть любой дешевый nvme и не переживать.
                      0
                      6x серия чипсетов, гигабайт ещё делал последние потуги на Award BIOS.
                        0
                        Ну значит мне сильно повезло с Asus.
                        В сущности Ivy Bridge это весьма удачное поколение. Там и Sata 3.0 и USB 3.0 и PCI-E 3.0. Туда ещё есть смысл добавлять nvme, а для прошлых поколений и sata ssd хватит (обычный ssd многое может реанимировать).
                          0
                          Ivy Bridge это весьма удачное поколение, в особенности процессоры на Socket 2011 — наличие 40 PCI-e линий дает возможность юзать помимо видюхи еще и высокоскоростной NVMe без каких-либо компромиссов. Sandy Bridge E так же имеет 40 линий, но редакция PCI-e там 2.0 (Core i7-3820). К тому же 4-х канальный контроллер памяти тоже примечательная вещь.
                            0
                            lga 2011 это в подавляющем большинстве случаев хуанан + списанный xeon.

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

                            P.S. китайский lga 2011 хлам (дешево поиграть, посчитать, поиграться с прошивками — сойдёт (впрочем там уже lga 2011-v2 в тренде), но лучше уж ryzen. как обладатель x79-p3 + e5-2650 v2 говорю.
                              0
                              В подавляющем, но не в моем, слава богу. Xeon E5-2687v2 (да, списанный, но даже виртуализация не поломана) + P9X79 WS + 32GB Corsair XMS3 1600 + NVMe Samsung EVO Plus 1Tb, Windows server 2019 — какая в пень рязань, не умею я их готовить…
                    0
                    Если интересно — после того, как вкорячу поддержку в AWARD, могу написать статью про то, как можно хоть третий пень затюнить каким-нибудь NVMe SSD без всяких дополнительных загрузочных устройств.
                      0
                      habr.com/ru/post/481252/#comment_22271330 — я подозреваю что этот комментарий будет вам интересен.
                      +2
                      Кстати говоря, сейчас осуществил вариант, о котором писал в нескольких темах: добавил поддержку загрузки с NVME в legacy bios (AMI 8), который даже не слышал про NVMe и UEFI. Подопытные кролики — ASUS P5KLP-SE (в роли материнской платы) и Toshiba RC100 (в роли NVMe SSD).
                      Небольшое HOW-TO для тех, кто захочет повторить этот маразм:
                      1) Читаем тему на win-raid.com
                      2) Скачиваем архив из первого поста в ней.
                      3) Записываем VID/DID NVMe носителя, который планируем использовать. (Либо ищем в гугле, либо, что более надёжно, вставляем в материнку через переходник m.2 to pci-e, грузим линукс какой-нибудь и записываем нужные цифры из вывода lspci -n)
                      4) При помощи OpRomCfg.exe (или путём редактирования NvmeOpRom.bin, если не под виндами или руками привыкли всё делать) вписываем в прошивку значения из п.3 и контрольную сумму.
                      5) Если у вас AMI, то берём MMTool 3.19/3.22 и добавляем полученный опром. Если AWARD — то лучше заранее приготовить программатор, т.к. авард славится косяками своих родных утилит и часто ими убивает прошивку, но можно попытаться найти cbrom, который будет работать с вашей прошивкой нормально. Если Phoenix/Insyde — то всё совсем плохо.
                      6) Делаем бэкап прошивки.
                      7) Прошиваем полученный в п.5 образ
                      8) Заходим в меню выбора загрузочных устройств и наслаждаемся строчкой вида «NVME 01:00.00.1»
                      9) Ставим Windows 7 с добавленными дровами/Windows 8/Windows 10/Любимый дистрибутив линукса
                      10) Наслаждаемся жизнью без всяких Clover и воткнутых на постоянной основе флешек.
                        0
                        Отличная работа.
                        У Вас там не Xeon часом?
                          +2
                          Эта проверка была предварительной — насколько оно вменяемо получается. Следующий шаг будет в интеграции этого OpRom-а в AWARD BIOS на промышленной встраиваемой плате (С установленным Atom D510), причём уже совершенно в наркоманском режиме — miniPCIe->m.2 (т.е PCIe Gen. 1 x1), от чего и выбирался сам NVMe носитель (т.к. других (именно NVMe, а не SATA) в формате 2242 я в природе не встречал. Судя по поиску — народ таким образом даже Intel Optane заводил. А процессор там стоит Core 2 Duo, плата из парка тестовых плат, для прогона всякого разрабатываемого PCIe железа.
                          П.С. Любители извращений на полную катушку могут попробовать интегрировать в Windows XP неофициальные дрова для поддержки NVMe и попытаться поставить на такое решение её. Если этих извращений мало — поставить NVMe через переходник на классический PCI 32Bit, и взгромоздить это дело на Pentium-2/3.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое