FreeDOSでBIOSアップデートしてみる
BIOSのupdateにDOS起動が必要とか、いまどき前時代な感じがしますよ。
でも、TX-50のBIOSをアップデートするのには、そういう環境がいるのだよね。
いまさらDOSとかないし。
いや、あるけどFDDなんてもう読めないのじゃ?
Windowsから作るのもなんだし、FreeDOSでやってみることにした。
USB FloppyDIskとかないので、こちらもUSBメモリから起動することにする。
まずは、syslinux入れる。
# apt-get install syslinux Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libcrypt-passwdmd5-perl libdigest-sha1-perl syslinux-common Suggested packages: dosfstools mtools The following NEW packages will be installed: libcrypt-passwdmd5-perl libdigest-sha1-perl syslinux syslinux-common 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 1401 kB of archives. After this operation, 3883 kB of additional disk space will be used. Do you want to continue [Y/n]? Get:1 http://ftp.jp.debian.org/debian/ squeeze/main libcrypt-passwdmd5-perl all 1.3-9 [10.3 kB] Get:2 http://ftp.jp.debian.org/debian/ squeeze/main libdigest-sha1-perl amd64 2.13-1 [26.5 kB] Get:3 http://ftp.jp.debian.org/debian/ squeeze/main syslinux-common all 2:4.02+dfsg-7 [1271 kB] Get:4 http://ftp.jp.debian.org/debian/ squeeze/main syslinux amd64 2:4.02+dfsg-7 [93.3 kB] Fetched 1401 kB in 15s (88.7 kB/s) Selecting previously deselected package libcrypt-passwdmd5-perl. (Reading database ... 26751 files and directories currently installed.) Unpacking libcrypt-passwdmd5-perl (from .../libcrypt-passwdmd5-perl_1.3-9_all.deb) ... Selecting previously deselected package libdigest-sha1-perl. Unpacking libdigest-sha1-perl (from .../libdigest-sha1-perl_2.13-1_amd64.deb) ... Selecting previously deselected package syslinux-common. Unpacking syslinux-common (from .../syslinux-common_2%3a4.02+dfsg-7_all.deb) ... Selecting previously deselected package syslinux. Unpacking syslinux (from .../syslinux_2%3a4.02+dfsg-7_amd64.deb) ... Processing triggers for man-db ... Setting up libcrypt-passwdmd5-perl (1.3-9) ... Setting up libdigest-sha1-perl (2.13-1) ... Setting up syslinux-common (2:4.02+dfsg-7) ... Setting up syslinux (2:4.02+dfsg-7) ...
USBメモリか...
とりあえず32MB(!)と書いてあるのが転がっているので、これでいいか。
sdcとして認識された。
パーティションはこんなの。
# fdisk -l /dev/sdc Disk /dev/sdc: 31 MB, 31571968 bytes 129 heads, 41 sectors/track, 11 cylinders Units = cylinders of 5289 * 512 = 2707968 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 /dev/sdc1 * 1 12 30811+ 4 FAT16 <32M Partition 1 has different physical/logical endings: phys=(10, 128, 41) logical=(11, 84, 41)
めんどくさいのでパーティション切り直して、再フォーマットする。
ついでにMBRもクリーンに再構築。
# dd if=/dev/zero of=/dev/sdc bs=1024 count=1 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 0.0150349 s, 68.1 kB/s
きれいになった。
# fdisk -l /dev/sdc Disk /dev/sdc: 31 MB, 31571968 bytes 1 heads, 61 sectors/track, 1010 cylinders Units = cylinders of 61 * 512 = 31232 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdc doesn't contain a valid partition table
mbrを安全に実行するのにliloを使う。ダウンロードとインストール。
# apt-get install lilo Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: mbr Suggested packages: lilo-doc The following NEW packages will be installed: lilo mbr 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 428 kB of archives. After this operation, 1368 kB of additional disk space will be used. Do you want to continue [Y/n]? Get:1 http://ftp.jp.debian.org/debian/ squeeze/main mbr amd64 1.1.10-2 [23.6 kB] Get:2 http://ftp.jp.debian.org/debian/ squeeze/main lilo amd64 1:22.8-10 [405 kB] Fetched 428 kB in 5s (83.0 kB/s) Preconfiguring packages ... Selecting previously deselected package mbr. (Reading database ... 27014 files and directories currently installed.) Unpacking mbr (from .../mbr_1.1.10-2_amd64.deb) ... Selecting previously deselected package lilo. Unpacking lilo (from .../lilo_1%3a22.8-10_amd64.deb) ... Processing triggers for man-db ... Setting up mbr (1.1.10-2) ... Setting up lilo (1:22.8-10) ...
クリーンなMRRを書き込み。
# lilo -M /dev/sdc mbr Backup copy of /dev/sdc in /boot/boot.0820 The Master Boot Record of /dev/sdc has been updated.
パーティションを1つ作成。
# fdisk /dev/sdc WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (2-1010, default 2): Using default value 2 Last cylinder, +cylinders or +size{K,M,G} (2-1010, default 1010): Using default value 1010 Command (m for help): a Partition number (1-4): 1 Command (m for help): t Selected partition 1 Hex code (type L to list codes): c Changed system type of partition 1 to c (W95 FAT32 (LBA)) 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.
確認。
# fdisk -l /dev/sdc Disk /dev/sdc: 31 MB, 31571968 bytes 1 heads, 61 sectors/track, 1010 cylinders Units = cylinders of 61 * 512 = 31232 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x19391b1e Device Boot Start End Blocks Id System /dev/sdc1 * 2 1010 30774+ c W95 FAT32 (LBA)
FATでフォーマット。
dosfstoolsも入ってない(^^;。
# apt-get install dosfstools Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: dosfstools 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 92.2 kB of archives. After this operation, 197 kB of additional disk space will be used. Get:1 http://ftp.jp.debian.org/debian/ squeeze/main dosfstools amd64 3.0.9-1 [92.2 kB] Fetched 92.2 kB in 3s (26.4 kB/s) Selecting previously deselected package dosfstools. (Reading database ... 27079 files and directories currently installed.) Unpacking dosfstools (from .../dosfstools_3.0.9-1_amd64.deb) ... Processing triggers for man-db ... Setting up dosfstools (3.0.9-1) ...
フォーマット。
# mkfs.vfat /dev/sdc1 mkfs.vfat 3.0.9 (31 Jan 2010)
syslinuxをインストール。
# syslinux -m /dev/sdc1 sh: mcopy: not found syslinux: failed to create ldlinux.sys
あれ? mtoolsがないのか。
# apt-get install mtools Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: floppyd The following NEW packages will be installed: mtools 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 188 kB of archives. After this operation, 418 kB of additional disk space will be used. Get:1 http://ftp.jp.debian.org/debian/ squeeze/main mtools amd64 4.0.12-1 [188 kB] Fetched 188 kB in 2s (85.5 kB/s) Selecting previously deselected package mtools. (Reading database ... 27105 files and directories currently installed.) Unpacking mtools (from .../mtools_4.0.12-1_amd64.deb) ... Processing triggers for man-db ... Processing triggers for install-info ... Setting up mtools (4.0.12-1) ...
再度。
# syslinux -m /dev/sdc1
マウントしてみる。
# mount /dev/sdc1 /mnt/ # cat /proc/mounts | grep /mnt /dev/sdc1 /mnt vfat rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8,shortname=mixed,errors=remount-ro 0 0 # ls -la /mnt total 52 drwxr-xr-x 2 root root 16384 Jan 1 1970 . drwxr-xr-x 21 root root 4096 May 13 17:11 .. -r-xr-xr-x 1 root root 32768 Jul 30 2011 ldlinux.sys
FreeDOSを落とす。8Mのisoが最小のだな。
# wget wget ftp://ftp.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdbasecd.iso
md5sumの確認。
# md5sum fdbasecd.iso c9bfcf2d08dbe8bdb1fe95fb339e0b2b fdbasecd.iso
マウントしてみる。
# mount -o loop fdbasecd.iso /media/cdrom
なんかいろいろアーカイブされているのねぇ。
knoppixの残骸が設定にいっぱい。
とりあえず、必要なのは、kernel.sysとcommnad.comだけ。
# cp /media/cdrom/freedos/packages/base/sysx.zip freedos/ # cp /media/cdrom/freedos/packages/base/commandx.zip freedos/
展開。
# unzip -L freedos/sysx.zip -d freedos Archive: freedos/sysx.zip inflating: freedos/appinfo/country.lsm inflating: freedos/appinfo/fdkernel.lsm inflating: freedos/appinfo/sys.lsm inflating: freedos/bin/country.sys inflating: freedos/bin/kernel.sys inflating: freedos/bin/kernel16.sys inflating: freedos/bin/kernel32.sys inflating: freedos/bin/krnlupdt.bat inflating: freedos/bin/sys.com inflating: freedos/bin/winkern.sys inflating: freedos/config.sys creating: freedos/doc/kernel/ inflating: freedos/doc/kernel/bugs.txt inflating: freedos/doc/kernel/build.txt inflating: freedos/doc/kernel/config.txt inflating: freedos/doc/kernel/contrib.txt inflating: freedos/doc/kernel/history.txt inflating: freedos/doc/kernel/intfns.txt inflating: freedos/doc/kernel/lfnapi.txt inflating: freedos/doc/kernel/mkboot.txt inflating: freedos/doc/kernel/nls.txt inflating: freedos/doc/kernel/readme.cvs inflating: freedos/doc/kernel/readme.txt inflating: freedos/doc/kernel/sys.txt inflating: freedos/help/sys.en creating: freedos/packages/sysx/ inflating: freedos/packages/sysx/remove.bat # unzip -L freedos/commandx.zip -d freedos Archive: freedos/commandx.zip creating: freedos/appinfo/ inflating: freedos/appinfo/command.lsm creating: freedos/bin/ inflating: freedos/bin/command.com inflating: freedos/bin/fdcom.ico creating: freedos/doc/ creating: freedos/doc/freecom/ inflating: freedos/doc/freecom/cmd.html inflating: freedos/doc/freecom/file_id.diz inflating: freedos/doc/freecom/freecom.html inflating: freedos/doc/freecom/k-swap.txt inflating: freedos/doc/freecom/read1st.txt inflating: freedos/doc/freecom/readme.txt extracting: freedos/doc/freecom/version.txt inflating: freedos/doc/freecom/vspawn.txt creating: freedos/help/ extracting: freedos/help/command.en inflating: freedos/help/freecom.en creating: freedos/nls/ inflating: freedos/nls/cmd-de.com inflating: freedos/nls/cmd-en.com inflating: freedos/nls/cmd-es.com inflating: freedos/nls/cmd-fr.com inflating: freedos/nls/cmd-it.com inflating: freedos/nls/cmd-nl.com inflating: freedos/nls/cmd-pl.com inflating: freedos/nls/cmd-pt.com inflating: freedos/nls/cmd-ru.com inflating: freedos/nls/cmd-sv.com inflating: freedos/nls/cmd-ua.com inflating: freedos/nls/cmd-yu.com inflating: freedos/nls/cmd-yu43.com inflating: freedos/nls/makecmd.bat creating: freedos/packages/ creating: freedos/packages/commandx/ # cp freedos/bin/kernel.sys /mnt/ # cp freedos/bin/command.com /mnt/
これだけでは起動できない。
チェーンローダー経由で起動するのに入れる。
# dpkg -L syslinux-common | grep chain.c32 /usr/lib/syslinux/chain.c32 # cp /usr/lib/syslinux/chain.c32 /mnt/ # vi /mnt/syslinux.cfg default freedos prompt 1 timeout 30 label freedos kernel chain.c32 append freedos=/kernel.sys
こんでどを?
よし、出来た。
起動を確認。
安全な運用のためには、autoexec.batを作ったほうがいいけど、めんどくさいからやらない。
BIOSのexeをUSBメモリにコピー。
TX-50にこのUSBメモリを挿して起動すると、USBメモリ側から起動してきた。
DOSプロンプトになる。
日付と時間入れるとか、なつかしーねー。入れないけど。
実行すると、アップデータが起動、書き換え後に自分で再起動した。
BIOS画面からは、バージョンの確認はできない。
VGAなしで起動してみた。
とりあえず、NICさしたら通信しているようなので、起動している模様。