FreeDOS 1.3をQEMU上で動かそう ( 自動化スクリプトで日本語環境やツールも一括導入してみる )



 ときどき妙に、「MS-DOSが懐かしくなる」ことがあります。まあ、PCを使い始めた頃の環境がDOSだったのですから、これはある意味当然のことなのかもしれません。郷愁ですね。
その中には、「こんなときは、自宅で鉄道旅行でもプランニングしよう(2)(MARS を動かす環境を作る)」で紹介したMARSのように、現在でも使い続けているツールもありますから、MS-DOS環境は一定整備しておかねばなりません。前回は、先人の作った環境をそのまま拝借してしまいましたが、今回はハードディスクイメージを新規作成し、DOS環境を一からインストールしてみましょう。

 導入するOSは、「FreeDOS 1.3」となります。その名のとおり、フリーなDOS環境で、現在でも開発が続けられているという貴重な存在です。Wikipediaでは、下記のように紹介されています。

FreeDOSは、PC/AT互換機のためのオペレーティングシステム (OS) である。MS-DOS互換の自由な代替環境などを目的として作られた。現在の最新バージョンは2022年2月20日に公開された1.3である。


[1] 事前準備

(1) QEMUのインストール

 DOSを動かすために実機を使うのは現実的でないので、仮想環境を使いましょう。今回は QEMU で386環境をエミュレート、そのうえで、FreeDOSを稼働させます。なお、実マシン環境は、Xubuntu 22.04 を使用しています。

まずは、QEMUをインストール

sudo apt -y install qemu qemu-utils qemu-system-x86  

(2) ハードディスクイメージの作成

 次に、FreeDOSをインストールするハードディスクイメージを作成します。DOSですので、128MBもあれば十分でしょう。
適当なディレクトリ(以下 /home/xxxx/freedos とする)を用意し、下記のコマンドでファイル(fd13.imgとする)を作成します。

cd /home/xxxx/freedos  
qemu-img create -f raw fd13.img 128M  

(3) FreeDOS 1.3 のダウンロード

 このサイトの中央に表示されている LiveCD をクリック、FD13-LiveCD.zipをダウンロードし、(2)と同じディレクトリ(/home/xxxx/freedos)に解凍しておきます。


[2] FreeDOSのインストール

 先に解凍したFreeDOSのCDイメージからブートし、FreeDOSのインストールを開始します。下記のスクリプトを起動しましょう。

qemu-system-i386 -m 16 -rtc base=localtime -drive file=fd13.img,format=raw -cdrom FD13LIVE.iso -boot d  

1) インストールの実行

 最初に下記の画面が出るので、ここからガイダンスに従って進めていくだけです。

まずは、 “Install to harddisk” を選択します。注意すべき点は、完了後 Reboot を選ぶと、再度この画面に戻ってきますので、ここでもう一度 “Install to harddiskを” を選択して進めることです。LanguageKeyboard も、後から再設定できるので、English のままで構いません。

導入する Package は、英語版のツールに興味はないので、Plain DOS system だけにしておきます。

Full installation を選択すると、ディスク容量が128Mでは足りないと思いますので、その場合は、(2)で作成するディスクイメージ容量を512M程度にしておくと良いでしょう。


2) FreeDOSの起動

 完了後、ハードディスクにインストールしたFreeDOSを起動します。

qemu-system-i386 -m 16 -rtc base=localtime  -device sb16 -device adlib -drive file=/home/xxxx/freedos/fd13.img,format=raw -boot order=c  

下記の画面が出れば、FreeDOS 1.3のインストールは完了です。


[3] 日本語環境と基本ツールのインストール

 英語圏の方は、前項までの作業で終了。楽で良いですな。
しかし、極東に住む大和民族はそうはいかないので、ここから日本語環境を構築していきます。

 日本語環境設定には、日本語フォント、Font Driver、Display Driverなどのインストールとセットアップが必要です。
しかし、これは何回やっても面倒、というか、毎回やり方を忘れてしまっているので、調べ直しに時間がかかり、そのうえ設定ミスをしたりするなどなど、いつもイライラが募ります。そんなつまらない作業を避けるべく、今回は「日本語環境構築を一括で行うスクリプト」を作成しました。日本語環境だけでなく、ついでにDOSの基本ツールも同時にインストールしてしまいます。
まあ、wget でダウンロード後、lhaunzip で解凍し適当なディレクトリにコピー、FreeDOSの設定ファイルである FDCONFIG.SYSFDAUTO.BAT を修正してしまうだけなんですけどね。

1) 準備

 必要なツール、wgetlhasa をインストールしておきます。また、FreeDOSのハードディスクイメージを Loopback device としてMountするディレクトリ(/mnt/freedos)を作成しておきます。

sudo apt -y install lhasa wget  
sudo mkdir -p /mnt/freedos  

2) 一括処理スクリプト

 下記のスクリプトをコピーし、ディスクイメージと同一のディレクトリ(/home/xxxx/freedos)に、/home/xxxx/freedos/jp.sh という名称で作成しておきます。

if [ -d ./jpwork ]; then  
	rm -rf jpwork  
fi  
mkdir jpwork  
cd jpwork  
  
mkdir chej  
cd chej  
wget http://www.mna.jp/natrium/software/CHEJ610.LZH  
lha e CHEJ610.LZH  
rm CHEJ610.LZH  
cd ..  
  
mkdir dispv  
cd dispv  
wget https://web.archive.org/web/20230502101432/http://www.hmsoft.co.jp/lepton/software/dosv/disp160a.lzh  
lha e disp160a.lzh  
rm disp160a.lzh  
cd ..  
  
mkdir font  
cd font  
wget http://web.archive.org/web/20160929103053/http://homepage3.nifty.com/silo/FONTV/VGON16.LZH  
lha e VGON16.LZH  
rm VGON16.LZH  
mv vgon16/*.tlf .  
rm -rf vgon16  
cd ..  
  
mkdir fontn  
cd fontn  
wget https://www.nanshiki.co.jp/free/fontn10.lzh  
lha e fontn10.lzh  
rm fontn10.lzh  
cd ..  
  
mkdir pansi  
cd pansi  
wget https://ftp.vector.co.jp/19/70/374/pansi103.lzh  
lha e pansi103.lzh  
rm pansi103.lzh  
cd ..  
  
mkdir lpkkc  
cd lpkkc  
wget https://ftp.vector.co.jp/47/67/547/lpkkc107.zip  
unzip lpkkc107.zip  
rm *.zip  
cd ..  
  
mkdir adddev  
cd adddev  
wget http://hp.vector.co.jp/authors/VA003720/lpproj/dos/add255p1_20070904.zip  
unzip add255p1_20070904.zip  
rm *.zip  
cd ..  
  
wget https://www.gfd-dennou.org/library/cc-env/unixlike/uxtl411a.tgz  
tar xzf uxtl411a.tgz  
rm uxtl411a.tgz  
cd uxtl411a  
mv bin ../  
cd ..  
rm -rf uxtl411a  
rm -rf appeal  
  
cd bin  
wget http://hp.vector.co.jp/authors/VA012947/software/fdsk136.lzh  
lha e fdsk136.lzh  
rm fdsk136.lzh  
rm fdsk.txt  
cd ..  
  
mkdir usr  
cd usr  
mkdir mars  
cd mars  
wget https://www.swa785.net/pub/mars/mars533.lzh  
lha e mars533.lzh  
rm mars533.lzh  
cd ../../  
  
cd usr  
mkdir jed  
cd jed  
wget https://ftp.vector.co.jp/03/94/633/jed194v.lzh  
lha e jed194v.lzh  
rm jed194v.lzh  
cd ../../  
  
cd usr  
mkdir fd55  
cd fd55  
wget https://ftp.vector.co.jp/04/52/554/fd55_313.lzh  
lha e fd55_313.lzh  
rm fd55_313.lzh  
cd ../../  
  
cat > ./font/fontn.ini <<END  
[CODE]  
F040 F0FC  
[FONT]  
GONHN16X.TLF  
GONHN19X.TLF  
GONZN16X.TLF  
END  
  
cat > ./FDCONFIG.SYS <<END  
rem SET DOSDIR=C:\FreeDOS  
!LASTDRIVE=Z  
!BUFFERS=20  
!FILES=40  
!MENUCOLOR=7,0  
  
MENUDEFAULT=1,5  
MENU 1 - Japanese Mode  
MENU 2 - English Mode  
MENU 3 - Load FreeDOS without drivers (Emergency Mode)  
12?DOS=HIGH  
12?DOS=UMB  
12?DOSDATA=UMB  
12?DEVICE=C:\FreeDOS\BIN\JEMMEX.EXE NOEMS X=TEST I=TEST NOVME NOINVLPG  
3?DEVICE=C:\FreeDOS\BIN\HIMEMX.EXE  
12?SHELLHIGH=C:\FreeDOS\BIN\COMMAND.COM C:\FreeDOS\BIN /E:1024 /P=C:\FDAUTO.BAT  
3?SHELL=C:\FreeDOS\BIN\COMMAND.COM C:\FreeDOS\BIN /E:1024 /P=C:\FDAUTO.BAT  
1?DEVICEHIGH=c:\FONTN\FONTNX.EXE /P=c:\FONT\\  
1?DEVICEHIGH=c:\DISPV\DISPV.EXE  
1?COUNTRY=081,932,C:\FreeDOS\BIN\COUNTRY.SYS  
23?COUNTRY=001,858,C:\FreeDOS\BIN\COUNTRY.SYS  
rem 1?DEVICE=c:\LPKKC\LPKKC.SYS /S128 /V  
rem 1?DEVICE=c:\KTN4\KTN4.SYS /F=c:\KTN4\KTN4.CFG  
rem 1?DEVICE=c:\KTN4\KTN4C.SYS /F=c:\KTN4\KTN4.CFG  
END  
  
cat > ./FDAUTO.BAT <<END  
@ECHO OFF  
rem set DOSDRV=C:  
rem set DOSDIR=C:\FreeDOS  
SET TZ=JST-9  
set TEMP=C:\FreeDOS\TEMP  
set TMP=%TEMP%  
set BLASTER=A220 I5 D1 H5 P330  
set OS_NAME=FreeDOS  
set OS_VERSION=1.3  
alias reboot=fdapm warmboot  
alias halt=fdapm poweroff  
  
set PATH=C:\FreeDOS\BIN;c:\chej;c:\pansi;c:\bin;c:\usr\mars;c:\usr\jed;c:\usr\fd55  
loadhigh pansi.com  
IF "%config%"=="1" chej jp  
keyb jp  
END  
  
cd ../  
sudo mount -t msdos -o loop,offset=32256,uid=$(id -u),gid=$(id -g) fd13.img /mnt/freedos  
  
mv /mnt/freedos/fdconfig.sys fdconfig.org  
mv /mnt/freedos/fdauto.bat fdauto.org  
cp -rf jpwork/* /mnt/freedos/  
sudo umount /mnt/freedos  

実行権限を付加し、実行します。スクリプト中の sudo mount で「パスワード」を聞かれますので、入力してください。

cd /home/xxxx/freedos  
chmod +x jp.sh  
./jp.sh  

なお、このスクリプトはサイトが封鎖されたり、URLが変更された場合、動かなくなります。2024年2月でも、DISPVのサイト(http://www.hmsoft.co.jp/lepton/software/dosv/disp160a.lzh)が亡くなってしまったようなので、Internet Archiveからダウンロードする設定に変更せざる得ませんでした。


3) FreeDOS 1.3 日本語環境の起動

 完了後、再度FreeDOSを起動します。

qemu-system-i386 -m 16 -rtc base=localtime  -device sb16 -device adlib -drive file=/home/xxxx/freedos/fd13.img,format=raw -drive file=fat:rw:/home/xxxx/freedos/programs/ -boot order=c  

起動メニューには、日本語モード(デフォルト)、英語モードが選択できるようになっています。

日本語モードを選択すると、下記のような画面となります。

なお、-drive file=fat:rw:/active/freedos/programs/ のようにディレクトリを追加しておくと、ここが Dドライブ となり、ファイルのコピーなどに利用できます。

残念ながら、日本語入力はフリーのツールだけではできません。刀(KTN4)で日本語入力ができることは確認していますが。


3) 導入ツール

 下記のツールもインストールしてみました。

Unix like tools

ls、cp、mv、cat、tar、which などのUNIX系のツールが動作します。また、ディレクトリのセパレータには、 ”/” が使えます。正直言って、このツールがないとDOS上で満足な作業が出来ません。個人的に必須のツール。

mars

JR運賃計算ツール。これのために、DOS環境を構築していると言っても過言ではありません。鉄旅ファンなら必携。

jed

エディタ。本当は ”VZ Editor”を使いたいのですが、商業ツールであり現状入手も難しそうなので、フリーのエディタである ”JED”をインストール。これも良く出来たツールです。

fd55

有名なファイラーなので、とりあえず入れてみました。本当のことを言うと、全く使ったことがありません。今回、動かしてみましたが起動が遅いな。”DFX”あたりのほうが良いかもしれません。


4) その他注意点

 QEMUMouseKeyboardCapture してしまい、「メインOS上で入力できなくなる」場合があります。その際には、慌てず騒がず Ctrl+Alt+g を押すこと。制御が戻ってきます。