У першій частині нашого матеріалу ми дізналися, як використовувати як завантажувальний накопичувач NVME на старих материнських платах, що не підтримують нативного завантаження з NVME. Тепер же розглянемо ще один, більш «елегантний і правильний» спосіб — модифікацію біоса.
За і проти
Суть модифікації в тому, що ми додаємо в рідний біос материнської плати EFI-модуль, або Option ROM, для підтримки NVME-накопичувачів.
Чому цей спосіб більш правильний, ніж використання менеджерів завантаження? Ви уникаєте використання додаткового програмного прошарку: ніякого збільшення часу завантаження, колупання в конфігураційних файлах, використання флешок або інших носіїв для розміщення завантажувача. З точки зору користувача, процес завантаження операційної системи (ОС) ніяк не змінюється.
Але нічого ідеального не буває, так і тут є свої мінуси. Насамперед, це рівень підготовки користувача. Залежно від ситуації, можуть знадобитися певні знання і вміння. По-друге, необхідність прошивки біоса, а це і наявність програматора в ідеалі, і ризик перетворити матплату на цеглу. Останнє, втім, можна виправити, якщо є програматор і резервний образ біоса з плати.
Тестовий стенд
Тестовий стенд з Legacy BIOS був узятий з першої частини:
- Intel Pentium G2020;
- Gigabyte GA-H67M-D2-B3;
- 8 ГБ ОЗП;
- M.2 NVME Smartbuy Stream E13T 256 ГБ.
Для роботи з AMI UEFI тестовий стенд мав такий вигляд:
- AMD A4-5300 APU;
- Asus F2A55-M LK;
- 8 ГБ ОЗП;
- M.2 NVME Smartbuy Stream E13T 256 ГБ; M.2 NVME Smartbuy Stream E13T 256 ГБ
Award BIOS
На тестовій платі від Gigabyte встановлено програмне забезпечення від Award. Це звичайний (non-EFI) BIOS, і його редагування для додавання необхідного нам модуля — завдання не найпростіше.
Для нашого завдання нам буде потрібно:
- Оригінальний біос від плати;
- Option ROM (OpROM) від SSD Samsung 950 Pro;
- HEX-редактор;
- Утиліта CBROM, для інтеграції OpROM у біос.
Біос плати качаємо на офіційному сайті (приклад, як це зробити, є, тут), OpROM і утиліту для коригування його контрольної суми завантажуємо тут (спасибі vlo), CBROM беремо тут. Розархівуємо всі архіви, складаємо файли в окрему папку, у нашому випадку це буде award у корені диска C.
Неприємний нюанс у модифікації не UEFI біос полягає в тому, що потрібно конфігурувати його під певний диск, встановлювані вами. У нашому випадку це Smartbuy E13T, і нам буде потрібно дізнатися його ідентифікатори vid і did.
- VID (Vendor id) — ідентифікатор виробника обладнання.
- DID (Device id) — ідентифікатор пристрою.
Найпростіший варіант — завантажитися з підключеним диском в операційну систему (Win 10, Win 8.1) з підтримкою NVME SSD. Ви можете працювати не тільки з уже встановленою ОС, а й використовувати Live usb.
Відкриваємо диспетчер пристроїв: правою кнопкою миші (ПКМ) на значку меню «Пуск» — диспетчер пристроїв. Або пишемо «диспетчер пристроїв» у рядку пошуку Windows 10.
Йдемо в пункт «Контролери запам’ятовуючих пристроїв», шукаємо «Стандартний драйвер NVM Express». Тиснемо ПКМ — властивості.
Переходимо на вкладку «Відомості», зі списку «Властивість» обираємо «ІД обладнання».
Нижче в полі «Значення» з’являться рядки. Перші чотири знаки, після «VEN_» — це vid, після «DEV_» — це did. Зберігаємо (ПКМ на рядку — Копіювати) або переписуємо ці значення, як на прикладі.
Наступним етапом буде впровадження отриманих vid/did в OpROM. Відкриваємо шістнадцятковий редактор, ми будемо використовувати WinHex. Йдемо в меню File — Open і обираємо файл ss-950.bin з папки award.
У центральній частині вікна програми ми бачимо шістнадцяткові (hex) значення.
Нам потрібно замінити чотири (виділено) перші байти (одна пара — один байт) у третьому рядку (offset 00000020).
Тут прописані vid і did, і їх потрібно замінити на дані нашого диска. Але тут є один нюанс — потрібно поміняти байти місцями, тобто vid тестового диска 1987 потрібно записати як 87 19, а did — замість 5013, записується як 13 50. Дані вже йдуть у hex-форматі, тому записуються як є. Ось так вийшло після заміни.
Зберігаємо під потрібним ім’ям (у прикладі ss950-2.bin): File — Save as.
Відкриваємо командний рядок від імені Адміністратора. У Windows 10 просто пишемо в рядку пошуку cmd, натискаємо ПКМ — Запуск від імені Адміністратора.
У вікні, що відкрилося, переходимо до підготовленої папки (у нашому випадку c:\award) командою cd c:\award .
Зараз потрібно виправити контрольну суму OpROM після нашого втручання утилітою cs_fix. Вводимо команду cs_fix.exe ss950-2.bin, якщо все пройшло успішно, отримуємо повідомлення, як на скрині.
Тепер наш OpROM готовий для додавання у файл біоса, але спочатку подивимося вміст біоса. Вводимо CBROM195.EXE h67md2b3.f7 /D , де h67d2hb3.f7 — назва файлу біоса. Виведення команди — це список усіх модулів (ROM), що містяться у файлі.
Додаємо ss950-2.bin у файл: CBROM195.EXE h67md2b3.f7 /pci ss950-2.bin . На відсотки не звертаємо увагу.
Перевіряємо, що все пройшло успішно: CBROM195.EXE h67md2b3.f7 /D
Порівнявши дві видачі, можна побачити, що додався новий запис із номером 23. У крайньому правому стовпчику видно, що там знаходиться наш файл ss950-2.bin.
Прошивка BIOS
Отриманий файл переносимо на флешку, відформатовану у файлову систему FAT32. Заходимо в біос за клавішею DEL.
Скидаємо налаштування, за замовчуванням вибравши «Load Fail-Safe defaults». Після перезавантаження заходимо ще раз у біос, натискаємо F8 для запуску утиліти-прошивальника Q-Flash.
Робимо резервну копію встановленого екземпляра біоса. Для цього вибираємо пункт Save BIOS to Drive.
Утиліта має розпізнати встановлену флешку, обираємо її, вводимо ім’я для збереженого файлу.
Після закінчення процесу збереження вибираємо Update BIOS from Drive, вибираємо файл h67md2b3.f7.
Підтверджуємо, що ми хочемо прошити цей файл, і чекаємо закінчення процесу.
Натискаємо Esc для виходу, підтверджуємо.
Ще раз заходимо в біос. Якщо все було зроблено правильно, то в меню «Advanced BIOS Features — Hard Disk Boot Priority» з’явиться новий завантажувальний пристрій — потрібний нам NVME SSD.
Вибираємо його як основний завантажувальний пристрій і встановлюємо операційну систему.
AMI UEFI
Як носій UEFI від AMI була обрана материнська плата від Asus.
Як і для модифікації Award, нам знадобиться певний набір інструментів:
- Оригінальний біос материнської плати (беремо версію, яка вже встановлена на платі).
- Додаток для редагування UEFI.
- Модулі підтримки NVME дисків.
- Пакет утиліт AFU — AMI Firmware Update Utility.
Як утиліту для роботи з UEFI будемо використовувати UEFITool від CodeRush . А безпосередньо інтегрований модуль — NvmExpressDxe_4.ffs. Для плат, де вільного місця не вистачає для впровадження зазначеного модуля, можна використовувати його «полегшену» версію — NvmExpressDxe_Small.ffs. З пакета AFU (у нашому випадку потрібна була версія AFUWIN64_v3.05.04 з підтримкою ключа /GAN) нам потрібен виконуваний файл під Windows — AFUWINx64.EXE, а також amifldrv64.sys для його роботи.
Для спрощення процесу проводимо всі маніпуляції з Windows, розгорнутої на піддослідній платі. Розміщуємо всі файли в одній папці для зручності.
Робимо резервну копію встановленого біоса. Для цього запускаємо командний рядок (CMD) від імені Адміністратора і переходимо в папку з файлами командою: cd c:\ami , де c:\ami — шлях до папки з нашими файлами.
Далі робимо саму резервну копію: afuwinx64 backup.rom /O, де backup.rom — ім’я файлу резервної копії (можете назвати на свій смак), /O — ключ для створення бекапа. «Reading flash … done» сповістить про закінчення процесу.
Тепер можна відкласти вікно командного рядка, можна навіть не закривати — скоро знадобиться. Відкриваємо UEFITool. Йдемо в меню File — Open image file.
Вибираємо файл бекапа, отриманий раніше (backup.rom). Відкриється вікно програми, натиснувши на UEFI image, можна побачити структуру обраного файлу.
Тепер потрібно визначити, куди вставити файл модуля. Через складну структуру і специфічні особливості виробників плат, вручну знайти DXE том, де зберігаються модулі, буває проблематично. Тому найпростіше скористатися пошуком.
Відкриваємо меню File — Search або скористаємося поєднанням клавіш Ctrl+F. У вікні, що відкрилося, вибираємо вкладку Text, вводимо в поле DXE, перевіряємо, що активовано чек-бокс Unicode, і тиснемо «OK».
У нижній частині вікна, іменованої «Messages», буде виведено список збігів.
Зробіть подвійний клік лівою кнопкою миші на будь-якому із записів і потрапите в розділ, де було знайдено збіг. Орієнтуємося за полем «Subtype»: якщо бачите там «DXE driver», то ви у вірній секції.
Можна також орієнтуватися на модуль «CSMCORE».
Нас же цікавить найнижчий запис, після якого йде «Volume free space». У цьому разі це запис із підтипом «Freeform», але це може бути і DXE driver.
Встаємо на нього, тиснемо правою клавішею миші і вибираємо пункт Insert after.
І вибираємо потрібний для інтеграції модуль.
Зверніть увагу, що модуль має опинитися в самому кінці списку, прямо перед Volume free space. Визначити його можна за ім’ям модуля в стовпці «Text».
Зберігаємо отриманий файл, вводимо потрібне ім’я модифікованого файлу біоса (у прикладі mod.rom).
Після того, як ви натиснете кнопку «Зберегти», вас запитають про те, чи хочете ви відкрити змінений файл. Погоджуємося.
Відкриється заново структура файлу. Йдемо в розділ, куди ми вставляли модуль, і перевіряємо, що він там зберігся. Розкриємо його запис і переконаємося, що там є обидві (image і interface) секції.
Якщо все гаразд, то біос готовий для прошивки.
Прошивка UEFI
Як і чим прошити біос залежить від материнської плати.
Ми ж будемо прошивати біос за допомогою вже використаного AFUWIN. Переходимо назад у командний рядок. Спочатку прошиваємо оригінальний файл біоса з сайту (тієї ж версії, що і встановлений на платі) командою afuwinx64 6701.cap , де 6701.cap — ім’я файлу оригінального біоса (перейменований для простоти введення).
Коли всі етапи успішно виконають, одразу прошиваємо модифікований біос командою afuwinx64 mod.rom /GAN , де mod.rom — файл біоса з інтегрованим модулем підтримки NVME, а /GAN — ключ для прошивки. Без цього ключа на цій платі біос прошиватися категорично відмовлявся.
Після закінчення прошивки вимикаємо ПК, вставляємо наш SSD і перевіряємо, чи доступний він у списку завантажувальних пристроїв біос.
Якби наша тестова плата підтримувала USB Flashback, то можна було б просто модифікувати файл, викачаний із сайту, перейменувати його відповідно до вимог USB Flashback (для цього можна скористатися утилітою BIOS Renamer for USB BIOS Flashback), закинути файл на флешку і прошитися за інструкцією до плати. Це вважається найзручнішим і найправильнішим варіантом для плат Asus.
Ми розглянули два варіанти додавання підтримки завантаження з NVME дисків: для Award (Legacy) BIOS і AMI UEFI . Постаралися висвітлити нюанси і проблеми, з якими зустрілися в процесі модифікації. Але оскільки виробників багато, і кожен може мати свої специфічні особливості біоса, неможливо охопити всі нюанси з цієї теми.