Не секрет, что производители материнских плат и ноутбуков не всегда дают возможность пользователям Linux обновить UEFI/BIOS
прошивку так же ненавязчиво, как это делают пользователи Windows. Тем не менее для HP EliteBook 840G1, которым я пользуюсь, сделать это немногим сложнее.
![](https://habrastorage.org/files/f3d/233/c19/f3d233c196934433add3b08194d3e652.jpg)
Для этого дела понадобятся следующие артефакты:
- 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 раздела. Вот так выглядит уже готовый раздел.
![](https://habrastorage.org/files/983/818/59e/98381859e1184436b6be37a7a878dc30.png)
Рекомендуется 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 вполне достаточно. Запускаем:
![](https://habrastorage.org/files/107/5c0/4d7/1075c04d72be4a759267eb585d85c2bb.png)
Программа завершает работу с бестактной ошибкой, напоминая лишний раз о том, что нам подсунули не то, что мы ожидали.
![](https://habrastorage.org/files/308/ce2/b23/308ce2b23b964deaa44da0a9eed9f3f4.png)
Однако, это не должно никого волновать, так как файлы распакованы верно а сверх этого ничего и не требовалось.
(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
.