Введение
У вас Lenovo X390 и нужно обновить BIOS, но вы не используете Windows, а на сайте производителя доступен только ISO9660 CD-образ. Это особенно неприятно для ноутбука без CD‑привода — многие инструменты показывают образ пустым, а извлечь файлы не удаётся.
Ниже — рабочий способ достать файлы обновления из такого «проклятого» CD-образа: мы найдём скрытый EFI‑раздел внутри ISO, извлечём его как FAT32‑образ, смонтируем в loopback и скопируем файлы для записи на USB. В тексте сохранены команды, пример вывода и важные цифры.
Проблема: BIOS-обновление в ISO без CD‑привода
Lenovo предоставляет обновление BIOS в виде ISO9660 CD image, который ожидает CD‑привод. Для ноутбука без привода такой образ бесполезен, если не извлечь содержащиеся в нём файлы. Стандартные утилиты часто показывают ISO «пустым», поскольку нужные файлы спрятаны в EFI‑разделе внутри образа.
Поэтому нужно найти и извлечь именно этот EFI‑раздел (FAT32), смонтировать его и скопировать файлы обновления (.PAT, .efi и др.). Ниже — последовательность действий и примеры команд.
Краткое решение
Идея: с помощью dd вырезать из ISO кусок, соответствующий FAT32 (EFI) разделу, сохранить его как отдельный файл, затем смонтировать в loopback как vfat и скопировать файлы. После этого запись этих файлов на FAT32‑флешку и загрузка в EFI позволят выполнить обновление BIOS.
В примере автора EFI‑раздел начинался на секторе 140, поэтому использована команда dd с skip=140. У вас смещение может отличаться — см. раздел про поиск смещения ниже.
Пошаговая инструкция: извлечение файлов из ISO (пример)
1) Вырезаем FAT32‑образ из ISO
В примере использовалась команда dd, которая пропускает первые N секторов и сохраняет оставшуюся часть как отдельный файл fat32-image. Для автора смещение было 140 секторов.
> dd if=n2jur42w.iso of=fat32-image skip=140
2) Монтируем образ и копируем файлы
Далее создаём точку монтирования, монтируем fat32‑образ в loopback и копируем содержимое в папку extracted-files. После этого можно просмотреть список файлов.
> mkdir mountpoint > sudo mount -t vfat fat32-image mountpoint > cp -r mountpoint extracted-files > cd extracted-files > find . -type f | sort
Пример найденных файлов (сохранён из оригинального примера):
./EFI/Boot/BootX64.efi ./FLASH/806EB.PAT ./FLASH/806EC.PAT ./FLASH/906EA.PAT ./FLASH/906EC.PAT ./FLASH/906ED.PAT ./FLASH/A0660.PAT ./FLASH/BCP.evs ./FLASH/N2JETA7P/$0AN2J00.FL1 ./FLASH/N2JETA7P/$0AN2J00.FL2 ./FLASH/N2JETA7W/$0AN2J00.FL1 ./FLASH/N2JETA7W/$0AN2J00.FL2 ./FLASH/N2SET36P/$0AN2S00.FL1 ./FLASH/N2SET36P/$0AN2S00.FL2 ./FLASH/N2SET36W/$0AN2S00.FL1 ./FLASH/N2SET36W/$0AN2S00.FL2 ./FLASH/NoDCCheck_BootX64.efi ./FLASH/README.TXT ./FLASH/SHELLFLASH.EFI
Запись на USB и выполнение обновления BIOS
Скопируйте файлы из extracted-files на FAT32‑раздел USB‑накопителя (просто обычное копирование). Включите EFI boot в BIOS ноутбука и загрузитесь с этой флешки.
Файлы BootX64.efi и SHELLFLASH.EFI вместе с .PAT файлам позволяют выполнить обновление в среде EFI. В примере обновление прошло успешно.
Если EFI‑раздел не начинается на секторе 140: как найти смещение
У разных образов смещение EFI‑раздела может отличаться. Если монтирование fat32‑image не работает, нужно найти начало сектора с FAT32. Для этого используйте hexdump/xxd и ищите «магическое» значение eb58 — сигнатуру начала MBR/VBR FAT.
> xxd n2jur42w.iso | less
Пример найденного фрагмента в оригинальном образе:
000117e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000117f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00011800: eb58 904d 5344 4f53 352e 3000 0202 3e18 .X.MSDOS5.0...>. 00011810: 0200 0000 00f8 0000 2000 4000 2000 0000 ........ .@. ... 00011820: 0000 0400 e103 0000 0000 0000 0200 0000 ................
В примере xxd показывает, что магическое значение находится по смещению 0x11800 (в байтах). Переводим это в сектора (размер сектора 512 байт):
> python >>> 0x11800/512 140.0 >>>
Полученное значение 140 и используется как skip=140 в команде dd. Для вашего образа значение может быть другим — найдите смещение eb58 и разделите на 512.
Важные файлы, примечания и совместимость
В извлечённой структуре важными являются EFI/Boot/BootX64.efi, FLASH/SHELLFLASH.EFI и файлы .PAT (например 806EB.PAT и 906EA.PAT). Также присутствуют README.TXT и специфичные FL1/FL2 файлы для разных моделей.
Этот метод может работать и для других моделей Lenovo. В оригинальном описании указано, что при желании можно скачать готовую версию 1.85 вместо самостоятельного извлечения; при самостоятельном извлечении учтите, что начало EFI‑раздела может отличаться от сектора 140.