Не секрет, что производители материнских плат и ноутбуков не всегда дают возможность пользователям 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 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.
(4:549)$ grep efi /etc/fstab
/dev/sda4 /boot/efi vfat rw,users,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 сен 18 2013 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 минуты, и процесс благополучно завершен.
UPDATE: По итогам здравых идей в комментариях необходимы некоторые дополнения.
- Можно скопировать те же самые 3 файла на USB флешку, в прописанных путях и используя её обновить прошивку. Разметка файловой системы должна быть FAT32 ESP.
- Можно обновиться из
File→Update System BIOSнапрямую по интернету, если подключен сетевой кабель. Обновление не будет работать через WiFi соединение. - Вместо WINE для распаковки архива достаточно использовать
7z e sp64081.exe.
