「Ubuntu on Windows」 初體驗
據該項目的合作方, Ubnutu 背後的 Canonical 公司的產品與戰略負責人 Dustin Kirkland 說,他在幾個月前聽說這個瘋狂的想法時也懵了,花費了不少工夫才理解這後面發生了什麼。
本文帶你揭開「Ubuntu on Windows」的神秘一角。
首先,讓我們看看發生了什麼?
- 首先你得有個 Windows 10
- 打開 Windows 開始菜單
- 輸入「bash」 (沒有引號),回車
- 這會打開一個 cmd.exe 窗口
- 運行 Ubuntu 的 /bin/bash
- 賓果!你可以完全訪問所有的 Ubuntu 用戶空間了
- 沒錯,這包括 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 軟體庫中數以萬計的 ELF 二進位程序中的絕大多數!
「好吧,這是一個運行在虛擬機的 Ubuntu 嗎?」 不!這根本不是一個虛擬機,不用在虛擬機中啟動 Linux 內核,它就是 Ubuntu 的用戶空間。
「哦,那是運行在容器裡面啰?」 不不!這也不是一個容器,這是在 Windows 裡面直接運行原生的 Ubuntu 二進位程序。
「嗯,就像 cygwin 那樣?」不不不!cygwin 所包括的開源程序是以源代碼重新編譯後才能原生運行在 Windows 上。而這裡,我們說的是一個比特都不差、校驗值完全一樣的 Ubuntu 的 ELF 二進位程序可以直接運行在 Windows 下!
... ...
「那麼,這就像是模擬器一樣么?」這就比較接近真相了,來自微軟的一些尖端技術人員正在研究一種技術,可以將 Linux 的系統調用實時地轉換為 Windows 的系統調用。你可以把它當成 Wine 的一種反向技術。微軟將其稱之為「 Windows 下的 Linux 子系統 」,當然現在還沒有開源。(我覺得網友 delectate 說的比較有趣,這個東西不如叫做 mine=microsoft's native emulator 。)
而且,根據 Dustin Kirkland 的說法,使用跨平台的性能測試工具 sysbench 進行測試的結果發現,在 Windows 下運行這些原生的 ELF 二進位程序和在 Linux 下運行所消耗的 CPU 、內存和 IO 性能相當。對於這個結果,我表示非常的吃驚!
Dustin Kirkland 是該項目組的成員之一,他的體驗可以讓我們感受一下這個「超級神秘」的項目。
由於需要將整個 Ubuntu 的根文件系統打包到一個 Windows 應用軟體包(.appx)中,這位已經十幾年沒有使用過 Windows 的老兄對微軟開發工具十分陌生,在經過幾個小時與 Visual Studio 的痛苦搏鬥,製作了一堆各種尺寸的 png 圖標,編輯了一打以上的 XML 文件後,他簡直忍不住要將咖啡杯扔到該死的屏幕上了。
到最後,他終於尋求他所熟悉的 Linux 經驗解決了這些問題。
按下 Windows 鍵,輸入「bash」,回車!他發現這個要上載的根文件系統的內容放在 /mnt/c/Users/Kirkland/Downloads 下,只需要使用一個 cp -a 複製到目標位置即可,並用 find | xargs |rename 來批量更新文件名,用 grep| xargs | sed 搜索替換路徑,用 convert 工具快速地批量縮放圖標,簡直不要太容易地搞定了這些工作,剩下的就只需要讓 Visual Studio 自己幹了,編譯、上載到 Windows Store。搞定!
嗯,你也許從終端窗口中看到了 /mnt/c ,沒錯,這就是你的 Windows 下的 C: 盤,它們以讀寫模式直接掛載到 /mnt 下了。當然,你也可以在 Windows 下通過類似如下的路徑訪問 Ubuntu 的文件系統:C:UsersKirklandAppDataLocalLxssrootfs 。
同時,如果需要 ssh 連接到其它的 Linux 上,你根本不用下載 putty,直接輸入 ssh 即可:
當然,你也可以使用 apt 來安裝和更新軟體包:
到目前為止,是不是所有的東西都可以完美工作了?還不全是。LTP 測試中的大多數都沒問題,但是有一些則還不行,主要是 tty 相關的部分,比如 byobu、screen、tmux 等還不能很好的工作,不過相信也快了。
另外,順便提一句,當前這個子系統所採用的 Linux 鏡像是 Ubuntu 14.04 LTS,等 16.04 LTS 發布後相信很快就會更新到 Windows Store 上。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive