« Xorg Radeon ドライバ上で VMware を使う | トップページ | SSD への Windows 10 インストールでハマる »

2016-12-30

FreeDOS 1.2 がリリースされたので FreeDOS/V 化してみた

12月25日、クリスマスの日に FreeDOS が約 5 年ぶりにアップデートされ version 1.2 がリリースされた。
新しく出たからには FreeDOS/V 相当に仕立て上げて日本語が使えるようにしてみた。

まぁ、今更 DOS を使うことはほとんどないので、これは*粋狂*って奴ですな…

FreeDOS/V

※ 例によって本記事は 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 FDCONFIG.SYS

FreeDOS 1.2 のインストーラにより作られた起動イメージは EMS 使用時に HIMEMX.EXE を使い JEMM386.EXEI=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 でポップアップメニューを表示して選択するようにしている。使用するドライバが確定しているのなら、このあたりはバッサリ削除するのがいいだろう。

V8Power Tools を使った FreeDOS/V Display Driver 選択画面

なお、 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 すること。

  1. FDOS/BIN ディレクトリを作成し、元々ある FDSETUP/BIN 配下から必要なファイルを移す。
  2. 不要となった FDSETUP 配下をバッサリ消す。
  3. FreeDOS 関連で不足するものがあれば cd 配下の .ZIP ファイルを展開し、必要なファイルを FDOS/BIN 配下にコピーする。
  4. 日本語化に必要なファイルを Vector 等からダウンロードして FDOS/BIN 配下にコピーする。
    このあたりは DOS環境構築日記How to set up DOS が詳しい。
    私の FDCONFIG.SYS で使っている FONTNX.EXE軟式 から。
  5. FDCONFIG.SYSAUTOEXEC.BAT を編集する。
    上に書いた私の環境をそのままコピペしてもいいでしょう。
  6. 最後に忘れずに umount する。

うまくいけば、 V-Text でも表示できるはず。 (CHEJ VT を実行)

FreeDOS/V V-Text

CHEJ US で英語モードへの切り替えも OK。

Freedos4

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 を起動したところ。

VZ on FreeDOS/V

まぁ、こうまでして FreeDOS/V 環境を作っても、実際に使う場面はまず無いんだよな…

« Xorg Radeon ドライバ上で VMware を使う | トップページ | SSD への Windows 10 インストールでハマる »

DOS」カテゴリの記事

コメント

こんにちは
dellパソのBIOS書き換えにDOSを使います。
BIOSが動かないので意味なしかも?
freedos1.2を使うUSBをfat32にれて使う予定です。
もう耄碌が始まって・・記事文章を読んでも位置関係がわからないのがあります。
BIN ディレクトリだけ作り、以下のファイルを入れた・・何から作りますか?
floppy ディレクトリ配下に・・見つかりません。
FreeDOS/V を USB から起動この先は後回し・・まだいけません
時間があれば続きを・・・

最近のパソコンの BIOS 書き換えには DOS は必要としませんし、そもそも BIOS 書き換えが目的ならば DOS/V 化は不要で普通に英語版のままやった方が無難です。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: FreeDOS 1.2 がリリースされたので FreeDOS/V 化してみた:

« Xorg Radeon ドライバ上で VMware を使う | トップページ | SSD への Windows 10 インストールでハマる »

2020年3月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31