1. 程式人生 > >WSL(Windows上的Linux子系統)

WSL(Windows上的Linux子系統)

issues 介紹 gcc 基於 讀研 image 卸載 ssh 輸入

WSL(Windows上的Linux子系統)

WSL,Windows Subsystem for Linux,就是之前的Bash on [Ubuntu on] Windows(嗯,微軟改名部KPI++),在wsl環境下我們可以運行一些Linux程序。

首先要說一句,其實Windows 10在一周年更新(1607,內部版本14393)的時候就加入了wsl,但是直到剛剛更新的秋季創意者更新(1709,內部版本16299),wsl才正式脫離beta,逐漸趨於穩定,所以我選擇這個時候再寫這篇文章。以下內容都是基於秋季創意者更新(1709,內部版本16299.19)。

接下來,我們正式介紹並安裝wsl。

Windows Subsystem for Linux(簡稱WSL)是一個為在Windows 10上能夠原生運行Linux二進制可執行文件(ELF格式)的兼容層。它是由微軟與Canonical公司合作開發,目標是使純正的Ubuntu 14.04 "Trusty Tahr"映像能下載和解壓到用戶的本地計算機,並且映像內的工具和實用工具能在此子系統上原生運行。[1][2][3]

WSL提供了一個微軟開發的Linux兼容內核接口(不包含Linux代碼),來自Ubuntu的用戶模式二進制文件在其上運行。[4]

該子系統不能運行所有Linux軟件,例如那些圖形用戶界面,以及那些需要未實現的Linux內核服務的軟件。[5]

不過,這可以用在外部X服務器上運行的圖形X Window系統緩解。[6]

此子系統起源於命運多舛的Astoria項目,其目的是允許Android應用運行在Windows 10 Mobile上。[5]此功能組件從Windows 10 Insider Preview build 14316開始可用。[7]

——維基百科

首先打開設置,進入應用,選擇程序和功能,點擊啟用或關閉Windows功能,勾選適用於Linux的Windows子系統,接下來重啟。

技術分享

技術分享

在beta的時候我們需要在powershell裏面輸入bash才能下載wsl,而且沒有國內下載節點,不支持斷點續傳,所以一旦網絡不穩定就廢了。在1709版本的Windows10中,我們可以去商店搜索Ubuntu來下載,現在不但有Ubuntu,還有SUSE和openSUSE。(在Windows商店裏下載Ubuntu是不是感覺很詭異w(?Д?)w

技術分享

技術分享

安裝完成之後我們就可以進行折騰了,有人可能會好奇那如何使用windows上的文件呢?其實windows的目錄全部掛載在/mnt這個目錄下,我們可以在/mnt/c目錄下看到c盤的各種文件。好了,先運行一下screenfetch來看看。

技術分享

作為一個java web developer,常用的大概就是ssh,git,jdk,tomcat,nginx等等。我們一一來測試一下。

SSH

我們可以看到ssh遠程連接可以正常使用,所以嘛putty或者xshell這種東西可以卸載了(逃

技術分享

Git

git的各種命令也很正常。

技術分享

JDK

接下來測試jdk,我們來編譯一小段代碼試試看,可以看到jdk也沒什麽問題。

技術分享

Tomcat&Nginx

我們啟動tomcat,然後在Edge瀏覽器裏面訪問,便可以看到tomcat的默認首頁,是不是很神奇?當然nginx也是沒有問題的。

技術分享

技術分享

另外,gcc和clang經過測試也可以使用,這裏就不再展示了。

據說大神們已經可以在wsl上運行圖形化的Linux程序了,這點我沒有測試過,有興趣的小夥伴可以自行折騰。

那如果我們把wsl裏面的環境折騰亂掉怎麽辦?得益於Windows商店的好處,我們只要卸載並重新在商店下載即可。

技術分享

最後,我認為wsl對windows平臺的開發者絕對是重大利好,一方面,一部分linux上好用的工具也可以在windows平臺上使用了,另一方面,在windows上開發好的程序可以直接部署到wsl上測試,這樣就能保證開發環境和生產環境盡可能的相似。好了,Enjoy it!

(btw,貼幾個wsl的相關資料,感興趣的小夥伴自行閱讀研究。

release notes:

https://msdn.microsoft.com/en-us/commandline/wsl/release_notes

WSL團隊的blog:

https://blogs.msdn.microsoft.com/wsl/

issue tracker:

https://github.com/Microsoft/BashOnWindows/issues

WSL(Windows上的Linux子系統)