HighEnd で LowEnd を実行する: QEMU を使用して MacBook M1 (Apple Silicon) で FreeDOS を実行する

HighEnd で LowEnd を実行する: QEMU を使用して MacBook M1 (Apple Silicon) で FreeDOS を実行する

Apple Silicon 上の FreeDOS MS-DOS時代には懐かしい思い出があります。もちろん、あの頃に戻りたいと言っているわけではありませんが、私にとっては、地下室のクローゼットで古いファミコンを見つけたり、TV Landを観たりしたときのように、懐かしい思い出を巡る楽しい旅のようなものです。

システムメモリがキロバイト単位で測定されていた時代、MS-DOSが王者でした。しかし、Microsoftには、今は忘れ去られつつも当時大成功を収めたXenixというUNIXクローンがありました。MS-DOSのメディアを見つけるのは難しくありませんが(実際、MSDNサブスクリプションで今でもダウンロードできます)、FreeDOSが現代の代替OSです。MS-DOSに必要な機能をすべて備えているだけでなく、豊富な快適機能と、利用可能なアプリ、ゲーム、ユーティリティも豊富です。

FreeDOSは、ビンテージハードウェアでも、x86-64のリアルモードのレガシーサポートのおかげで最新のハードウェアでも実行できますが、ドライバの問題で苦労するでしょう。それに、最新のi9(あるいはi3でさえ)を16ビットコンピューティング専用にしたい人がいるでしょうか?

明らかに、より良い解決策はVMで実行することです。一般的なコンシューマーPCでFreeDOS VMを12台、いや100台も実行できるでしょう。人気のソリューションとしては、Virtualbox、VMwareの無料Player、qemu/UTMなどがあります。また、研究用プラットフォームとしてbochsもあります。

しかし、普段macOSを使っている場合、Apple Siliconを使っていると選択肢はかなり限られます。VirtualboxとVMware Playerは、Apple Silicon上でのx86エミュレーションをサポートしていません。WindowsシステムにVirtualboxまたはVMwareをインストールしてリモートデスクトップ接続することは可能ですが、macOSからRDP接続すると、どちらも表示に多くの問題が発生することがわかりました。自宅に物理的なLinuxマシンがないので(すべてVMで実行しています)、そちらの方が良い選択肢かもしれません。

しかし、Apple Silicon 上でネイティブに実行するオプションが 1 つあります。それは QEMU です。

適切なオプションを見つけてネットワークを構築するのに少し手間取ったので、ここでその方法をご紹介します。インストール手順を一つ一つ説明するつもりはありません。一度起動してしまえば、他のFreeDOSのセットアップと全く同じなので、ここでは詳しく説明しません。ただ、いくつかヒントやコツがあります。

UTM は QEMU のグラフィカル フロントエンドであり、コマンド ラインにアレルギーがある場合はそれを試すこともできますが、ここでは取り上げません。

FreeDOSのインストール

ステップ1:FreeDOSをダウンロードします。FreeDOSのホームページにアクセスしてください。Live CDが必要です。ボーナスCDも入手しておくと便利です。ディレクトリを作成し、そこに2つのISOファイルを入れてください。

ステップ2:qemuをインストールします。WebSiteを読んでいる皆さんは既にHomebrewをインストール済みだと想定しています。もしそうでない場合は、こちらにアクセスしてコマンドをコピーし、インストールしてください。ターミナルを開いて、そのコマンドを貼り付けてください。

Homebrew をインストールしたら:

 brew qemu をインストール

ステップ3:ハードドライブを作成します。正確には、ハードドライブとして機能するQEMUイメージファイルを作成します。DOSが認識できる最大容量は2GBなので、2GBに設定できます。このイメージファイルは、.ISOファイルと同じディレクトリに保存できます。

 $ qemu-img で c.img 2G を作成します
'c.img' をフォーマットしています、fmt=raw サイズ=2147483648

この場合の C は C: ドライブを表しますが、好きな名前を付けることができます。

ステップ 4: QEMU スクリプトを作成します。

QEMUにはたくさんのオプションがあります。いろいろ試した結果、私が使っているものは次のとおりです。

 qemu-system-i386 -cpu 486 -boot order=dc -m 16M \
-k en-us -name FreeDOS1 \
-cdrom FD13LIVE.iso \
-ドライブ ファイル=c.img、フォーマット=raw、メディア=ディスク \
-rtc ベース=ローカルタイム \
-nic ユーザー、モデル = pcnet、mac = 10:20:30:40:50:60

詳しく見てみましょう:

qemu-system-i386:時代に合わせたi386システムを使用しています。ちなみに、もし興味があれば、QEMUエミュレーションでHP PA-RISC、S390、DEC Alphaなど、様々なシステムを実行できます。

-cpu 486:必要に応じて、ここで 286、386 などを実行できます。

-boot order=dc:これは「まずCD-ROMから起動し、次にハードドライブから起動する」という意味です。FreeDOSをインストールしたら、これらの順序を入れ替えるか、CD-ROM(おそらくボーナスCD)にロードする内容を変更する必要があります。

-m 16M: 16MBのRAMを使用します。必要に応じて変更してください。ただし、DOSのメモリはLinux、Windows、Macよりも複雑であることにご注意ください。アプリがDOSメモリエクステンダーを実行している場合を除き、1MBに制限される可能性があり、そのすべてを使用することはできません。

-k en-us : en-us キーボード

-name FreeDOS1:好きな名前を選んでください。

-cdrom FD13LIVE.iso:これはD:ドライブとして表示されます。FreeDOSをインストールするには、このLive CDを起動する必要があります。

-drive file=c.img,format=raw,media=disk:これは先ほど作成したハードドライブです。

-rtc base=localtime:システムクロックをホストのローカルタイムに設定します。

-nic user,model=pcnet,mac=10:20:30:40:50:60: pcnet を使用してネットワーク インターフェイス カードを作成し、MAC を 10:20:30:40:50:60 に設定します。

これをqemu_freedos.shのような名前のファイルに記述します。次に、以下の手順を実行します。

 $ chmod 755 qemu_freedos.sh
$ ./qemu_freedos.sh

QEMUが起動し、LiveCDが起動するウィンドウが表示されます。「システムハードディスクにインストール」を選択すると、すぐに実行できます。

全画面モード

DOSを最大限に楽しむには、フルスクリーンモードにすることをお勧めします。Command + Fキーを押すと、キャラクターベースの世界をお楽しみいただけます。Ctrl + 矢印キーで別の仮想デスクトップに切り替えることもできます。

フルスクリーンモードを終了するには、入力キャプチャを解除する必要があります。以下のコマンドを実行してください。

  • コントロール+オプション+G
  • 次にCommand+Fを押してフルスクリーンモードを終了します

ネットワーキング

これはちょっと難解で、まだ完全には理解できていません。FreeDOSを起動すると、次のようなメッセージが表示されます。

 QEMU ネットワークが検出されました。

現時点では物理ハードウェア ネットワークはサポートされていません。

FDAUTO.BAT および FDNET.BAT のプログラム ロジックに従うと、起動時に常にこの結論に達し、このエラー メッセージで終了するようです。

ただし、ネットワークは機能します。次の方法をお試しください。

 C:\NET\FDNET\pcntpk int=0x60
DHCP

これにより、ネットワークとDHCPによるIPアドレスの設定が完了します。適切なパッケージがインストールされていれば、そこからwget、ftp、sshなどが実行できます。

次のステップ

この時点で、さらにソフトウェアをインストールしたいと思われるかもしれません。以下のリソースをご確認ください。

  • FDIMPLES – FreeDOS パッケージマネージャー
  • WinWorld – Lotus 1-2-3、WordPerfect、dBaseなどを含むビンテージソフトウェアの宝庫

いつか21世紀に戻る必要があるでしょう。ウィンドウをそのまま終了することもできますが、正しく終了するには、SHUTDOWNコマンド(大文字でなくても構いません)を発行し、VMが自動的に閉じるのを待ちます。

おすすめの記事