FreeDOS 1.2 がリリースされたので FreeDOS/V 化してみた
12月25日、クリスマスの日に FreeDOS が約 5 年ぶりにアップデートされ version 1.2 がリリースされた。
新しく出たからには FreeDOS/V 相当に仕立て上げて日本語が使えるようにしてみた。
まぁ、今更 DOS を使うことはほとんどないので、これは*粋狂*って奴ですな…
※ 例によって本記事は PC に詳しい人向けであり、特に DOS と Linux の両方に精通していないと理解は難しいかもしれません。
FreeDOS 1.2 で何が変わったのか?
まぁ、機能的には以前とほとんど違いはないでしょうね。安定度が上がり、 包含されるソフトが増えたりアップデートされた 程度でしょう。
ただ、 FreeDOS/V 化にあたって影響があるものがいくつか。
VESAPAT.EXE
は不要に
むしろこれを組み込むと日本語モードと英語モードの切り替えができなくなる。NLSFUNC.EXE
を組み込むメリットは無さそう
軽く試した限りでは NLSFUNC を組み込むか否かで機能的な差は見えなかった。
仕立て上げた FreeDOS/V 起動フロッピーイメージ
作り方等は後回しにして、とりあえず出来上がりのイメージを…
ルートにはお決まりのファイルだけ。
Directory of A:\
[FDOS] AUTOEXEC.BAT COMMAND.COM FDCONFIG.SYS KERNEL.SYS
4 file(s) 116,399 bytes
1 dir(s) 118,272 bytes free
FDOS
ディレクトリには BIN
ディレクトリだけ作り、以下のファイルを入れた。
Directory of A:\FDOS\BIN
[.] [..] 04GZN16X.FNT ATTRIB.COM CC.COM
CHEJ.EXE CHKDSK.EXE CHOICE.EXE COUNTRY.SYS CP437UNI.TBL
CP932UNI.TBL CTMOUSE.EXE CWSDPMI.EXE DELTREE.COM DEVLOAD.COM
DISPV.EXE DISPVB.EXE DOSLFN.COM DSP4U.COM DSPVV.COM
EDIT.EXE EDIT.HLP FDAPM.COM FDISK.EXE FDISK.INI
FDISKPT.INI FONTN.INI FONTNX.EXE FORMAT.EXE GURI16X.FNT
GURI19X.FNT HIMEMX.EXE JEMM386.EXE JEMMEX.EXE JLOAD.EXE
KEYB.EXE KEYBOARD.SYS LABEL.EXE MEM.EXE MODE.COM
MORE.EXE MOVE.EXE NANSI.SYS NLSFUNC.EXE PANSI.SYS
RDISK.COM SHSUCDX.COM SYS.COM UDVD2.SYS UHDD.SYS
UNZIP.EXE VASK.COM VCHOICE.COM VCLS.COM VCURSOR.COM
VDELAY.COM VDELETE.COM VECHO.COM VERRLVL.COM VFDUTIL.COM
VFRAME.COM VGOTOXY.COM VINFO.COM VINSERT.COM VLINE.COM
VMATH.COM VMODE.COM VPAUSE.COM VPROGRES.COM VSTR.COM
XCOPY.EXE
69 file(s) 1,202,332 bytes
2 dir(s) 118,272 bytes free
だいたい、起動に必要なものと日本語化に必要なものを入れるだけでいっぱいいっぱい。
V8Power Tools を含めたのでファイル数は結構多くなっている。
FDCONFIG.SYS
一般的な DOS の CONFIG.SYS
相当のファイル。
FreeDOS に慣れていない人が見ると構文が違うので違和感があるかも…
;!SWITCHES=/F
!MENUCOLOR=7,1
MENU FreeDOS
MENU ----------------------------------------------------------------------
MENU 0 - Safe Mode (don't load any drivers)
MENU 1 - XMS
MENU 2 - CD/DVD + XMS
MENU 3 - CD/DVD + XMS + EMS
MENU 4 - Japanese + CD/DVD + XMS
MENU 5 - Japanese + CD/DVD + XMS + EMS
MENU 6 - Japanese + CD/DVD + XMS + DPMI
MENU ----------------------------------------------------------------------
MENUDEFAULT=4,10
0?ECHO Warning: basic stuff only!
!COUNTRY=081,,\FDOS\BIN\COUNTRY.SYS
!LASTDRIVE=Z
!BUFFERS=20
!FILES=40
123456?DOS=HIGH
123456?DOS=UMB
123456?DOSDATA=UMB
1246?DEVICE=\FDOS\BIN\JEMMEX.EXE NOEMS X=TEST I=TEST
;35?DEVICE=\FDOS\BIN\HIMEMX.EXE
;35?DEVICE=\FDOS\BIN\JEMM386.EXE X=TEST I=TEST NOVME NOINVLPG
35?DEVICE=\FDOS\BIN\JEMMEX.EXE X=TEST I=TEST
456?DEVICEHIGH=\FDOS\BIN\FONTNX.EXE
;123?DEVICEHIGH=\FDOS\BIN\NANSI.SYS /S
;456?DEVICEHIGH=\FDOS\BIN\PANSI.SYS
0?SHELL=A:\COMMAND.COM A:\ /E:1024 /P=A:\AUTOEXEC.BAT
123456?SHELLHIGH=A:\COMMAND.COM A:\ /E:1024 /P=A:\AUTOEXEC.BAT
こうすることで起動時にメニューを表示して環境を選択できる。
※ スクリーンショットを撮るために QEMU を使って起動した画面
FreeDOS 1.2 のインストーラにより作られた起動イメージは EMS 使用時に HIMEMX.EXE
を使い JEMM386.EXE
に I=B000-B7FF
のパラメタを指定している。本来は B000-B7FF
のアドレスはグラフィックアダプタの空間として予約されており、手元のマシンではリブート後も画面にゴミが載ったりしていたので、単独で XMS と EMS の両方をサポートする JEMMEX.EXE
に変更した。
ただ、どうも EMS を使うと不安定になる傾向があるので、できるだけ EMS は使わない方がいいだろう。
【追記 2020-02-09】
JEMMEX 5.79 filnal がリリースされた。
これにより EMS でも安定するようになったような気がする。
AUTOEXEC.BAT
こちらは一般的な DOS の構文と大差はない。
@echo off
SET LANG=
SET TZ=JST-9
SET DOSDIR=A:\FDOS
SET PATH=%DOSDIR%\BIN
if not exist C:\FDOS\BIN\HELP.EXE goto FDONLY
SET DOSDIR=C:\FDOS
SET PATH=%DOSDIR%\BIN;%PATH%
if exist %DOSDIR%\NLS\CHOICE.EN SET NLSPATH=%DOSDIR%\NLS
if exist %DOSDIR%\HELP\COMMAND.EN SET HELPPATH=%DOSDIR%\HELP
SET TEMP=%DOSDIR%\TEMP
SET TMP=%TEMP%
:FDONLY
if "%CONFIG%"=="0" goto END
loadhigh FDAPM ADV:REG
loadhigh KEYB JP,932,%DOSDIR%\BIN\KEYBOARD.SYS
rem loadhigh NLSFUNC %DOSDIR%\BIN\COUNTRY.SYS
if "%CONFIG%"=="1" goto COMMON
if "%CONFIG%"=="2" goto CDROM
if "%CONFIG%"=="3" goto CDROM
if not "%CONFIG%"=="6" goto JP
:DPMI
loadhigh CWSDPMI -p
if exist %DOSDIR%\djgpp\bin\cat.exe SET PATH=%PATH%;%DOSDIR%\djgpp\bin
:JP
vframe /x14 /y8 /h10 /w52 /fBlack /bGray Single Shadow
vecho
vecho /fBlue " Which driver do you want to use for Japanese?"
vline hidden
vecho " D: DISPV"
vecho " B: DISPVB"
vecho " V: DSPVV"
vecho " No display driver to load for now."
vchoice /fLightGreen /bBlack /t10 /d1
set choice=%errorlevel%
vgotoxy eot
verrlvl %choice%
set choice=
if errorlevel 4 goto CDROM
if errorlevel 3 goto DSPVV
if errorlevel 2 goto DISPVB
:DISPV
loadhigh DISPV /HS=on
goto JP2
:DISPVB
loadhigh DISPVB /HS=on
goto JP2
:DSPVV
loadhigh DSPVV
:JP2
rem loadhigh DSP4U /VD=71
CHEJ JP
:CDROM
DEVLOAD /H /Q %DOSDIR%\BIN\UDVD2.SYS /D:FDCD0001
SHSUCDX /QQ /D3
SHSUCDX /QQ /~ /D:?FDCD0001,Q /D:?FDCD0002,Q /D:?FDCD0003,Q
:COMMON
rem loadhigh DOSLFN
rem loadhigh RDISK /S80 /:R
rem loadhigh CTMOUSE
:END
SET DIRCMD=/P /OGN /Y
rem SET COPYCMD=/-Y
alias reboot=fdapm warmboot
alias reset=fdisk /reboot
alias halt=fdapm poweroff
alias shutdown=fdapm poweroff
FreeDOS では %CONFIG%
変数に起動時に指定したメニューの番号が入る。
後述するが、このフロッピー起動イメージは USB メモリから GRUB
を使って起動することを想定して作っているため、 C:
ドライブの有無で挙動が変わるようにしている。
日本語ディスプレイドライバは、環境によって安定するドライバが異なるため、 V8Power Tools でポップアップメニューを表示して選択するようにしている。使用するドライバが確定しているのなら、このあたりはバッサリ削除するのがいいだろう。
なお、 FDCONFIG.SYS
の
COUNTRY=081,,\FDOS\BIN\COUNTRY.SYS
を
0123?COUNTRY=081,,\FDOS\BIN\COUNTRY.SYS
456?COUNTRY=081,932,\FDOS\BIN\COUNTRY.SYS
のようにすれば、 AUTOEXEC.BAT
内で CHEJ JP
をしなくても最初から日本語モードになる。
起動フロッピーディスクイメージの作り方
Linux 使いではない方には申し訳ないが、 Linux だと簡単にできるので…
まずは Download サイトから Boot floppy
イメージと CDROM "standard" installer
イメージをダウンロードする。
ダウンロードした Boot floppy (FD12FLOPPY.zip
) ファイルを unzip して展開された FLOPPY.img
と CDROM イメージ (FD12CD.iso
) を loop mount する。
※ loop mount は root でないとできない
# mkdir floppy
# mount FLOPPY.img floppy -o loop
# mkdir cd
# mount FD12CD.iso cd -o loop
これで floppy
ディレクトリ配下にフロッピーイメージがマウントされるので、あとは好きなようにファイルやディレクトリを削除・追加したり、設定ファイル (FDCONFIG.SYS
/ AUTOEXEC.BAT
等) を編集できる。注意が必要なのは、 KERNEL.SYS
だけはいじらないことと、操作が終わったら umount
すること。
FDOS/BIN
ディレクトリを作成し、元々あるFDSETUP/BIN
配下から必要なファイルを移す。- 不要となった
FDSETUP
配下をバッサリ消す。 - FreeDOS 関連で不足するものがあれば
cd
配下の.ZIP
ファイルを展開し、必要なファイルをFDOS/BIN
配下にコピーする。 - 日本語化に必要なファイルを Vector 等からダウンロードして
FDOS/BIN
配下にコピーする。
このあたりは DOS環境構築日記 や How to set up DOS が詳しい。
私のFDCONFIG.SYS
で使っているFONTNX.EXE
は 軟式 から。 FDCONFIG.SYS
やAUTOEXEC.BAT
を編集する。
上に書いた私の環境をそのままコピペしてもいいでしょう。- 最後に忘れずに
umount
する。
うまくいけば、 V-Text でも表示できるはず。 (CHEJ VT
を実行)
CHEJ US
で英語モードへの切り替えも OK。
FreeDOS/V を USB から起動する
一般的なのは USB を FreeDOS 用のハードディスクイメージにしてしまうことでしょう。でも、大容量の USB メモリをその用途だけに使うのはもったいない。
そこで、 FAT32 (VFAT) でフォーマットした USB メモリを GRUB2 でマルチブートできるようにし、そこから先に作成したフロッピーディスクイメージを使って起動する。
GRUB2 を USB メモリにインストールする方法はググればたくさん出てくるのでそちらに譲る。 ([1] [2] 等)
注意が必要なのは、最近の PC だと Linux に EFI 版の GRUB しかインストールされていないケースもあるので、ちゃんと BIOS 版の GRUB (Debian だと grub-pc-bin
パッケージの方) を使う (--target=i386-pc
を指定する) 必要があること。試してはいないが、たぶん EFI からは FreeDOS は起動できないはず。気になる方は BIOS と EFI のどちらでも起動可能な GRUB2 のインストール方法 等を参照。
GRUB2 をインストールした USB メモリができたら次のことをする。
- USB メモリの FAT32 でフォーマットしたパーティションに
FDOS
ディレクトリを作成 FDOS
ディレクトリに先に作成したFLOPPY.img
をコピー- CDROM インストーラーの
FD12CD.iso
の中の/ISOLINUX/MEMDISK
を USB メモリの同じくFDOS
ディレクトリにコピー USB メモリの
/boot/grub/grub.conf
を編集 (or 作成) して以下のようなエントリーを作る
前半部分は GRUB をインストールした環境に応じて適宜修正が必要。 (特にuuid
部分は修正必須)set timeout=none insmod biosdisk insmod part_msdos insmod fat set root='(hd0,msdos1)' set uuid='XXXX-XXXX' search --no-floppy --fs-uuid --set=root ${uuid} drivemap -s (hd0) ${root} set gfxmode=640x480 insmod vbe insmod vga terminal_output gfxterm menuentry "FreeDOS" { linux16 /FDOS/MEMDISK initrd16 /FDOS/FLOPPY.img }
USB メモリの
FDOS
ディレクトリ配下に好きな DOS のソフトをインストールする
これでフロッピーディスクイメージに入っていない各種ソフトも使えるようになる。
このやり方の難点は、フロッピーディスクイメージは RAMDISK として展開されるため、 FreeDOS 起動中に内容を修正できないこと。 AUTOEXEC.BAT
のここを変えたい…と思っても、一旦 FreeDOS を終了させて再度 Linux 上でイメージを loop mount させて編集するしかない。まぁ、私は「不用意に変更できない」というメリットとして捉えている。
私自身は、この USB メモリをレスキュー用や Linux のインストーラとしても使っている。
例えば、 Ubuntu GNOME のインストーラ用に grub.conf に以下のようなエントリーを追加している。
(これは FMV Lifebook TH40/D に Ubuntu GNOME をインストールした時のもの)
menuentry "Ubuntu GNOME 16.04 32bit" {
set isoimage=/iso/ubuntu-gnome-16.04.1-desktop-i386.iso
loopback loop ${isoimage}
linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu-gnome.seed boot=casper maybe-ubiquity iso-scan/filename=${isoimage} quiet splash --
initrd (loop)/casper/initrd.lz
}
こうすることで、いちいち iso イメージを DVD に焼くことなく、 USB メモリの /iso
ディレクトリに iso イメージを放り込めば USB メモリがインストーラになる。
※ ただ、これができるのは Ubuntu のような iso ファイル内をスキャンすることが考慮されているディストリビューションに限られる。
QEMU で FreeDOS を起動
フロッピーディスクイメージを作成したら、実マシンではなく仮想マシン上で試した方が楽でしょう。
※ これは Debian の例であって、 CentOS 等ではコマンドライン指定が異なる場合もある
$ qemu -fda FLOPPY.img
また、 FreeDOS のインストーラが実際にどんな風に HDD にインストールするのかも気になるところ。これも実マシンでやると HDD の用意だとかパーティションだとか結構面倒なので、仮想マシンで試した方が早い。
$ qemu-img qemu-img create FD12.img 128M
$ qemu -boot d -cdrom FD12CD.iso -hda FD12.img
...
(指示に従って FreeDOS をインストール)
...
$ qemu -hda FD12.img
単に中身を確認したいだけなら、 32MB 程度のイメージがあればインストール可能。
このディスクイメージの中身を変えたい場合も、 loop mount させるのが簡単。
# fdisk -l FD12.img
Device Boot Start End Sectors Size Id Type
FD12.img1 * 63 262143 262081 128M 6 FAT16
# expr 63 \* 512
32256
# mkdir fd12hd
# mount FD12.img fd12hd -o loop,offset=32256
これで fd12hd
配下のファイルを好きなように変更できる。
以下は FreeDOS/V 環境を整備して V-Text 環境で VZ を起動したところ。
まぁ、こうまでして FreeDOS/V 環境を作っても、実際に使う場面はまず無いんだよな…
« Xorg Radeon ドライバ上で VMware を使う | トップページ | SSD への Windows 10 インストールでハマる »
「DOS」カテゴリの記事
- FreeDOS 1.2 がリリースされたので FreeDOS/V 化してみた(2016.12.30)
コメント
« Xorg Radeon ドライバ上で VMware を使う | トップページ | SSD への Windows 10 インストールでハマる »
こんにちは
dellパソのBIOS書き換えにDOSを使います。
BIOSが動かないので意味なしかも?
freedos1.2を使うUSBをfat32にれて使う予定です。
もう耄碌が始まって・・記事文章を読んでも位置関係がわからないのがあります。
BIN ディレクトリだけ作り、以下のファイルを入れた・・何から作りますか?
floppy ディレクトリ配下に・・見つかりません。
FreeDOS/V を USB から起動この先は後回し・・まだいけません
時間があれば続きを・・・
投稿: ね困る | 2018-10-27 20:17
最近のパソコンの BIOS 書き換えには DOS は必要としませんし、そもそも BIOS 書き換えが目的ならば DOS/V 化は不要で普通に英語版のままやった方が無難です。
投稿: ブログ主 | 2018-10-27 22:59