---
title: "Прошивка больших образов BIOS и Intel ME"
description: "Не секрет, что современные образы BIOS, а также региона ME (Intel Management Engine) занимают достат..."
author: "yerden"
published: "2014-09-20T23:54:49+00:00"
modified: "2017-03-31T03:12:25+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/proshivka-bolshih-obrazov-bios-i-intel-me-430460"
markdown_url: "https://yvision.kz/post/proshivka-bolshih-obrazov-bios-i-intel-me-430460/markdown"
site_name: "Yvision.kz"
---

# Прошивка больших образов BIOS и Intel ME

> Не секрет, что современные образы BIOS, а также региона ME (Intel Management Engine) занимают достат...

Не секрет, что современные образы BIOS, а также региона ME (Intel Management Engine) занимают достаточно много места. Например, на днях столкнулся вот с [такой](http://foxconn.ru/products/nettop-barebone/intel/at-7300/) barebone-системой. Вышедшее для неё обновление BIOS весит больше 3 Мб, а ME - больше 8 Мб.

Беда в том, что большинство таких обновлений предполагают выполнение процедуры в среде DOS, а стремительный технический прогресс постепенно оставляет в прошлом знакомые DOS-у носители (floppy disk, файловые системы FAT16/32). В итоге в распоряжении рядового пользователя остаются только USB-порты, SSD-накопитель внутри, образ BIOS-а и горячее желание этот образ прошить в CMOS :)

До недавнего времени, можно было скачать в сети готовый образ дискетки с [FreeDOS](http://www.freedos.org/), раскрыть его, записать туда образ BIOS и загрузиться с неё через grub. Однако, упомянутая выше проблема с непомерными габаритами этих самых образов ставит крест на попытке втиснуть их в маленькую, но когда-то такую уютную комнатку образа floppy-диска.

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

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

Сделать загрузочный диск с DOS можно в эмуляторе Qemu, установив в нем дистрибутив FreeDOS. Моя система была Ubuntu 14.04.1, для других систем сложностей возникнуть не должно. Приступим.

**1. Установка qemu**

 

```
yerden@home:~$ sudo apt-get install qemu qemuctl qemu-launcher
```

 

qemu-launcher - это GUI на GTK2+, для простоты работы с Qemu.

**2. Получение образа FreeDOS**

На [официальном сайте проекта](http://www.freedos.org/) в разделе "[Download FreeDOS](http://www.freedos.org/download/)" нужно взять версию [1.0](http://www.freedos.org/download/download/fdbasecd.iso). Последняя версия 1.1 почему-то под Qemu не установилась, ну а я не стал разбираться, да это и не так важно.

 

```
yerden@home:~$ wget http://www.freedos.org/download/download/fdbasecd.iso
```

 

**3. Настройка Qemu**

Запускаем Qemu Launcher:

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/RA83KV1Ipc0Hfi105GMILOQvYQ5bek.png)

Заходим во вкладку "Launcher Settings" и прописываем в "Path to 'qemu'" путь к исполняемому файлу, в зависимости от архитектуры PC. Путь по умолчанию некорректен. Жмём "Save".

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/5jgSQ8Kk7Y2DtuJG1W98y6A77117dU.png)

Возвращаемся на вкладку "Configurations". Возле 'Hard disk 0' щелкаем "New" для создания нового диска. В открывшемся окне выбираем "Create empty raw image", прописываем имя и путь к создаваемому образу. Выбираем также размер диска, 50 Мб хватит за глаза на все прошивки. Имейте в виду, что этот образ будем копировать в /boot, поэтому там должно быть достаточно места для его хранения. Здесь всё, жмём OK.

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/t4ZExL02pM75F1gOCQ94IlXz8o2T2e.png)

В самой вкладке "Configurations" ставим галочку "Use CD-ROM", выбираем "Boot disk: CD-ROM" и в поле CD-ROM, кнопкой "Open" выбираем наш скачанный образ FreeDOS. Внизу, в поле "RAM" выберем, сколько оперативной памяти выдать нашему DOS-у. Хватит ему и 16 Мб. Всё, жмём "Launch".

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/T5cwzMK8aFpH31BhIo5uVMB8B36Nia.png)

Настройка Qemu закончена. Теперь пошла установка FreeDOS.

**3. Установка FreeDOS**

Видим вот такое веселое окошко. Жмём "Enter".

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/NQsKXwSd4AiEvw2EK3sNL6ZOY8lRzX.png)

Выбираем "Install to hard disk using FreeDOS SETUP".

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/2GKnGk230maz03v3TjqkL6S2mb2bsX.png)

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

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/E7wB5fk3GC7q5LHJd779L32dN98gQu.png)

В интерфейсе XFdisk выбираем Options - New Partition - Primary Partition.

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/o3BFKXW65VHAJoTBXXC904ahAUz566.png)

После чего, выбираем "Install Bootmanager".

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/6x8qm34DQr9P14HFD89mu35Jbc5ug8.png)

Затем пытаемся выйти по F3, и нас останавливают вопросом "Не хотите ли записать таблицу разделов на диск?"

![Прошивка больших образов BIOS и Intel ME](http://im9.asset.yvimg.kz/userimages/yerden/EaR4FIv3eB1vv0TpIMs5RMpOvSPjZa.png)

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

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/CvGCFivbjF9zehLY2Uu0omKwCpI3hS.png)

Дальше всё довольно просто, единственное, нужно убрать все галки с дополнительных утилит, предлагаемых инсталлятором к установке. Образ диска не вместит их всех в себя, да они и не нужны для целей прошивки BIOS.

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/X5OnnE0Y96AAh1Bk1JmZHbHaF39A16.png)

После нескольких секунд всё кончено, система установлена.

![Прошивка больших образов BIOS и Intel ME](http://storage.yvision.kz/images/user/yerden/qAV7mMvNb7Dhz1W56Vf1oRwKbDLtOg.png)

Поздравляю, вы установили FreeDOS под Qemu. Закрывайте окошко эмулятора, и теперь мы имеем свежеиспеченный образ диска с DOS.

**4. Копирование прошивок и утилит на образ диска**

Мы имеем образ диска, но кроме FreeDOS там ничего нет. Нужно скопировать туда образы BIOS/ME и утилиты для их прошивки. Давайте рассмотрим наш свежий образ диска:

 

```
yerden@home:~$ fdisk -u -l dos_image.raw Disk dos_image.raw: 52 MB, 52428800 bytes 16 heads, 63 sectors/track, 101 cylinders, total 102400 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System dos_image.raw1 * 63 101807 50872+ e W95 FAT16 (LBA)
```

 

Как мы видим, раздел на диске смещен от начала образа на 63 сектора или на 63 * 512 = 32256 байт (см. последнюю строчку). Используем этот факт и ассоциируем файл образа с данным смещением с loop-устройством:

 

```
yerden@home:~# sudo losetup -o32256 /dev/loop0 dos_image.raw
```

 

После этого, мы можем примонтировать этот раздел к системе. Создаем каталог /mnt/freedos и монтируем туда /dev/loop0:

 

```
yerden@home:~$ sudo mkdir /mnt/freedos yerden@home:~$ sudo mount -t vfat /dev/loop0 /mnt/freedos/ yerden@home:~$ ls -l /mnt/freedos/ total 116 -rwxr-xr-x 1 root root 66945 Aug 28 2006 COMMAND.COM drwxr-xr-x 2 root root 2048 Sep 21 00:22 FDOS -rwxr-xr-x 1 root root 45341 Aug 29 2006 KERNEL.SYS
```

 

Вуаля! Мы видим содержимое раздела. Теперь можно скопировать туда прошивки и утилиты, полученные от производителя:

 

```
yerden@home:~$ cd /mnt/freedos yerden@home:/mnt/freedos$ sudo unzip ~/Downloads/AT7000_C25F1P03_Update_20131122.zip Archive: /home/yerden/Downloads/AT7000_C25F1P03_Update_20131122.zip creating: AT7000_C25F1P03_Update_20131122/ inflating: AT7000_C25F1P03_Update_20131122/AT7000_C25F1P03-Release note.doc creating: AT7000_C25F1P03_Update_20131122/DOS Image/ creating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/ inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW.exe inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/ANSI.SYS inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/CHOICE.COM inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/COMMAND.COM inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/EMM386.EXE inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/HIMEM.SYS inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/IO.SYS inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/MSCDEX.EXE extracting: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/MSDOS.SYS inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/OAKCDROM.SYS inflating: AT7000_C25F1P03_Update_20131122/DOS Image/HPUSBFW/RAMDRIVE.SYS inflating: AT7000_C25F1P03_Update_20131122/HISTORY.TXT creating: AT7000_C25F1P03_Update_20131122/MEBIOS/ inflating: AT7000_C25F1P03_Update_20131122/MEBIOS/C25F1P03.bin extracting: AT7000_C25F1P03_Update_20131122/MEBIOS/flash.bat inflating: AT7000_C25F1P03_Update_20131122/MEBIOS/fparts.txt inflating: AT7000_C25F1P03_Update_20131122/MEBIOS/fpt.exe creating: AT7000_C25F1P03_Update_20131122/SYSBIOS/ inflating: AT7000_C25F1P03_Update_20131122/SYSBIOS/AFUDOS.exe inflating: AT7000_C25F1P03_Update_20131122/SYSBIOS/C25F1P03.ROM extracting: AT7000_C25F1P03_Update_20131122/SYSBIOS/FLASH.BAT
```

 

Отмонтируем образ диска и закроем loop-устройство:

 

```
yerden@home:/mnt/freedos$ cd ~/ yerden@home:~$ sudo umount /mnt/freedos yerden@home:~$ sudo losetup -d /dev/loop0
```

 

Замечательно, теперь в образе диска у нас записаны прошивки. Можно прошивать! Правда, надо ещё с этого образа загрузиться. С помощью загрузчика. Он же GRUB.

**5. Настройка загрузки образа через GRUB**

Проблема в том, что в процессе загрузки образ диска должен быть развернут в оперативной памяти, причем в пространстве выше 1Мб, адресуемого DOS. Затем этот образ должен быть представлен системе именно как жесткий диск через специальный драйвер. Все эти задачи решает программа [memdisk](http://www.syslinux.org/wiki/index.php/MEMDISK) из проекта [syslinux](http://www.syslinux.org/).

Для начала проверьте, что syslinux установлен:

 

```
yerden@home:~$ sudo apt-get install syslinux-common
```

 

Затем скопируем наш образ и memdisk в /boot. Ведь там же хватит места, правда?

UPD: упустил из виду, что memdisk поддерживает сжатые образы дисков (через gzip или zip), что дает существенную экономию места. Образ очень хорошо сжимается, и 50 Мб превращаются в чуть больше 4 Мб. Два момента - (1) у образа должно быть расширение .gz или .zip, в зависимости от алгоритма компрессии и (2) у меня memdisk не захотел кушать gzip (ошибка Decompression error: output buffer overrun), но проглотил zip.

 

```
yerden@home:~$ sudo cp dos_image.raw /boot yerden@home:~$ sudo cp /usr/lib/syslinux/memdisk /boot
```

 

Чтобы GRUB добавил ещё один пункт в меню загрузки, добавьте такие строчки в /etc/grub.d/40_custom:

 

```
yerden@home:~$ cat /etc/grub.d/40_custom ... menuentry "FreeDOS (flash bios)" { set root='hd0,msdos1' linux16 /memdisk initrd16 /dos_image.raw }
```

 

Ну а чтобы иметь возможность выбрать этот пункт, установите необходимые параметры в /etc/default/grub:

 

```
GRUB_DEFAULT=0

# Таймаут в 5 сек для вызова меню через "Esc"GRUB_HIDDEN_TIMEOUT=5# Не загружать систему втихаряGRUB_HIDDEN_TIMEOUT_QUIET=falseGRUB_TIMEOUT=5GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX=""
```

 

Обновляем загрузчик:

 

```
yerden@home:~# sudo update-grub
```

 

Теперь можно перегружаться и, нажав Esc, выбрать пункт "FreeDOS (flash bios)" в меню загрузчика. Загрузится DOS со всеми необходимыми инструментами для прошивки.

Удачи!

---

Source: [https://yvision.kz/post/proshivka-bolshih-obrazov-bios-i-intel-me-430460](https://yvision.kz/post/proshivka-bolshih-obrazov-bios-i-intel-me-430460)