Оновлення UEFI/BIOS в Linux

Не секрет, що виробники материнських плат і ноутбуків не завжди дають можливість користувачам Linux оновити
UEFI/BIOS
прошивку так само толерантно, як це роблять користувачі Windows. Тим не менше для HP EliteBook 840G1, яким я користуюся, зробити це набагато складніше.

Для цієї справи знадобляться такі артефакти:
  • FAT32 EFI System Partition (ESP)
  • WINE
  • Змінний електричний струм

FAT32 ESP
Ноутбуки лінійки HP EliteBook містять 3 режими завантаження. Дізнатися який з режимів обрано можна в налаштуваннях
UEFI/BIOS
System Configuration
Boot Mode
. Даний розділ слід читати, якщо тільки обраний останній, безкомпромісний режим
UEFI
, в інших випадках можна проскочити.
  • Legacy
  • UEFI Hybrid compatibility with 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.
(4:549)$ grep efi /etc/fstab 
/dev/sda4 /boot/efi vfat rw,user,noauto 0 2

Ми вже знаємо, що
UEFI/BIOS
шукатиме
\EFI\BOOT\bootx64.efi
, для чого абсолютний шлях до файлу повинен бути
/boot/efi/EFI/Boot/Bootx64.efi
, інакше все пропало і
UEFI/BIOS
не знайде завантажувач ОС! Оновлення системної прошивки це не завадить, але для чого ж тоді потрібна прошивка, якщо можна завантажити операційну систему? Дуже важливо, що за замовчуванням GRUB-2 не копіює необхідний файл і тому
bootx64.efi
треба скопіювати вручну.
(4:569) sudo cp /boot/grub/x86_64-efi/core.efi /boot/efi/EFI/Boot/Bootx64.efi

Підготовка
Беремо свіжу прошивку з сайту HP, вибираємо Linux в випадаючому списку ОС, потім BIOS, завантажуємо… і виявляємо виконуваний файл для Windows —
sp64081.exe
. Ні, очі нас не підвели.
(4:520)$ file sp64081.exe 
sp64081.exe: PE32 executable (GUI) Intel 80386, for MS Windows

Досвідчені користувачі бувають готові до подібних сюрпризів, для чого тримають Windows VM або користуються не-емулятором WINE або і те й інше разом, бо випадки бувають різні. Для розпакування файлу можливостей WINE цілком достатньо. Запускаємо:

Програма завершує роботу з нетактовною помилкою, зайвий раз нагадуючи про те, що нам підсунули не те, що ми очікували.

Однак, це не повинно нікого хвилювати, так як розпаковані файли вірно а понад цього нічого й не було потрібно.
Список файлів
(4:529)$ ls -Rl sp64081/
sp64081/:
разом 18188
drwxr-xr-x 1 root root 356 лип 30 10:52 BIOSUpdate
-rw-r--r-- 1 root root 2950466 мар 4 2013 BIOSUpdateEFI.7z
-rwxr-xr-x 1 root root 4838072 7 серп 2013 HPBIOSUPDREC.exe
-rw-r--r-- 1 root root 883 лип 30 10:52 HPBIOSUPDREC.log
-rwxr-xr-x 1 root root 2353368 січ 2013 18 HpqPswd.exe
-rwxr-xr-x 1 root root 77824 22 лют 2012 Installer.exe
-rw-r--r-- 1 root root 8388608 окт 9 2013 L71_0104.bin
-rw-r--r-- 1 root root 1543 окт 24 2013 WSSP64081.rtf

sp64081/BIOSUpdate:
разом 2368
-rw-r--r-- 1 root root 259072 5 лис 2012 CryptRSA32.efi
-rw-r--r-- 1 root root 443904 5 лис 2012 CryptRSA.efi
-rw-r--r-- 1 root root 820784 8 лип 2013 HpBiosUpdate32.efi
-rw-r--r-- 1 root root 256 8 лип 2013 HpBiosUpdate32.s09
-rw-r--r-- 1 root root 256 8 лип 2013 HpBiosUpdate32.s12
-rw-r--r-- 1 root root 256 8 лип 2013 HpBiosUpdate32.sig
-rw-r--r-- 1 root root 16384 9 лип 2013 HpBiosUpdate.dll
-rw-r--r-- 1 root root 850512 8 лип 2013 HpBiosUpdate.efi
-rw-r--r-- 1 root root 256 8 лип 2013 HpBiosUpdate.s09
-rw-r--r-- 1 root root 256 8 лип 2013 HpBiosUpdate.s12
-rw-r--r-- 1 root root 256 8 лип 2013 HpBiosUpdate.sig

З цього списку нам знадобляться тільки 3 файлу:
L71_0137.bin
,
HpBiosUpdate.efi
та
HpBiosUpdate.s12
і тепер увага: скопіювати файли потрібно точно в зазначені місця.
(4:534)$ ls -lR /boot/efi/EFI/HP/
/boot/efi/EFI/HP/:
разом 8
drwxr-xr-x 3 root root 4096 сен 22 2015 BIOS
drwxr-xr-x 2 root root 4096 лип 21 22:23 BIOSUpdate

/boot/efi/EFI/HP/BIOS:
разом 4
drwxr-xr-x 2 root root 4096 лип 21 22:05 New

/boot/efi/EFI/HP/BIOS/New:
разом 8192
-rwxr-xr-x 1 root root 8388608 травень 23 13:57 L71_0137.bin

/boot/efi/EFI/HP/BIOSUpdate:
разом 840
-rwxr-xr-x 1 root root 850512 8 лип 2013 HpBiosUpdate.efi
-rwxr-xr-x 1 root root 3916 лип 21 22:23 HpBiosUpdate.log
-rwxr-xr-x 1 root root 256 8 лип 2013 HpBiosUpdate.s12
1291/7720MB

Щоб потрапити в меню налаштування
UEFI/BIOS
треба після включення натиснути клавішу
Esc
або
F10
а далі
File
Update System BIOS
.

Після вибору
Accept
, процес оновлення стартує без інших реверансів. Мабуть знаючи ціну своїм акумуляторам, виробники оновлюють прошивку тільки при включеному електричному живленні комп'ютера. 2-3 хвилини, і процес благополучно завершено.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.