*

Linux vs. Windows

   

なつかしさ

一昔前に、デスクトップ環境は Linux か、Windows かなんて議論があったことも忘れていましたが、最近 Windows のMicrosoft Storeの検索のキーワードにlinuxを入れるとなんと、こんな感じに表示され、C ドライブ上にLinux on Windows なんて魅惑的な文字が表示されます。


Linux 上で Windows アプリを動かす場合は、Wine を使ったり、最近では仮想マシンをインストールしたりいろいろと工夫がされています。また、昔はWindows上でLinux環境を構築しようとすると、Cygwin であったり、MinGWを使ったりするのですが、ファイル名の大文字小文字の区別がつかなかったり(Linux のkernel の構築ではまるパターン)、リンクの問題が解決しなかったりと、過去当社の製品のELITEのWindows版もこの問題があり、結果Windows上の仮想マシンにELITEをインストールすることを推奨環境としました。

Windows Subsystem for Linux って?

概要は以下のMicrosoftのページから、読み取ることができます。

The Windows Subsystem for Linux lets developers run Linux environments — including most command-line tools, utilities, and applications — directly on Windows, unmodified, without the overhead of a virtual machine.

The Windows Subsystem for Linuxは、開発者へLinux環境を動作させることを許可する、ほとんどのコマンドラインツール、ユーティリティ、アプリケーション、それも仮想マシンのオーバヘッドなく、変更することなく、Windows 上で直接に。

とのこと。なんだか仮想マシンより性能が良さそうな印象を持ってしまいます。

さらに、同じくMicrosoft社MSDNのブログでは

We recently announced Bash on Ubuntu on Windows which enables native Linux ELF64 binaries to run on Windows via the Windows Subsystem for Linux (WSL). This subsystem was created by the Microsoft Windows Kernel team and has generated a lot of excitement…

とNative のLinux ELF64バイナリをWSL経由のWindows上で動作させる、みたいです。

動かしてみよう

Microsoft Storeからは、Kali Linux、Debian ProjectからのDebian GNU/Linux、SUSE Enterprise Server、OpenSUSE、Ubuntu などが選べます。    

     *)インストールの方法などは、Windows のビルドバージョンにも依存しますので、ご注意ください。

自分の開発マシンもUbuntu をインストールしておりますので、今回はUbuntuを選択してみます。

インストールはCドライブ指定のようで、195.6MBの空き容量の確認後インストールが開始されます。特に問題なくインストールは終えたのですが、起動するも添付エラーとなっております。指示の通り、<https://aka.ms/wslinstall for details>に行ってみますと、
こちらのサイトにジャンプして、内容確認したところ

Troubleshooting: Installation failed with error 0x8007007e
This error occurs when your system doesn’t support Linux from the store. Make sure that:

  • You’re running Windows build 16215 or later.?Check your build.⇒これは良さそう
  • The Windows Subsystem for Linux optional component is enabled and the computer has restarted.?Make sure WSL is enabled.⇒これっぽい

Windowsの検索に powershell と入力して、管理者権限で起動後以下の指定のコマンドを入力した結果、なんだか再起動が必要そう。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Windowsの再起動後、Ubuntu を起動すると以下の感じでインストールが始まり


ユーザ名とパスワードを入力して


で、dir コマンドも、ls コマンドも使えるWindows 上の Linux が動きました。


df するとwindows 上のドライブがマウントされていることを確認できます。 

もっと動かしてみよう

となると、やっぱり X Window あたりを動かしたくなってきます。ネットで検索してみますと、VcXsrv が良さそうですので、関連するパッケージを Ubuntu(Windows上の)にインストールしていきます。

https://qiita.com/fukuramikake/items/283b817c16725af79a28

sudo apt-get update
sudo apt-get install language-pack-ja
sudo apt-get upgrade

当方の環境では、先に language-pack-ja をインストールしないと upgrade でエラーになりました。その後、Ubuntu(Windows上の)にgnome-terminalをインストールします。

sudo apt install -y xterm

さて、肝心のXサーバですが、どうやらWindows上で動作させる必要があるとのことです。https://sourceforge.net/projects/vcxsrv/からvcxsrv-64.1.19.6.2.installer.exeをダウンロードし、Windowsでインストールを行います。

Windows 上からvcxsrvを起動後にDISPAY環境変数を設定し、その後、xtermを起動すると

export DISPLAY=:0.0
xterm

Windows の画面にxtermが起動されます。

Windowsから見ると、Ubuntu(Windows上の)のterminalも、xtermもアプリケーションとなりますのでタスクマネージャーからはこんな感じに見えます。

なんだかLinux vs. Windows という状況でなく、もうシームレスに動いている感じです。

 - 未分類