Обновление UEFI/BIOS в Linux

Опубликовано Avatar - пн, 08/01/2016 - 13:19

Источник.

Не секрет, что производители материнских плат и ноутбуков не всегда дают возможность пользователям 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, то вы наверняка знаете, что и как нужно сделать, для того, чтобы создать дисковый раздел. Можно использовать gdiskparted или 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 вполне достаточно. Запускаем:


Программа завершает работу с бестактной ошибкой, напоминая лишний раз о том, что нам подсунули не то, что мы ожидали.


Однако, это не должно никого волновать, так как файлы распакованы верно а сверх этого ничего и не требовалось.

 

Список файлов

 

Из этого списка нам понадобятся только 3 файла: L71_0137.binHpBiosUpdate.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 минуты, и процесс благополучно завершен.


Похожие материалы на сайте: