內置WSL 2的Windows 10可以完全取代桌面版Linux嗎?
不考慮價格因素。
目前(2020年5月)還不完善,WSL1是真實的本機,WSL2是個獨立虛擬機,因此而導致的獨立IP問題還沒有解決,部分情況下不如WSL1好用,部分情況下也不如WSL1的性能。
不過最新公告中,微軟依然還在不斷改進WSL2,添加GPU支持,添加原生GUI支持(內置xserver+rdp然後顯示為Windows窗口)等等。所以等這一波改進之後,大概慢慢就可以了吧。
理想替代Linux需要有 WSL1 的特性(等同於本機)以及WSL2的一些功能。大概是在做了在做了,Windows10這些年是真正的越來越好用了。
先說結論,WSL2目前部分功能無法取代桌面Linux,但是日常開發是完全足夠的,甚至可以直接跑docker。
尤其是考慮到Windows 2004版本更新之後,WSL2是一個完整功能的Linux內核且獨立更新。
很多人提的問題根本沒指出關鍵,我說兩點關鍵的。
- 現版本的VirtualBox是可以和Hyper v共存的,Vmware也有計劃支持。
- GUI程序可以通過X11轉發實現。
我目前觀察到的功能缺失(截至windows 10 2004版本):
- IPv6
- WSL2內部不可訪問Windows的localhost,但是反向是可以的。
- systemd(當然很多人不喜歡這個)
個人覺得,以目前的實現程度評估,對於80%的開發者來說,是完全可以的(當然像一些深入系統底層,對os環境有特殊需求的,以及就是覺得虛擬機比wsl2好的除外)。
我的情況呢,是目前正在 wsl2 下面用 idea(沒錯,就是GUI應用),目前為止體驗很理想,已經用了一個多月了,暫時還沒有遇到踩不過去的坑。
不過,因為現在還是嘗鮮階段,所以有些坑是必須要踩的(比如要關虛擬網路的防火牆才能跟win正常通訊,比如升級2之後之前的軟鏈接會失效,還比如不能用snap,還比如待機再喚醒後跟win上x window服務的網路會斷連),但是踩完坑之後,用著還是很香。
至於為什麼要用 wsl 下面的 IDE 而不是用 Windows 版本的呢,主要是 Windows 版的 IDE 用不了 Linux 下的開發和編譯環境(主要是文件路徑不統一導致使用上有問題,倒不是因為可執行文件不兼容),而我又不想在電腦上維護兩套開發環境。
---------------------------------- 補充內容的分割線 ------------------------------------
發現很多吐槽WSL2的人挺多,感覺評價比較兩極分化,我覺得,這個可能跟使用方式有關,其實跨平台這事兒從來都不容易,從最早大家用的 mingw,msys 到 msys2 再到 wsl 再到 wsl2,其實哪個階段都是有坑的,至少路徑格式的問題短期內就看不到解決的希望,因為這個依賴生態的,得所有軟體在處理路徑參數的時候都做兼容才行。
所以,要用得舒服,就必須找到一個最佳實踐,而不能期望能完全無痛地跨系統互調,對於我而言,這個最佳實踐就是:
- 將開發環境完全控制在 WSL 里,堅持不在 Windows 下安裝任何開發軟體,這樣其實就不太會踩到諸如路徑格式不一致導致的問題。
- 如果你用IDE,那麼IDE也要想盡辦法用 WSL 上的那套編譯環境,有 remote 模式可以考慮用 remote 模式,remote 模式不給力的,像 idea 這種的,可以選擇直接裝 Linux 的版本,GUI 可以用 vcxsrv 之類的搞。
- 所有項目文件都放在 WSL 里,這樣其實就不會太依賴跨系統IO的速度。
- 所有需要用Git之類的工具管理的配置文件,全都放在 WSL 里,如果某些配置文件 Windows 軟體需要復用,那麼就軟鏈接過去,這種配置文件級別的小文件其實不關心IO的速度,能直接軟鏈接就已經很完美了。
- 只把現有的互調支持當作一個兜底方案,確實需要的時候,偶爾用一下,平時高頻使用的工作流中盡量不依賴這種互調。
你可以說,這麼用的話,不就是一個融合體驗好一點的虛擬機了么? 沒錯,其實可以說,對於日常開發工作來說,我需要的就是這麼一個融合體驗足夠好的虛擬機,你以虛擬機的要求去看它,它融合體驗已經非常好了,這就夠了
試了一把,WSL2不能替代Linux。
問題主要集中在網路部分和Hyper-V部分:
- WSL2是基於Hyper-V,這意味著你跑了一個WSL2之後,就沒法啟動VirtualBox了。
現在據說vmware和VirtualBox可以用Hyper-V跑虛擬機了。但是問題還是很多,比如我原來一大堆和具體的虛擬機引擎綁定的工具,比如Guest tools,CPU的一些設置,外設的一些設置等等,都要變動。
比如要在不同平台下編譯jdk,我原來用vmware分別跑一個linux和macOS就能編譯,現在你告訴我怎麼基於Hyper-V啟動macOS?
說到底,一個內核提供兩套syscall非常酷,但是你起一個VM+周邊工具來搞,會有很多問題的。
另外,vagrant啟動Linux虛擬機作為開發環境的同學,現在Hyper-V一開,默認的VirtualBox就沒法跑了。
- 在連接VPN的情況下,WSL2內無法訪問外網。
L2TP VPN和Motion Pro均有不同程度的問題
- WSL2實例和Win10訪問,那個IP地址是變化的,這點非常不便。
- 還有,Linux下所有進程都是init進程的子進程,但WSL2不是這樣
如果你在WSL2下用過htop應該知道,以樹狀方式顯示進程會有bug。
所以切換回WSL(1)了。
但是,WSL1的缺陷也是有的,WSL1的系統調用和Linux原生的系統調用還是有細節上的不同,尤其是很多時候測試不同版本系統調用的表現,很不方便。
然後VPN DNS的問題,可以通過generateResolvConf = false來解決。
總而言之,普通用戶態程序用WSL1;特殊API或者涉及到具體的內核行為的地方用虛擬機;涉及到內核性能的,直接上物理機。沒WSL2啥事。
wsl2重度使用者來回答,結論:完全可以。
前段時間想換macbook,得知wsl2的消息後立馬給我的現役筆記本換上了,理由有:1.wsl2使用的是linux內核,這比wsl1的api翻譯強多了,我曾經在wsl1跑一個多線程程序出現過問題。 2. wsl2的進程信息不會出現在win10的任務管理器里,只有一個大大的vm進程,不在任務管理里就不會被win的安全中心跟蹤,wsl1里gcc編譯慢就是因為被安全中心監控了,這沒必要關了安全中心又得不償失。3. 和win10高度整合,直接在linux終端輸入code就自動用vscode wsl插件打來當前目錄,和本地開發體驗一致。win的exe程序如notepad++、win的文件管理器直接在終端輸入就能打開,linux的原生gui用x11轉發就可以。4. wsl2使用的是原生的ext4文件系統,io速度和原生linux一致,這點太棒了。
目前已經用在生產環境中,網路方面,win10的localhost可以訪問wsl2的所有埠,wsl2的localhost不能訪問win10埠,這內部其實是做了一個埠轉發的,個人覺得這麼設計一定程度上能起到環境隔離作用,如果非要在wsl2上訪問win10埠如使用socket代理給終端等操作,用一條命令解析出wsl2的虛擬網卡網關即可(wsl2的虛擬網卡網關是動態的),通過該網關可以訪問win10在0.0.0.0上的埠。用了wsl2後把vmare卸載了,使用StarWind V2V Image Converter這個工具將vmare虛擬機的vmdk磁碟文件轉換成hyperv能識別的vdk文件,目前已將原來工作用的幾個虛擬系統全部轉換成hyperv虛擬機,沒發現任何問題,我用的都是server版本的系統,帶桌面gui環境的linux系統這麼轉換過來能不能用沒測試過。
我做C艹開發,偶爾寫點js,wsl2足夠我的需求還是很香的,萬惡的巨硬又一次成功阻止我換到睾貴的mac系統
現在還有幾個問題
/mnt/下的性能問題。WSL2下對Linux文件系統訪問當然是快了好幾倍,但是Linux訪問Windows文件,以及Windows訪問Linux文件,速度都非常慢,比WSL1慢一個數量級。幾千個文件的小git repo,git status能卡一分鐘。完全葬送了拿WSL當Windows命令行的任何想法,只能當Linux環境來用
USB設備轉發。RDP協議是支持USB轉發的,既然WSL2這次為了GPU支持,把WDDM驅動搞進Linux內核 (GPU-PV在宿主和虛擬機內使用同一個WDDM驅動,這也是為什麼WSL2里莫名奇妙給了DX12的介面),那USB支持應該也不是不可能。
最好能再允許個掛載本地的Linux分區(這個就有點難度了,特別是在WSL2是VM的情況下)
難道就我一個人喜歡 linux desktop 嗎?
難道就我一個人喜歡 gnome3,plasma 嗎?
wsl 可以替換 terminal 和 gui,但不能替換 linux的窗口管理、快捷鍵和文件管理,更不能替代 linux 的定製化,比如我深愛的多工作空間,win10的工作空間我現在都不知道怎麼用。
當然代價也有:
1、偶爾更新不穩定
2、釘釘(網頁版,wine版都是垃圾)
3、圖形性能不好(獨顯殺手,看視頻負載升高)
4、續航降低
5、不能玩遊戲(參考3)
win10 好處:
1、穩定
2、常用軟體(開發、開源軟體除外)
3、遊戲
win10 + wsl2 我的痛點:
1、win10 文件路徑寫起來比Linux麻煩
2、工作空間、快捷鍵、窗口管理
3、wsl2 性能肯定比不上原生的Linux
4、Linux終端是核心,win10終端只能是個輔助工具
5、開發用的軟體安裝沒有Linux方便,當然有了docker以後就不是太大的問題了
6、定製、可控、國產流氓軟體
綜上對於我wsl不能替代Linux desktop
不能
不能。到頭來微軟放棄了1的API兼容模式,用一個殘廢的虛擬機跑一個殘廢的Linux,實在是沒意思。同樣是殘廢的Linux我還是覺得wsl1對系統整體影響更小。對Linux需求更高的場合還是得有不殘廢的Linux虛擬機和Linux物理機。
WSL2其實就是一個官方的虛擬機。我記得Virture PC還是別的啥被微軟收購了很久了吧,大概就是那套東西吧。
WSL(1)其實就是一個微軟版的cygwin,或者msys。
也就是說這些東西其實早就有了,只不過這次被ms集成到了系統裡面。
WSL(1)的IO速度感人。在裡面編譯llvm就是一種折磨。WSL2這方面好很多,但是目前對顯卡的支持還很爛,需要在windows下跑XSERVER才行。但是遠程的X鏈接對渲染支持很爛,所以對我來說沒啥用。
最近看到ms說馬上WSL2要支持DX12了,到時候再看一下吧。
總的來說對於學生等,偶爾用一下linux學習學習的,WSL2是個不錯的免費虛擬機。真的要派用場的地方還是算了。
P.S. windows下裝了vs code和WSL2的話,有驚喜。
我覺得完全不能
我摘一個其他人的回答
如何看待微軟 Build 2019 上發布的新 WSL2??www.zhihu.com裡面翻譯了部分微軟社區的QA
舉例其中一點
「在WSL 2的初始版本中,硬體訪問支持將受到限制,例如:您將無法訪問GPU,串列或USB。增加設備支持的工作具有高優先順序。在此期間,您始終可以使用具有串列埠和USB訪問許可權的WSL 1。」
也就是說即使據說wsl2相較於wsl來說完善了不少dbus相關,但是因為在hyperv下虛擬環境運行,IO變得更殘廢。跑運算都不得。
現在看來唯一方便的是有交叉編譯需求的用戶了。
PS:但這並不影響我這個只在windows下玩遊戲,ArchLinux完全工作的人…等聖誕節後換了顯卡,windows玩遊戲估計都要成為歷史。steam的proton太香了,DXVK太香了。
PPS: arch信徒必然是要安利一波信仰的
為啥要在windows內用一個不如windows的桌面系統?你用wsl確定不是饞它的終端么?所以要桌面幹啥?如果用linux桌面為什麼不用hyper-v或vmware?這塊我真的是不理解。
補一下:我可能理解錯了題主。但我認為不能完全取代,本來就是兩套東西。除非微軟把內核換成linux,否則無論wsl怎麼優化也是一個虛擬的內核,只是你使用起來方便些,但不會如linux那樣方便。
不行。就個人體驗來說,有兩那麼兩件事就搞不定了。
第一個就是被大多數人所詬病的POSIX路徑問題;
第二個就是網路介面,用的是一個172的B類子網介面。
怎麼說呢,我更希望能夠自己選,是使用NAT還是bridge模式。
再還有一件事,確實有點奇怪,就是這玩意兒明明是個虛擬機,為什麼在Hyper-V管理器里找不到
說說我上個周末的經歷
為了嘗試WSL2,折騰了一小會兒把Windows 10 升級到了build 2004。高高興興地把Ubuntu 20.04和node環境配好了,IDEA-U也配置了WSL版的node解釋器。
一運行Node項目,發現半天沒反應。過了比較長的啟動時間,程序起來了,打開瀏覽器確訪問不到程序。然後切換到PowerShell運行程序,程序馬上就異常退出了,提示3030埠因為許可權拒絕訪問。
一檢查,發現一大堆埠(port range)被系統預留了,我常用的基本都在裡面。於是想著用netsh去刪除掉這些預留配置。有些可以刪掉,比如我解開了常用的1080。但是有些刪除不掉,會提示拒絕訪問。
當然因為系統預留埠導致程序無法使用這些埠不是重點,重點是在WSL2下node根本不知道這些埠無法使用。
悔恨無比地浪費了一個寶貴的休息日。
謝邀請!微軟.窗口系統.windows12.不在開發!
其實我覺得,微軟給windows系統調用做一層posix的封裝,再有個像樣的包管理器配合ps,就可以留下大多數程序員了。
桌面版的Llinux需要被取代么?
我在使用WSL 2,用windows 版本goland做開發,WSL2上裝了golang,但是goland中goroot無法選擇wsl 2中的go環境。
請問大佬們有解決方案嗎?
目前還不行,下個版本可以直接運行gui程序估計就差不多了。
現在的wsl2網路其實還會經常出各種問題,比如無法設置static IP,每次啟動的時候都會變。雖然可以通過hostname映射來解決,但體驗始終是不好。
跟host之間的127.0.0.1埠映射偶爾會出現無法訪問的現象。最近一次slow ring的更新之後,連直接使用IP都無法訪問了,更別說通過127.0.0.1了。
不過wsl2確實好用,期待慢慢改進吧。
The WSL2 is far far from convenient to make some serious work. Waiting for WSL9.
推薦閱讀:
※Win10系統WLAN被禁用啟用不了?
※賣電腦的建議我裝win7系統,可是我覺得win10很合心意!我要不要聽從他的建議?
※Win10的ctrl鍵自動按下?
※pc端什麼瀏覽器最快最省內存?
※筆記本如何有效關閉核顯(Windows10)?
TAG:MicrosoftWindows | 操作系統 | Linux | Windows10 | WSLWindowsSubsystemforLinux |