FreeDOSを使ってBIOSをアップグレードする

マザーボードのメーカが改良された新しいBIOSソフトウェアのリリースを発表したときなど、使っているPCのBIOSをアップデートしたくなることがあるでしょう。ところがBIOSインストーラはたいていの場合MS-DOSのプログラムとして提供されています。

ここではUSBデバイスを使ってLinuxのシステムのBIOSアップデートする方法を説明します。USBフラッシュメモリの他にもUSBアダプターを使えばmicro/mini/SDカードなどを使うこともできます。

まず、USBから起動できて、USBハードディスクが使えるようにBIOSを設定する必要があります。USBフロッピー、CD-ROMまたはZIPドライブからしか起動できないBIOSもあって、そのようなケースではBIOSのアップグレードは難しくなりますが、ネットブックPCなど、それ以外方法がないこともあるでしょう。

次の三つが必要です:

  1. USBフラッシュドライブ:望ましくは2Gb以下のもの(FAT16は2Gb以上にアクセスできません、また FreeDOSのインストールは5.8Mbしか使いません。) FAT32では起動できないBIOSもあるため、FAT16の使用をお勧めします。 .
  2. FreeDOSインストールメディア: fdbasecd.iso (8MB) で十分でしょう。.
  3. qemu (apt-get install qemuのコマンドでインストールできます): qemuのエミュレーションでFreeDOSがUSBフラッシュドライブをハードディスクとみなすようにできるため(FreeDOSのCDを焼き付けることなく)普通のインストールが行えます。
重要事項!: 作業中、どの段階においてもUSBフラッシュドライブをけっしてマウントしないこと。デバイスノードの選択は慎重に行うこと、さもないと間違ったドライブ,つまりメインハードディスクののデータが回復の余地なく消去されてしまいます。

USBフラッシュメモリを差し込む 決してマウントしないように!. dmesgの最新のメッセージををチェックしてUSBフラッシュメモリがどのデバイス名になったかを確認します。ここでは仮に/dev/sdbとして進めます。

USBフラッシュメモリをクリアする。(すべてのデータが失われます) ドライブ全体をクリアしても、または最初の16Mbだけをクリアするのでも構いません。

$ 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フラッシュメモリのパーティショニング

USBフラッシュメモリを正しくパーティションイングするのが多分一番難しい作業です.

2Gb以下ののフラッシュメモリのパーティションラベルをFAT16に設定します。(より兌換性の強いドライブになります。)

次にこのパーティションを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

新しいパーティションテーブルをUSBフラッシュメモリに書き込んで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メモリをフォーマットしました。これでインストール作業にとりかかれます。

qumuでFreeDOSを起動する

DOS自体はUSBについてなにも関知しないためFreeDOSインストーラがUSBをあたかも普通の「ハードディスク」とみなすような方法が必要です。通常の起動の場合はシステムBIOSがこれをやってくれますが、ここではqemuを創造的に使う必要があります:

普通のユーザーとして:
$ qemu -hda /dev/sdb -cdrom /path/to/fdbasecd.iso -boot d

ctrl-alt でマウスとキーボードの入力先の切り替えができますから一段階ごとにデスクトップ上のマニュアルを参照できます。

QEMU FreeDOS

これでFreeDOSが起動されUSBフラッシュメモリのデバイスがプライマリマスターHDと認識されました。(qemuのエミュレーション設定によりUSBメモリがハードディスクであるかのようにふるまいます。)仮想モードのFreeDOSの起動メニューからインストーラを選択します

1) Continue to boot FreeDOS from CD-ROM
1
エンター

デフォルトの1を選びつづけ、なにか質問をされたときはYes と答えます。

freedos-inst1
freedos-inst2
freedos-inst3

インストーラに再起動(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
(実際にコマンドを編集するのでなく、ただ行の初めの"SHELLHIGH==C:\FDOS\command.com ....."の前に"1234?"を加えるだけです。
書き加えるのは: 1234?
fdconfig.sys

それ以外はなにも書き換えないこと! この行の内容はインストール設定によって違います。

保存して"edit"を終了します:

[alt]+[f]

コマンドプロンプトに戻ったらqemuを終了できます。

qemuがUSBフラッシュメモリから起動できるかをチェックするコマンド

qemu -hda /dev/sdb -boot c

これでUSBフラッシュメモリから起動ができるようになり、BIOSフラッシングのための5.4MbのFreeDOS全体がUSBメモリににインストールされました。起動メニューから(オプション 4)を選択して余分なドライバーなしで起動するべきです。himem.sysやemm386などのファイルがフラッシングプログラムの作業を邪魔することがあるためです:

BIOSのアップデート

PCの起動中にFreeDOSのUSBフラッシュメモリを挿入し、マウントして、マザーボード/BIOSのメーカーが推奨するBIOSファイルをダウンロードして、USBメモリに保存し、アンマウントします。

PCを終了し、FreeDOSのUSBメモリを挿入し、電源を入れ、FreeDOSをUSBから起動し、あとはマザーボード/BIOSのメーカーの指示する手続きに従ってBIOSをアップデートします。

Content last revised 14/08/2010 0100 UTC