kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 16.04 その26 - UbuntuのユーザースペースをWindowsの開発者達へ・UbuntuのソフトウェアをWindows上で動作させる仕組み

Ubuntu on Windows

  「Ubuntu on Windows」は、UbuntuのユーザースペースをWindows上で動作させる仕組みです。


  ユーザースペースとは、一般的にカーネルを除いたソフトウェア群を指し、カーネルの上で動作するソフトウェア群を指します。

  「Ubuntu on Windows」は、LinuxカーネルをWindowsのカーネルに置き換えたものである、とイメージすれば分かりやすいかと思います。
  早い話、Ubuntuのアプリ(現状はコマンド)がWindows上で動作する、ということです。

  現状「Ubuntu on Windows」は完成しておらず、Ubuntuのユーザースペースがすべて動作する状態ではありませんが、今後どの程度の規模でUbuntuのユーザースペースが動作するようになるのか楽しみですね。
 
  ただGUIアプリに関しては、GIMPやLibreOfficeなど有名なソフトウェアがクロスプラットフォームで提供されており、また、WindowsにはGUIアプリが豊富なため、必要性の観点からGUIアプリが「Ubuntu on Windows」で利用できるようになるかどうかは懐疑的です。
  わざわざ「Ubuntu on Windows」上でFirefoxやLibreOfficeを使いたいと思うユーザーはいないでしょう。

  また少なくとも現状では、「Ubuntu Desktop」ではなく「Ubuntu Server」のユーザースペースが「Ubuntu on Windows」の主なターゲットになっているイメージです。
  ただし「Ubuntu on Windows」は、ウェブサーバーなどサーバとして利用するためのプラットフォームではありません。
  あくまで現状はUbuntuのコマンドツール群を利用するためのプラットフォームです。

   「Canonical」の「Ubuntu Product and Strategy team」に所属している「Dustin Kirkland」氏が、「Ubuntu on Windows」の説明を行っています。

  • Ubuntu on Windows – The Ubuntu Userspace for Windows Developers 
  • Still have questions about Bash and Ubuntu on Windows?

私は16年近くWindowsを使ってこなかった。
しかし数カ月前、その状況は変った。

私はMicrosoftとCanonicalの間で行われた極秘プロジェクトに参加したのだ。
その極秘プロジェクトが本日、Kevin Galloの基調講演を通じて明らかになった。

その極秘プロジェクトとは、
「UbuntuのユーザースペースとBashを、Windows 10のcmd.exe内でそのまま動作させる!」ということである。


ちょっと何言ってるか分からないよね。
でも心配はいらないよ。
私が初めてそのクレイジーな話を聞いたのは数カ月前のことだったんだけど、私も話の内容を完全に理解するまで時間が必要だったよ。

さてどういうことかゆっくり説明しよう。

  1. Windows 10を起動する
  2. スタートメニューを開く
  3. 「bash」と入力する
  4. cmd.exeが起動する
  5. Ubuntuの/bin/bashが起動する
  6. Ubuntuのユーザースペースすべてにアクセスできる
  7. もちろん、様々なUbuntuのコマンド(※1)も利用できる
  8. Ubuntuのアーカイブで利用できる数万のバイナリーパッケージの多くが利用できる

  ※1 コマンドの一例
    下記以外にも様々なコマンドが利用できる。

apt ssh rsync find grep awk
sed sort xargs md5sum gpg curl
wget apache mysql python perl ruby
php gcc tar vim emacs diff
patch

「仮想マシンでUbuntuを動かしてるってこと?」
違うよ!仮想マシンは全く関与していない。
Linux Kernelは存在していないんだ。
動作しているのは、Ubuntuのユーザースペースそのものだよ。

「あぁ分かった、コンテナーで動作しているUbuntuだろ?」
違うよ!コンテナーじゃない。
Ubuntuのバイナリーが、そのままWindows上で直接動作しているんだよ。

「うーん、ということはcygwinみたいなもの?」
違うよ!
オープンソースのユーティリティーを含むCygwinは、Windows上で直接動作させるために、ソースからコンパイルし直しているよ。
でも「Ubuntu on Windows」では、UbuntuのEFLバイナリーが何も手を加えずにそのままWindowsで動くんだよ。
バイナリーのビットもチェックサムも同じだよ。

「Linuxエミュレータみたいなもん?」
いい線いってるね!
Microsoftのsharp developersチームは、LinuxのsyscallをWindows OSが提供するsyscallへリアルタイムに変換できないか検討した。
彼らはMicrosoftの研究技術がそれらに適合するよう、日々大変な作業をしている。
Linuxに詳しい人達からすれば、Ubuntuのバイナリーが直接Windows上で動くのだから「Wine」を逆にしたものだと想像するだろう。

Microsoftはこのシステムを「Windows Subsystem for Linux」と呼んでいる。
(まだこの時点でオープンソースではない)

「おぉ、素晴らしい!」
 sysbenchでベンチマークを取ると、Ubuntuを実機で動作させた時に近いパフォーマンスが出るよ。

さて、Windows Storeにアップロードするため、Ubuntuのrootファイルシステムをラップし、Windows application package (.appx)ファイルの中へ突っ込む必要があった。
サンプルアプリのコピーやXMLファイルの編集、様々なサイズのPNG画像ファイルの作成など、パッケージの作成に必要な作業はMicrosoft Visual Studioを使う必要があったんだ。

・・・私はWindowsの開発者じゃない。
WindowsのデスクトップでVisual Studioと数時間格闘したよ。
コーヒーのマグカップをモニターにぶつけて粉砕しそうになるぐらいにね。

代わりにWindowsキーを押して「bash」と打ち込みエンターキーを押した。
するとサンプルアプリが「/mnt/c/Users/Kirkland/Downloads」に見つかった。
それを「cp -a」でコピーし、「find | xargs | rename」を使用してファイル名を一斉に変更した。
そして「grep | xargs | sed」を使用して文字列の検索と置き換え(s/SampleApp/UbuntuOnWindows/)を行った。
さらにUbuntuのconvertを利用してアイコンをリサイズした。

その後Visual Studioでパッケージのコンパイルを行い、Windows Storeへアップロードを行った。
「終わったぜ!」

BashからWindowsのドライブを見ると、C:ドライブといったWindowsのドライブは、読み書き可で「/mnt」以下にマウントされる。


一方UbuntuのファイルシステムをWindowsから見ると、「C:\Users\Kirkland\AppData\Local\Lxss\rootfs\」に配置される。


他のUbuntu PCで行った作業内容をSSHで接続して取得する必要があったんだ。
でもPuttyは必要ないよ。
「Ubuntu on Windows」上のBashから直接sshで接続できる。


もちろん、「apt install」も「apt upgrade」も期待通り動作する。


すべてのソフトウェアが期待通り動作するかだって?
残念ながらすべてのソフトウェアは動作しない。まだ動作しないんだ。
LTP(Linux Test Project)の大部分は通ったし動作した。
しかしまだ不完全な部分があるんだ。
特にttyのvt100周りが不完全だ。
私が愛用するbyobuやscreenそしてtmuxはまだ動作しない。
でもそのうち動作するかも!

現在「Ubuntu on Windows」で使用しているUbuntuのイメージは、Ubuntu 14.04 LTSだ。
でも早いうちにUbuntu 14.04 LTSがUbuntu 16.04 LTSに置き換わり、Windows Storeから利用できるようになる。

「Ubuntu on Windows」はWindows 10の世界とフリー&オープソース技術の世界を結ぶ架け橋となる非常に素晴らしい機会である。
Ubuntuが仮想化のようなリソースの消費無しにWindows上で動作するのだ。

  Linux Command Line on Windows

    「Ubuntu on Windows」の質問に答えるセッションの映像です。



  Running Bash on Ubuntu on Windows!

    「Ubuntu on Windows」の動作デモの映像です。



なぜMicrosoftはUbuntu on Windowsを導入したのか

  上記はUbuntu側からの内容でしたが、今度はMicrosoft側からこの件を見てみます。
  端的に言うと、CUI環境の改善です。

  • Run Bash on Ubuntu on Windows

多くのユーザーから、Windowsではオープンソースのツール群の使い勝手が悪く、Windowsがもっと簡単にそれらのツールが利用できる環境になって欲しいという要望が上がっていた。

その要望に応えるため、まずcmdやPowerShellなど多くのコマンドラインツールや開発環境の改善を行うことにした。
次に、Bashを追加し、Linuxのコマンドラインツール群をWindowsから直接起動できるようにすることで、我々のコマンドラインファミリーを拡充することを決定した。

この目的の達成のため、新しい基盤をWindowsに導入した。
それがWindows Subsystem for Linux (WSL)である。

Canonicalによって提供されるUbuntuのユーザーモードのイメージは、WSL上で動作する。
この結果、WindowsでUbuntuのBashがそのまま起動するようになる!


Bashスクリプトを走らせることもできるし、Linuxのコマンドラインツール群もWindowsから直接起動できるようになる。
Ruby、Git、Python・・・様々なツールが利用できる。
BashからWindowsのファイルシステムにアクセスできるし、あるファイルをWindowsのツールからでもLinuxのツールからでもお好みの方法で処理することができる。

WSLはBuild conferenceの後、Windows 10 Insidersから利用できるようになる。
だがその前にいくつかのことをハッキリさせておきたい。

まず初めに、WSLは今回が初めてのリリースだ。
だからWSLはまだβ(ベータ)リリースだ。
まだ機能や品質に不十分な点もあればバグがあることも分かっている。
すべてのBashスクリプトやLinuxのツールが完璧に動作すると期待しないで欲しい。

次に、WindowsでBashやLinuxのツールが操作するようになるとは言え、これらは開発者がコードを書いたりビルドするためのツールセットであることに留意して欲しい。
これはウェブサーバーを動作させたり、サーバーを動作させるためのプラットフォームではない。

最後に、BashやLinuxのツールは、Windowsのアプリやツールと連携して動作することはできない。逆もまた然りである。
従ってBashからメモ帳を起動できないし、PowerShellからBashでRubyを起動することもできない。


Ubuntu 16.04
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Linux その450 - Canonical LXD や MicroCloud にクライアントなりすましの脆弱性・アップデートを
    Canonical LXD や MicroCloud に重大な脆弱性 2026年10月28日、Canonical LXD や MicroCloud に重大な脆弱性がみつかりました。
  • Ubuntu 26.04 その82 - Linux kernel の脆弱性 CVE-2026-98432 の対応状況
    CVE-2026-98432 の対応状況 2026年11月2日、Linux kernel の脆弱性である CVE-2026-98432 の対応状況がアナウンスされました。
  • Linux Mint その294 - Linux Mint 27 の開発とリリース方針の変更・アラーム管理アプリの開発
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.04 その78 - eMudhra 認証局の秘密鍵の侵害・アップデートを
    eMudhra 認証局の秘密鍵の侵害 2026年10月20日、eMudhra 認証局(eMudhra CA)の秘密鍵の侵害が発覚しました。
  • Ubuntu 26.04 その79 - CVE-2026-111497 に対応した Brotli のリリース・アップデートを
    Brotli のセキュリティーアップデート 2026年10月26日、CVE-2026-111497 に対応した Brotli がリリースされました。
  • Ubuntu 26.04 その77 - PHP に php2shell(CVE-2026-109618/CVE-2026-109619)の脆弱性・アップデートを
    PHP に php2shell の脆弱性 PHP に php2shell と呼ばれる致命的な脆弱性が見つかりました。
  • Ubuntu 26.10 その39 - Ubuntu 26.10 の新機能と変更点・既知の問題
    Ubuntu 26.10 の新機能と変更点・既知の問題 リリースノートから、Ubuntu 26.10 の新機能と変更点を紹介します。
  • Ubuntu 26.04 その80 - Ubuntu 26.04.2 LTS のリリーススケジュール
    Ubuntu 26.04.2 LTSのリリーススケジュール Ubuntu 26.04.2 LTS のリリーススケジュールを紹介します。
記事のピックアップ
オプション