Обновление BIOS с помощью FreeDOS

Иногда можно или даже нужно обновить BIOS, если изготовитель материнской платы предпринял его улучшение. Установочные программы, как правило, предназначены для запуска под MS-DOS.

Мы представим вариант обновления BIOS в Линуке с флешки или карты памяти micro/mini/SD (с подходящим переходником).

Сперва нужно в BIOS разрешить загрузку с USB и убедиться в том, что BIOS умеет работать с USB-накопителями. Некоторые BIOS распознают USB-приводы для гибких магнитных дисков, дисководы CD-ROM или ZIP-дисководы. Большинство из них подойдёт, но обновление BIOS может оказаться посложнее. Часто бывает что это единственная возможность (в первую очередь это касается нэтбуков).

Вам понадобятся:

  1. USB-флешка, желательно до 2 ГБ (FAT16 не позволяет видеть более чем 2 ГБ), а установленная базовая FreeDOS (fdbasecd.iso) всё равно использует только 5,8 МБ. FAT16 является рекомендованным форматом, так как FAT32 не во всех BIOS обнаруживается как загрузочный раздел.
  2. ISO-образ FreeDOS fdbasecd.iso (8MB).
  3. qemu (apt-get install qemu). Qemu предназначена для установки FreeDOS на флешке. В qemu встроенный BIOS позволяет FreeDOS распознать USB-флешку как обычный жесткий диск, так что Вы можете установить и без прожигания CD с FreeDOS.
Очень важное замечание:
Нельзя монтировать USB-флешку! Будьте внимательны при выборе устройства, все данные на выбранном диске будут удалены без какой-либо возможности восстановления данных, например, на основном жестком диске.

Подключите USB-флешку. Помните! Ёе нельзя монтировать. Проверьте dmesg (последние сообщения, после того, как Вы подключили флешку), в котором написан номер устройства, под которым флешка зарегистрирована в системе. В нашем примере /dev/sdb.

Содержание флешки будет удалено. Вы можете стереть всю флешку, а не только первые 16 МБ, как в примере.

$ su
Password:
dd if=/dev/zero of=/dev/sdb bs=1M count=16
16+0 records in
16+0 records out
16777216 bytes (17 MB) copied, 2.35751 s, 7.1 MB/s

Разметка USB-флешки

Самое трудное, скорее всего, это правильно разметить и форматировать флешку.

Установите метки раздела на FAT16 и для флешки размером менее 2 Гб (для лучшей совместимости).

Запустите fdisk для разбивки:

# fdisk /dev/sdb
fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xa8993739.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Теперь создайте новый раздел:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1018, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1018, default 1018):
Using default value 1018

Убедитесь в создании раздела, распечатав таблицу разделов:

Command (m for help): p

Disk /dev/sdb: 2003 MB, 2003828736 bytes
62 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Disk identifier: 0xa8993739

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1018     1956595+  83  Linux

Установите правильный код для FAT16 '6':

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): l

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX

Hex code (type L to list codes): 6

Changed system type of partition 1 to 6 (FAT16)

Активируйте новый раздел:

Command (m for help): a
Partition number (1-4): 1

Распечатайте новую таблицу разделов на экране и убедитесь что новый раздел активирован:

Command (m for help): p

Disk /dev/sdb: 2003 MB, 2003828736 bytes
62 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Disk identifier: 0xa8993739

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        1018     1956595+   6  FAT16

Соханите новую таблицу разделов на Вашей флешке и закончите fdisk:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
# exit

Форматируйте новый раздел на флешке:

mkfs -t vfat -n FreeDOS /dev/sdb1
exit

Подготовка завершена, т.е. USB-флешка разделена и отформатирована. Теперь можно начинать процесс установки.

Загрузка FreeDOS в qemu

Так как DOS не знаком с понятием USB-накопителей, нужно найти путь, чтобы обмануть FreeDOS выдав её за обыкновенный жёсткий диск. При обычной загрузке эту функцию перенимает BIOS, в нашем же случае мы должны использовать для этой цели qemu:

 как пользователь $:
qemu -hda /dev/sdb -cdrom /полный/путь/до/fdbasecd.iso -boot d 

Комбинация клавиш ctrl-alt переключает мышку и клавиатуру между qemu и хост-системой. Таким образом, можно переключаться с одной рабочей среды на другую и читать следующий шаг в инструкции.

QEMU FreeDOS

Таким образом, диск с FreeDOS загружается, а USB-флешка распознаётся в качестве основного жёсткого диска (благодаря способности qemu к эмуляции BIOS). Теперь можно выбрать инсталятор в BOOT-меню виртуального FreeDOS:

1) Continue to boot FreeDOS from CD-ROM
1
enter

Затем выберите дефолтную установку 1 или ответьте Yes в случае, если будет задан вопрос.

freedos-inst1
freedos-inst2
freedos-inst3

Инсталятор потребует перезапуска систему, этого пока не надо делать, так как нужно ещё удалить 2 ошибки в FreeDOS: в Boot-меню и mbr. Нажмите клавишу n.

freedos-do not reboot type n

Запись загрузочного сектора на USB-флешку

Ошибочный mbr можно удалить с помощью:

fdisk /mbr 1

Ошибка в меню загрузочного сектора удаляется в новой конфигурации fdconfig.sys при введении команды:

cd \
edit fdconfig.sys

А строчку, начиная с command.com, нужно изменить так:

1234?SHELLHIGH=C:\FDOS\command.com C:\FDOS /D /P=C:\fdauto.bat /K set
(не изменяйте эту команду, а лишь добавьте "1234?"  в начало строчки (до SHELLHIGH==C:\FDOS\command.com .....
Имейте в виду, читать это нужно как: 1234?
fdconfig.sys

Ничего больше менять нельзя, так как строчка зависит от настроек системы.

Сохраните и выйдите из "edit":

[alt]+[f]

Вернувшись к командной строке, Вы можете покинуть qemu.

Теперь проводим тест - загружается ли qemu с USB-флешки.

qemu -hda /dev/sdb -boot c

Флешка должна выполнить загрузку и содержит полную версию инсталляции FreeDOS (5,4 MБ), чтобы обновить BIOS. При этом не стоит загружать драйвера (в меню опция 4), himem.sys и emm386 могут навредить работе флеш-устройств!

Обновление BIOS

Вставьте флешку с FreeDOS в работающий компьютер, смонтируйте её и загрузите на неё файлы BIOS (рекомендуемые изготовителем). Затем размонтируйте флешку.

Выключите компьютер, вставьте FreeDOS USB-накопитель. Затем включите компьютер, настройте BIOS так, чтобы компьютер загрузился с USB-накопителя чтобы запустить FreeDOS. После этого, следуйте указаниям изготовителя, BIOS или материнской платы.

Содержание, последний раз пересмотрено 14/08/2010 0100 UTC