Оновлення UEFI / BIOS в Linux +29
- 30.07.16 8:34 •
- temujin •
- # 306760 •
- Хабрахабр •
- Tutorial •
- 21 •
- 17400
- такий же як Forbes, тільки краще.
Не секрет, що виробники материнських плат і ноутбуків не завжди дають можливість користувачам Linux оновити UEFI / BIOS прошивку так само ненав'язливо, як це роблять користувачі Windows. Проте для HP EliteBook 840G1, яким я користуюся, зробити це трохи складніше.
Для цієї справи знадобляться наступні артефакти:
- FAT32 EFI System Partition (ESP)
- WINE
- Змінний електричний струм
- Legacy
- UEFI Hybrid with compatibility support module (CSM)
- UEFI Native without CSM
Якщо ви уважно читали топік про Linux kernel EFI Boot Stub. то ви напевно знаєте, що і як потрібно зробити, для того, щоб створити дисковий розділ. Можна використовувати gdisk. parted або KDE Disk Partition для створення ESP розділу. Ось так виглядає вже готовий розділ.
Рекомендується ESP розділ монтувати в / boot / efi. а не просто в / boot. для того щоб можна було зберігати образи ядра Linux і файли завантажувача ОС на штатних лінуксових ФС, замість того, щоб все тримати в FAT32 EFI System Partition.
Ми вже знаємо, що UEFI / BIOS буде шукати \ EFI \ BOOT \ bootx64.efi. для чого абсолютний шлях до файлу повинен бути /boot/efi/EFI/Boot/Bootx64.efi. інакше все пропало і UEFI / BIOS не знайде завантажувач ОС! Оновленню системної прошивки це не завадить, але для чого ж тоді потрібна прошивка, якщо не можна завантажити операційну систему? Дуже важливо, що за замовчуванням GRUB-2 не копіює необхідний файл і тому bootx64.efi треба скопіювати вручну.
підготовка
Беремо свіжу прошивку з сайту HP. вибираємо Linux в випадаючому списку ОС, потім BIOS, викачуємо ... і виявляємо виконуваний файл для Windows - sp64081.exe. Ні, очі нас не підвели.
Досвідчені користувачі бувають готові до подібних сюрпризів, для чого тримають Windows VM або користуються не-емулятором WINE або і те й інше разом, бо випадки бувають різні. Для розпакування файлу можливостей WINE цілком достатньо. запускаємо:
Програма завершує роботу з безтактною помилкою, нагадуючи зайвий раз про те, що нам підсунули не те, що ми очікували.
Однак, це не повинно нікого хвилювати, так як файли розпаковані вірно а понад це нічого й не було потрібно.
З цього списку нам знадобляться тільки 3 файлу: L71_0137.bin. HpBiosUpdate.efi і HpBiosUpdate.s12 і тепер увага: скопіювати файли потрібно точно в зазначені місця.
Щоб потрапити в меню настройки UEFI / BIOS треба після включення натиснути клавішу Esc або F10 а далі File> Update System BIOS.
Після вибору Accept. процес оновлення стартує без інших реверансів. Мабуть знаючи ціну своїм акумуляторам, виробники оновлюють прошивку тільки при включеному електричному живленні комп'ютера. 2-3 хвилини, і процес благополучно завершено.
- Ви маєте можливість копіювати ті ж самі 3 файлу на USB флешку, в прописаних шляхах і використовуючи її оновити прошивку. Розмітка файлової системи повинна бути FAT32 ESP.
- Можна оновитися з File> Update System BIOS безпосередньо через інтернет, якщо підключений мережевий кабель. Оновлення не працюватиме через WiFi з'єднання.
- Замість WINE для розпакування архіву досить використовувати 7z e sp64081.exe.
Все дуже кльово написано. У той же час, простіше використовувати флешку, отформатированную в FAT32.
Там створити в корені структуру каталогів Hewlett-Packard \ BIOSUpdate \ і Hewlett-Packard \ BIOS \ New \
В першу групу пишуться HPBios *. * І CryptRSA *. *, В другу - сам біос (* .bin)
Якщо підключено флешці прошивальщик з BIOS знайде її і запропонує оновитися.
840-ю серію ще не мацав, але 430-я на роботі активно використовується (версія платформи - N78, вона вказана на початку * .bin).
До речі, там же з BIOS можна зробити Replicated Setup - задаємо настройки в BIOS на наш розсуд (наприклад, включення підтримки інструкцій віртуалізації процесором або відключення wi-fi карти при підключенні ethernet) і зберігаємо на ту ж флешку.
Файл буде лежати в корені, HpSetup.txt. При необхідності відновлюємо настройки з флешки через те ж меню.
Для UEFI native mode, така флешка теж буде завантажувального? У мене з завантажувальними флешками на цьому режимі завжди складності були, вже навіть не пам'ятаю через що, може до речі я не форматувати FAT32. На моєму комп'ютері ESP розбиття вже створена для UEFI, я її заради оновлення прошивки не створював, але для тих у кого такий партіціі немає простіше з флешки оновлюватися, згоден.
Завантажувального флешку робити не потрібно, достатньо, щоб BIOS \ UEFI її фізично бачив (якщо в FAT32 = ОК). Якщо побачить - то прочитає з неї потрібні файли, якщо структура каталогів створена, як описано.
Спасибі, треба випробувати такий метод. Дивно, що на ESP розділі диска не потрібні CryptRSA файли.
Дивно, що на ESP розділі диска не потрібні CryptRSA файли
Я просто скопіював то, що розпакував) Багато місця не займає.
ніякі wine не потрібні, з розпакуванням файлів в Убунту успішно справляється p7zip. Забиваємо команду 7z e sp64081.exe. і все.
до речі, варто сказати що це специфічний для HP спосіб оновлення. У свіжих версіях UEFI (2.5+) запив стандартний, через EFI Capsules. Тобто поновлення BIOS будуть поширюватися не як виконувані файли, а як пакети в спеціальному форматі, і встановлюватися засобами ОС або EFI Shell. У linux для цього є консольна утиліта fwupdate (потрібно ядро 4.2+), в windows 8 + - windows UEFI firmware update platform.
Коли доберуся до комп'ютера, обов'язково перевірю чи вдасться розпакувати екзешник за допомогою p7zip. Тоді можна автоматизувати процес: розпакувати, скопіювати файли і перезавантажити ОС. Правда, в настройки BIOS все ж самому доведеться залазити і ESP розділ створити теж.
Підтверджую, намагаюся не запускати незрозумілі файлів. Спочатку намагаюся розпакувати через 7z, якщо не вийшло, то пробую через winrar під wine, і тільки якщо зовсім ніяк, то тоді вже вирішую запускати його під wine або в виртуалке.
З поправкою, що виконуваний файл драйвера з сайту виробника може вважатися безпечним, згоден, що спочатку краще розпакувати і розглянути вміст пакету.
З огляду на, що багато виробників віддавали драйвера і поновлення по http зі сторінки, завантаженої по http, і не вказуючи хеша - дуже умовно. Маю велику надію, що від цієї практики стали відходити, але не вірю.
Більше у вигляді жарту тут дозволю собі не погодитися бо для цієї справи змінний струм не обов'язковий якщо мова йде про ноутбук то його можна живити постійним навіть не будучи гурёнком в радіотехніці.
Все-таки це не зовсім справжнє оновлення BIOS / UEFI за допомогою Linux. В ядрі є модуль, який підтримує оновлення прямо без перезавантаження для деяких ноутбуків (здається для Dell), а також над цим працюють і для інших материнських плат. Для старіших є ще і flashrom - дуже універсальна програма, яка працює навіть під Mac OS і * BSD.
Знаєте, я б дуже хотів, щоб оновлення прошивки для Linux вироблялося однією командою в Bash і можливо скоро цей день настане. А до цього як небуть 3 файлу самі скопіюємо в ESP.
На сайті HP під Linux пропонують завантажити оновлення в форматі exe і просто запустити його, клікнувши двічі! Якось зовсім вже товсто))
А так да, швидше за все завантажувальні танці з бубном зайві.
Спробуйте розпакувати sp64081.exe на флешку (по ідеї знадобиться тільки лише образ L71_0104.bin і, можливо, папка BIOSUpdate) і згодувати це вбудованому прошівальщік.