カテゴリー
技術

DOS Subsystem for Linux – MS-DOSの上でLinuxコマンドを動かす

DOS Subsystem for Linux は、「MS-DOS環境を好む人のためのWSLの代替」で、Linux 環境をMS-DOS 上に構築したものです。

“Windows Subsystem for Linux”(WSL)においては、Windows 上でLinuxのアプリケーションをそのまま実行できるようになりましたが、それと似たようなことを MS-DOS の上で動かす、というもののよう。

MS-DOS の起動画面から、dsl コマンドを叩いて、MS-DOS 側のファイルシステムをマウントし、viエディタで編集していますね。DOS をメインに使っていて Linux アプリケーションも使いたいという人にとってはありがたい仕組みです。

Hacker Newsのスレッドでは当初、「MS-DOS を Linux 上で動かすもの」と誤解されたようですが、逆方向になります。

誤解が生まれた訳は、”Windows Subsystem for Linux”というマイクロソフト公式の名づけ方法にありそう。”Windows Subsystem for Linux” という字面を見ると、海外ユーザーでもやはり直観的には「Linux のために動く Windows」という印象を受けてしまうようです。しかし、「Windows は複数のサブシステムを持っていて、その一つとして Linux を動かす」と解釈すれば、WSL のことだと言えなくもありません。

Linux側には「サブシステム」という概念がないため、Linux ユーザー側から見ると混乱が起こるのであろう、ということ。”Windows Services for Unix”についても同様で、Unix で Windows を動かすのではなく、Windows のサービスとしてLinux コマンドを使えるという意味になる、と。

“DOS Subsystem for Linux” は、そんなマイクロソフトの WSL のネーミングに従った名前と言えます。

作者の解説によると、MS-DOS 上で最初に dsl コマンドが呼ばれた際、Linux カーネルが立ちあげられ、MS-DOS からPCのコントロールを奪います。

Linuxコマンドの終了時、カーネルは仮想86モードで元のDOSに制御を移し、DOSは仮想モード内で動いているとは意識せずに次に DSL コマンドが呼ばれるまで DOS として動き続ける、と。

仕組みとしては問題ありそうだが、驚くほどうまく動作している、ということだそうです。