Как обрезать BIOS для прошивки программатором

При попытке прошить микросхему Winbond W25Q64FV или MX25L12835F через программатор CH341A вы получаете ошибку chip is not detected или content mismatch, хотя чип исправен. Причина чаще всего кроется не в самом адаптере, а в несоответствии размера загружаемого файла объему микросхемы. Материнские платы и ноутбуки используют дампы BIOS, которые по размеру меньше полного объема чипа, и перед записью такой файл необходимо правильно обрезать или дополнить до нужного размера.

Процедура обрезки дампа требуется, когда вы скачали прошивку с сайта производителя в формате .rom, .bin или .fd, а программатор отказывается ее записывать из-за несовпадения размера. В этой инструкции разберем, как определить реальный размер чипа, как обрезать биос до нужного объема и почему нельзя записывать файл «как есть».

Определение размера микросхемы и дампа

Перед тем как обрезать биос, вам нужно точно знать объем микросхемы памяти. Маркировка на корпусе содержит эту информацию: W25Q64 означает 8 МБ (64 Мбит), W25Q128 — 16 МБ (128 Мбит), MX25L25635F — 32 МБ. Но сам дамп, который вы скачали с сайта производителя, может занимать только часть этого объема — например, 6 МБ или 12 МБ.

Программатор CH341A в большинстве случаев требует файл, размер которого точно совпадает с объемом чипа. Если файл меньше — он дополняется нулями до нужного размера, если больше — запись прерывается ошибкой. Проблема в том, что «сырой» дамп с официального сайта часто содержит служебные заголовки или области, которые не относятся к коду BIOS.

Проверьте размер скачанного файла через свойства в проводнике Windows или командой ls -l файл.rom в Linux. Если размер файла меньше объема чипа — его нужно дополнить, если больше — обрезать. В большинстве случаев для ноутбуков Lenovo и HP требуется именно обрезка до размера 8 МБ или 16 МБ.

⚠️ Внимание: никогда не записывайте дамп, размер которого превышает объем микросхемы. Программатор может повредить чип или записать данные в несуществующие ячейки, после чего устройство перестанет запускаться.

Инструменты для обрезки BIOS

Для обрезки дампа подойдет любой hex-редактор, но лучший результат дают специализированные утилиты. Самые популярные — HxD для Windows и hexedit для Linux. Они позволяют выделить нужный фрагмент и сохранить его отдельным файлом без изменения исходных данных.

  • 🛠 HxD — бесплатный hex-редактор для Windows, поддерживает работу с файлами до 8 ГБ, умеет удалять и вставлять блоки данных.
  • 🛠 hexedit — консольная утилита для Linux, работает с любыми файлами, управление через горячие клавиши.
  • 🛠 UEFITool — программа для анализа структуры UEFI-прошивок, позволяет извлечь нужные разделы без ручной обрезки.

Если вы не хотите разбираться с hex-редакторами, можно использовать скрипт на Python, который автоматически обрежет файл до нужного размера. Для этого понадобится установленный интерпретатор и базовые знания командной строки.

python -c "

import sys

with open('bios.bin', 'rb') as f:

data = f.read()

with open('bios_8mb.bin', 'wb') as f:

f.write(data[:8388608])

"

Этот скрипт обрежет файл до 8 МБ (8388608 байт). Для 16 МБ замените число на 16777216. Убедитесь, что исходный файл больше целевого размера, иначе скрипт вернет ошибку.

Пошаговая инструкция обрезки в HxD

Скачайте и установите HxD с официального сайта, затем откройте ваш дамп через меню File → Open. Внизу окна отобразится размер файла в байтах — запишите это значение. Если размер превышает объем чипа, переходите к обрезке.

Нажмите Ctrl+Home, чтобы перейти в начало файла. Затем нажмите Ctrl+G для перехода к адресу — введите значение, равное объему чипа минус один байт. Для 8 МБ это 7FFFFF, для 16 МБ — FFFFFF. После перехода выделите весь блок от начала до текущей позиции через Ctrl+Shift+Home.

Скопируйте выделенный фрагмент в новый файл: Ctrl+C, затем File → New и Ctrl+V. Сохраните результат через File → Save As с расширением .bin. Теперь файл имеет правильный размер и готов к записи.

☑️ Чек-лист перед записью дампа

Выполнено: 0 / 5
⚠️ Внимание: перед обрезкой всегда сохраняйте оригинальный дамп в отдельную папку. Если после прошивки устройство не запустится, вы сможете восстановить исходный файл.

Вычисление контрольной суммы после обрезки

После обрезки дампа необходимо проверить контрольную сумму, чтобы убедиться в целостности данных. Для большинства материнских плат используется алгоритм CRC32 или SHA-256. Программатор CH341A при записи автоматически проверяет файл, но лучше перестраховаться.

Используйте утилиту certutil в Windows или sha256sum в Linux для вычисления хеша. Сравните полученное значение с контрольной суммой, указанной на сайте производителя. Если суммы не совпадают — файл поврежден или обрезан неправильно.

Размер чипа Объем в байтах Hex-адрес конца Типовая модель
4 МБ 4194304 3FFFFF W25Q32
8 МБ 8388608 7FFFFF W25Q64
16 МБ 16777216 FFFFFF W25Q128
32 МБ 33554432 1FFFFFF MX25L25635F

Для дампов UEFI контрольная сумма часто хранится в самом файле в области Firmware Volume. Если вы обрежете файл неправильно, материнская плата выдаст ошибку Invalid BIOS Image при попытке загрузки. В этом случае проверьте структуру дампа через UEFITool.

Как работает UEFITool

UEFITool позволяет открыть дамп и увидеть все разделы — PEI, DXE, NVRAM, переменные. Если вы обрезали файл, но структура нарушена, утилита покажет ошибки в логах. Для корректной обрезки используйте функцию Extract для нужного раздела вместо ручного удаления байтов.

Типичные ошибки при обрезке дампа

Самая распространенная ошибка — обрезка файла не с того конца. Дамп BIOS имеет строгую структуру: код загрузчика находится в начале, а области NVRAM и настройки — в конце. Если вы обрежете файл с конца, потеряете критические данные, и устройство не запустится.

Вторая ошибка — попытка записать файл большего размера на чип меньшего объема. Например, дамп на 16 МБ на микросхему W25Q64 (8 МБ). Программатор либо откажется работать, либо запишет только первые 8 МБ, что приведет к неработоспособной прошивке.

Третья ошибка — игнорирование смещения. Некоторые производители, особенно Dell и HP, добавляют в начало дампа заголовок размером 64 КБ или 256 КБ, который не относится к BIOS. В этом случае нужно не просто обрезать файл, а удалить весь заголовок и сдвинуть данные к началу.

⚠️ Внимание: если после обрезки и прошивки ноутбук включается, но не показывает изображение, проверьте, не удалили ли вы область GOP Driver (Graphics Output Protocol). Она отвечает за инициализацию видеокарты и находится в конце дампа.
📊 С какой проблемой вы столкнулись при прошивке BIOS?
Ошибка chip is not detected
Файл больше объема микросхемы
Ноутбук не запускается после прошивки
Не совпадает контрольная сумма

Особенности обрезки для ноутбуков и материнских плат

Ноутбуки Lenovo серии IdeaPad и ThinkPad используют дампы с 16-мегабайтной микросхемой, но фактический размер прошивки составляет 12 МБ или 14 МБ. В этом случае обрезка не требуется — файл нужно дополнить нулями до 16 МБ. В противном случае программатор запишет данные со смещением, и BIOS не загрузится.

Для материнских плат ASUS и Gigabyte ситуация обратная: скачанный с сайта файл часто содержит область ME Region (Management Engine), которая не используется при прошивке через программатор. Ее необходимо удалить, уменьшив размер файла до 8 МБ. Игнорирование этого правила приводит к ошибке ME corrupted при загрузке.

Универсального алгоритма обрезки для всех производителей не существует. Перед записью изучите структуру дампа через UEFITool и определите, какие разделы являются обязательными. Если вы сомневаетесь в своих действиях, используйте готовые дампы с проверенных форумов, например badcaps.net или forum.notebookreview.com.

Автоматизация процесса обрезки

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

import hashlib

import sys

def trim_bios(input_file, output_file, target_size):

with open(input_file, 'rb') as f:

data = f.read()

if len(data) < target_size:

data = data.ljust(target_size, b'\x00')

else:

data = data[:target_size]

with open(output_file, 'wb') as f:

f.write(data)

print(f"CRC32: {hashlib.crc32(data):08X}")

if __name__ == '__main__':

trim_bios('bios.bin', 'bios_trimmed.bin', 8388608)

Этот скрипт автоматически дополнит файл нулями, если он меньше 8 МБ, или обрежет, если больше. После выполнения вы увидите контрольную сумму CRC32, которую можно сравнить с ожидаемой.

Для пользователей Linux подойдет однострочная команда dd, которая обрезает файл до нужного размера: dd if=bios.bin of=bios_8mb.bin bs=1M count=8. Однако этот способ не позволяет дополнить файл нулями, поэтому для маленьких дампов используйте truncate -s 8M bios_8mb.bin.

Частые вопросы

Что делать, если файл BIOS меньше объема микросхемы?

Дополните файл нулями до нужного размера. В HxD откройте файл, нажмите Ctrl+End, затем Ctrl+Shift+End для выделения от конца до конца файла, вставьте нулевые байты через Edit → Insert и укажите нужное количество. Либо используйте скрипт на Python из предыдущего раздела.

Можно ли обрезать BIOS без hex-редактора?

Да, используйте онлайн-сервисы или утилиту UEFITool. Но помните, что онлайн-сервисы могут исказить данные или добавить вирусы. Лучше работать локально через установленные программы.

Почему после обрезки программатор пишет ошибку верификации?

Ошибка верификации возникает, когда записанные данные не совпадают с файлом. Причины: неправильная обрезка (сдвиг данных), повреждение файла при сохранении или неисправность микросхемы. Проверьте контрольную сумму файла и повторите запись с пониженной скоростью.

Как узнать, какой размер файла нужен для конкретной модели?

Откройте оригинальный дамп, прочитанный с микросхемы, и посмотрите его размер в байтах. Скачанный файл должен иметь тот же размер после обрезки или дополнения. Если оригинального дампа нет, ищите информацию на форумах или в сервисной документации.