FreeDOSをラズパイ4機上でエミュレーション動作させてきましたが、別にフツーのx86_64パソコン上で走らないハズがありませぬ。どうせx86の16ビットコードの「実行」はCPUエミュレータQEMUにお任せしてます。その下がArmだろうとx86_64だろうと関係ないっと。でも実際にやってみると微妙に気になるところ有。
※実機動作確認には以下を使用しております。
FreeDOS on QEMU on Ubuntu on WSL2 on Windows11
さて今回やってみましたのは表題通り
-
- Intel i5-1235 搭載パソコン上の
- Windows 11 (64 bit) の上の
- WSL2(Windows Subsystem for Linux 2)上で
- Ubuntu 24.04 LTS (Linux)を実行している上で
- QEMU(定番のCPUエミュレータ)でx86のエミュレーションして
- FreeDOS (MS-DOS互換のフリーで魔改造なOS)を実行
という屋上屋を重ねる環境であります。ちなみに過去回では「少し段階がシンプル?な」以下でやってました。
-
- Raspberry Pi 4 (Arm Cortex-A72コア)の上の
- Raspberry Pi OS (Linux、64bit)上の
- QEMU 5.2.0で
- FreeDOS
結局、x86_64機上でも64ビットで動作している場合、16bitのx86命令は使うのがとても困難、なのでArmでもx86_64でもCPUエミュレータ使ってMS-DOS互換OSを動作させておる、というところです。
階層が深くなろうと、使っているエミュレータはQEMUなので、同じだろ~と思ってやってみたのですが、「ヤッパリ」コマケーところに違いがありました。
QEMUのバージョン違い、オプション違うのね?
通常、QEMUはVGAグラフィクスハードウエアをエミュレーションしてくれるみたいでVGA相当の表示を行うGUIウインドウが開きます。Ubuntu上にインストールしたQEMU上でFreeDOS動作させても過去回でやった通りで以下のようなウインドウが開きます。こんな感じ。
ただ、過去回同様、FreeDOSは和文のキーボードのチョイスがないので、USキーボード選択。すると\とか、:とか |とかの位置がUSとJPで違うので忘却力の老人は「あれここだっけ?」と記号キーが「手探り」となります。
でもラズパイ4では、Windows 11 PCからsshで接続をし、「カーソルモード」でQEMUを動かしていればJPキーボードで入力してもFreeDOSには正しく文字が伝わります。こっちの方が便利だあ。
そこでUbuntu上のQEMUでも同様に「カーソルモード」で立ち上げようとしました。ラズパイ4機上とまったく同じコマンドラインで「カーソル・モード」に入ろうしたらUbuntu上ではエラーになりました。調べてみたら以下の通りでした。
ラズパイ4機上で「apt install」でインストールしたQEMU 5.2.0 では「カーソル・モード」が以下の引数で使える
-curses
Ubuntu 24.04 LTS版で apt でインストールした QEMU 8.2.2 では以下のように変更されていた。
-display curses
上記のようにオプションを変更すれば、QEMUのGUIウインドウは開かなくなり、Windows Terminal上のUbuntuのコンソール内でFreeDOSが動くようになりました。こんな感じ。
しかし上記のように起動したモードでエディタなど「罫線キャラクタ」を使った画面を開くと以下のようになってしまいます。
表示上の問題だけれども「?」だらけで醜いっす。
気になったのでFreeDOSのコードページを覗いてみたらこんな感じ。
858は当方設定したつもりはないのですが、欧州の複数の国兼用のコードページみたいです。IBM-PCの伝統的な437になってないせい?と勝手に思い込んで、FreeDOSの設定をいじって CP437 に変更してみました。結構メンドいです。
しかし罫線キャラクタの問題は解決しません。
どうもFreeDOS側ではなく、QEMUからUbuntu経由Windows Terminalに至るどこかでフォント変換に失敗しているみたい。トホホ。
まとめると、
-
- QEMUのGUIを使えば「罫線キャラクタ問題」は発生しない。フツーに表示できる。ただしFreeDOSがUSキーボード(もしくは各種欧文キーボード)設定なので、日本語キーボードと配列が異なるので不便。
- QEMUをカーソルモードで使えば日本語キーボードでも問題なく記号キャラクタなど使うことができる。しかし上記のように「罫線キャラクタ化け」が発生して画面が汚い。
どっちもどっちだな~。QEMUのオプションスイッチ、も少しいろいろ試してみるか。