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など、それ以外方法がないこともあるでしょう。
次の三つが必要です:
- USBフラッシュドライブ:望ましくは2Gb以下のもの(FAT16は2Gb以上にアクセスできません、また FreeDOSのインストールは5.8Mbしか使いません。) FAT32では起動できないBIOSもあるため、FAT16の使用をお勧めします。 .
- FreeDOSインストールメディア: fdbasecd.iso (8MB) で十分でしょう。.
- 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 でマウスとキーボードの入力先の切り替えができますから一段階ごとにデスクトップ上のマニュアルを参照できます。
これでFreeDOSが起動されUSBフラッシュメモリのデバイスがプライマリマスターHDと認識されました。(qemuのエミュレーション設定によりUSBメモリがハードディスクであるかのようにふるまいます。)仮想モードのFreeDOSの起動メニューからインストーラを選択します
1) Continue to boot FreeDOS from CD-ROM
1
エンター
デフォルトの1を選びつづけ、なにか質問をされたときはYes と答えます。
インストーラに再起動(boot)するか聞かれたときはまだ再起動しないように!インストーラの二つのエラー(MBRと起動メニュー)を再起動前に修正しなくてはなりません。. 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?
それ以外はなにも書き換えないこと! この行の内容はインストール設定によって違います。
保存して"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をアップデートします。