WSL(Windows Subsystem for Linux)已經裝在電腦上好一陣子了,誰如果還沒裝的,可以看看本文,至少知道個大概,覺得有用的話知道該如何做。
簡介
WSL簡單說就是一個能讓你在Windows上跑Linux程序的子系統,什么是子系統?貼個圖:
其實我們一直在用子系統,它就是Windows子系統,它提供了一系列我們的Windows應用程序所需要的接口,是子系統將對這些接口的調用轉變為對Windows內核的調用,才使得我們的應用程序能夠正常運行,現在多了一個WSL,它能把Linux程序對各系統接口的調用轉變為對Windows內核的調用,因此,Linux應用程序可以在Windows系統里跑起來了。Cool!反過來,我能不能在Linux系統里弄一個類似的東西跑Windows程序呢?其實這東西早就有了,叫“Wine”,自己去查。
是虛擬機嗎?
不是,說了,是子系統,Linux程序與原生Windows程序是並列的。虛擬機與系統彼此隔離,而子系統並不隔離,文件系統可以互訪,共用IP地址。還有一點很重要:WSL的資源消耗比虛擬機小得多,你裝上了也不會覺得系統變慢。
是真正的Linux嗎?
Linux的定義是什么?Mac OS X是不是Linux?其實我個人覺得不用太糾結這種問題,WSL用的顯然是Windows內核,但它具有相當完整的Linux系統的功能,能夠運行幾乎所有的Linux程序,它肯定是*真正*的Linux,你甚至可以選擇不同的發行版,呃,所謂發行版就是Ubuntu,CentOS,Fedora之類的。
用它干點啥?
當然是可以使用Linux上各種強大的工具了,比如ssh,你不用再糾結去哪里下個Windows版之類的了,各種牛X的工具,想要什么,apt-get一下,信手沾來,Linux下那些酷炫的shell命令,現在全都供你差遣,當然你還可以輕輕松松用幾個命令搭建一台Web服務器,總而言之,比Windows的命令行界面(現在還有人稱之為DOS)高不知哪去了。
沒什么限制嗎?
有,由於它用的是Windows內核,我第一反應就是依賴於Linux內核的CGroups功能的Docker應該是沒戲(但也不排除以后會支持,微軟daddy太強大),Windows下搞Docker還是老老實實用虛擬機吧。另外,微軟官方說了,WSL不太適合用來當生產環境的服務器,因為它本來就不是為這個設計的,生產環境的服務器還是用Linux虛擬機吧。
如何開始?
哈,想行動了吧?我才不會再寫一套“教程”呢,目前網上一搜一大把了。不過我還是推薦一下:你在應用商店里搜“WSL Guideline”,這個是一個不錯的向導,你看這個好了。
選什么發行版?
目前應用商店有以下這些發行版:
我工作用的Linux發行版是CentOS7.4,這里居然沒有,網上有攻略如何安裝任意發行版的Linux,但我懶得折騰了,直接選了個Ubuntu,其實大同小異,不同發行版無非就是一些目錄及軟件包的區別,習慣以下就好了,比如我習慣用yum,Ubuntu默認沒有安裝,用apt-get裝上就行了,其它同理。
跟Windows如何互訪?
Linux訪問Windows很簡單,Windows的C盤會掛到“/mnt/c”去,同理還有“/mnt/d”和“/mnt/e”等,這里面的文件可以直接讀寫;反過來就有點麻煩,Linux的文件其實是在這個目錄下:
%LOCALAPPDATA%\Packages\{Linux發行版}\LocalState\rootfs
(Linux發行版在我這里是CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc)
這個目錄一來藏得比較深,二來你嘗試直接在Windows里把文件復制到這個目錄的話,Linux是讀不出來的,所以要共享文件的話還是用Windows的文件系統吧。
root密碼是什么?
默認用戶是你自己windows的賬號,root用戶默認沒有密碼,你來改一下吧:sudo passwd
下一步
其實我也不知道,我只知道它好用,至於要玩得多酷炫我並不在行。比如圖形界面,這個是很酷啊,但我覺得圖形界面還是Windows的好,Windows圖形界面甩KDE/Gnome N條街。再說了,這並不作為我們工作的內容,所以接下來你自己看着辦。