Windows10下使用Ubuntu子系統(tǒng)

作者:__lifanxin
鏈接:https://blog.csdn.net/A951860555/article/details/110038308
來源:CSDN
著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者。

Ubuntu子系統(tǒng)概述

什么是子系統(tǒng)

??這里先引入一個(gè)概念,WSL(Windows Subsystem for Linux)即windows下的Linux子系統(tǒng),后面一個(gè)小節(jié)會(huì)詳細(xì)介紹WSL的概念,Ubuntu子系統(tǒng)的實(shí)現(xiàn)即基于WSL。安裝Ubuntu子系統(tǒng)可以在Windows上引入一個(gè)完整的Ubuntu終端環(huán)境,可以使用Linux環(huán)境下的功能和應(yīng)用而不用離開Windows。其使用界面如下圖所示:


Ubuntu子系統(tǒng)

??每天的第一次開啟會(huì)展示此系統(tǒng)的詳細(xì)信息,比如進(jìn)程數(shù),硬盤使用情況,內(nèi)存使用情況,IP地址等等,當(dāng)然也顯示了我這有一個(gè)僵尸進(jìn)程。不慌,問題不大。

WSL介紹

源引自百度百科
??Windows Subsystem for Linux(簡稱WSL)是一個(gè)在Windows 10上能夠運(yùn)行原生Linux二進(jìn)制可執(zhí)行文件(ELF格式)的兼容層,它是由微軟與Canonical公司合作開發(fā)。WSL基于Windows NT內(nèi)核虛擬了Linux內(nèi)核接口,其能夠運(yùn)行大部分的Linux軟件,但圖形化界面無法運(yùn)行,所以我們看到的Ubuntu子系統(tǒng)只提供了一個(gè)終端環(huán)境。
??Windows Subsystem for Linux 包含內(nèi)核態(tài)驅(qū)動(dòng)(lxss.sys和 lxcore.sys),以協(xié)調(diào)Linux系統(tǒng)調(diào)用的請求與Windows NT內(nèi)核。驅(qū)動(dòng)不包含Linux內(nèi)核代碼,但是是一個(gè)全新實(shí)現(xiàn)的Linux兼容的內(nèi)核接口。在原生的Linux上,用戶態(tài)程序請求一個(gè)系統(tǒng)調(diào)用,系統(tǒng)調(diào)用請求由Linux內(nèi)核處理。在WSL,當(dāng)一個(gè)系統(tǒng)調(diào)用由同一個(gè)可執(zhí)行文件請求時(shí),Windows NT內(nèi)核把請求發(fā)送給lxcore.sys。 當(dāng)可能時(shí),lxcore.sys將Linux系統(tǒng)調(diào)用翻譯成等價(jià)的Windows NT的調(diào)用,由它來完成繁重的工作。當(dāng)沒有可能的等價(jià)轉(zhuǎn)換時(shí),Windows內(nèi)核態(tài)驅(qū)動(dòng)需要直接處理請求。比如說,Linux中的fork()系統(tǒng)調(diào)用沒有直接的等價(jià)的windows版本。當(dāng)一個(gè)fork系統(tǒng)調(diào)用由Windows Subsystem for Linux產(chǎn)生時(shí),lxcore.sys需要做一些復(fù)制進(jìn)程的準(zhǔn)備工作,然后調(diào)用Windows NT內(nèi)核APIs來產(chǎn)生一個(gè)進(jìn)程來正確實(shí)現(xiàn)fork操作,完成為新進(jìn)程復(fù)制額外的數(shù)據(jù)。
??此外WSL也提供了兩種文件系統(tǒng),VolFs 和 DriveFs,VolFs提供了完整的Linux文件系統(tǒng)的特性,包括符號(hào)鏈接和權(quán)限管理等;DriveFs兼容Windows下的文件格式,所有的Windows磁盤使用DriveFs掛載在/mnt/目錄下。

雙系統(tǒng)、虛擬機(jī)以及子系統(tǒng)的對比

??接下來對比以上三種在一臺(tái)電腦上使用多種操作系統(tǒng)的方式,我將主要從安裝難度和使用體驗(yàn)上來進(jìn)行對比分析。
??首先來看雙操作系統(tǒng),安裝雙操作系統(tǒng)需要到官網(wǎng)下載鏡像,備好U盤或者光驅(qū)來作為啟動(dòng)媒介,然后通過BIOS界面進(jìn)入到系統(tǒng)安裝。整個(gè)安裝流程十分復(fù)雜且耗時(shí)比較長,但其使用體驗(yàn)無疑是最強(qiáng)的,因?yàn)槠鋼碛型暾腛S環(huán)境、硬件資源,僅就使用上來說和操作單一系統(tǒng)是一樣的。但就某些情況下需要聯(lián)合兩個(gè)系統(tǒng)一同使用時(shí),雙操作系統(tǒng)的切換就很麻煩,我們無法在不關(guān)閉其中一個(gè)系統(tǒng)的情況下使用另外一個(gè)系統(tǒng)。其安裝難度5顆星,使用體驗(yàn)5顆星。
??接著來看虛擬機(jī),虛擬機(jī)可以直接在宿主機(jī)上虛擬出新的操作系統(tǒng)。其安裝仍然需要鏡像文件,不過不用制作U盤啟動(dòng)盤,只需要下載VM虛擬機(jī)軟件,然后按照軟件的指導(dǎo),可以較為簡單的安裝虛擬機(jī)。因?yàn)樘摂M機(jī)的運(yùn)行對宿主機(jī)來說就是運(yùn)行一個(gè)軟件,所以在切換操作系統(tǒng)時(shí)就像在切換軟件一樣簡單,不得不說,虛擬的出現(xiàn)解決了雙操作系統(tǒng)切換的繁瑣耗時(shí),也降低了安裝系統(tǒng)的難度。但就其使用效果來說,體驗(yàn)很差,首先虛擬機(jī)的啟動(dòng)比正常操作系統(tǒng)啟動(dòng)更耗時(shí),其次是其使用過程中卡頓非常明顯,因?yàn)槠涮摂M了整個(gè)硬件資源和操作系統(tǒng)內(nèi)核,而虛擬環(huán)境下內(nèi)存和硬盤資源利用率很低,即使在虛擬機(jī)設(shè)置中分配較多的CPU和內(nèi)存資源也很難提升其使用體驗(yàn)。其安裝難度3顆星,使用體驗(yàn)3顆星。
??在上面我們對比了雙操作系統(tǒng)和虛擬機(jī)的優(yōu)劣勢,那么子系統(tǒng)又是如何的呢?首先子系統(tǒng)的安裝很簡單,下面的一節(jié)我將會(huì)介紹,其安裝過程不用U盤,不用鏡像文件,安裝過程中也沒有過多的選項(xiàng)。其次在使用子系統(tǒng)的同時(shí)我們可以不用離開Windows系統(tǒng),這種感覺就像在Windows下開啟一個(gè)終端一樣體驗(yàn)極好。其安裝難度1顆星,使用體驗(yàn)4星半,唯一一點(diǎn)不好(如果能算作缺點(diǎn)的話)的是其沒有圖形化界面。
??這里額外提一下和本小節(jié)標(biāo)題無關(guān)的Docker,相比大家或多或少也都用過,至少也聽過。Docker出來的短短幾年時(shí)間內(nèi)就迅速受業(yè)界歡迎,已經(jīng)成為不少公司的標(biāo)配。Docker作為一種容器虛擬技術(shù),可以認(rèn)為是一種輕量級(jí)的虛擬機(jī)技術(shù),不虛擬硬件和內(nèi)核資源,在軟件服務(wù)層面上完全可以替代虛擬機(jī)。它和Ubuntu子系統(tǒng)都具有輕量級(jí)的特性,而且都能從軟件層面上解決操作系統(tǒng)環(huán)境的問題。有興趣的可以參見這篇博文,相信閱讀后可以從不同的角度打開新世界的大門,發(fā)現(xiàn)更多的應(yīng)用場景。

安裝Ubuntu子系統(tǒng)

在Windows10下開啟WSL

1、第一種方式,命令行終端開啟方式(官方文檔步驟):
首先以管理員權(quán)限開啟powershell終端:


開啟powershell

??在終端中鍵入以下代碼,然后重啟電腦:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

2、第二種方式,圖形化界面開啟:
??如果各位對命令行不太熟悉或者不太懂上述命令的含義而不敢操作,這里我也提供了Windows的經(jīng)典開啟方式-->圖形化界面開啟。如下圖所示,在微軟小娜助手中搜索:設(shè)置:啟動(dòng)或關(guān)閉Windows功能,然后打開。

微軟小娜

??如下圖所示,在里面找到”適用于Linux的Windows子系統(tǒng)“選項(xiàng),打上勾,確定,然后重啟電腦。


啟動(dòng)或關(guān)閉Windows功能

安裝Ubuntu

??在Windows10上點(diǎn)擊win圖標(biāo),打開Microsoft Store,查找到Ubuntu,如下圖所示:
Micrsoft Store

??你可以根據(jù)自己的需要選擇相應(yīng)的Ubuntu系統(tǒng)版本,可以看到第一個(gè)Ubuntu不帶版本號(hào)并且下載量最多,如果選擇這一個(gè)其實(shí)安裝完后默認(rèn)就是最新版本。

配置和運(yùn)行Ubuntu

??經(jīng)過上面的步驟后,我們就已經(jīng)安裝好了Ubuntu子系統(tǒng),安裝過程異常簡單和快捷。安裝過后,點(diǎn)擊win圖標(biāo)就可以在“最近添加”或者"U"開頭的應(yīng)用程序列表中找到它,然后點(diǎn)擊開啟。首次使用我們需要設(shè)置自己的用戶名和密碼。

Ubuntu用戶配置

新環(huán)境和新問題

??使用Ubuntu子系統(tǒng)與普通雙系統(tǒng)或者虛擬機(jī)中的操作系統(tǒng)相比幾乎沒有任何區(qū)別,不過有些內(nèi)容還是有所區(qū)別,下面我就講講我在實(shí)際操作中發(fā)現(xiàn)的不同。PS:我使用的是WSL2,該版本在2020年5月份更新,大家現(xiàn)在默認(rèn)安裝后都使用的是WSL1。

WSL2的開啟

??在Windows10 powershell中鍵入以下命令,如果輸入后提示權(quán)限不足,就用管理員身份開啟。
??將已經(jīng)存在WSL1發(fā)行版轉(zhuǎn)換為WSL2版本

wsl.exe --set-version Ubuntu 2

??將WSL2版本設(shè)置為以后安裝WSL應(yīng)用服務(wù)的默認(rèn)版本

wsl.exe --set-default-version 2

Ubuntu子系統(tǒng)的遷移

??Ubuntu子系統(tǒng)默認(rèn)是安裝在系統(tǒng)的C盤中,如果想要遷移的話可以參照這篇文章。

IP地址的問題

??在最開始使用WSL1版本的時(shí)候,我查看Ubuntu子系統(tǒng)IP和Windows10 IP發(fā)現(xiàn)兩者的IP地址是一樣,在網(wǎng)絡(luò)適配器中更改Windows10的IP地址也會(huì)改變Ubuntu子系統(tǒng)的地址,所以Ubuntu子系統(tǒng)給人的感覺就是開啟的一個(gè)Windows下Linux終端而已。
??換用WSL2后,在Ubuntu子系統(tǒng)鍵入ifconfig,在Windows10 powershell中鍵入ipconfig,如下圖所示:


Ubuntu IP

Windows10 IP

??我們對比Ubuntu的中eth0和Windows10下的VEthernet(WSL),可以發(fā)現(xiàn)在WSL2中已經(jīng)為子系統(tǒng)和宿主機(jī)虛擬出了新的網(wǎng)卡端口,同時(shí)宿主機(jī)中也虛擬出了一個(gè)交換機(jī)vEthernet(Default Switch)。在宿主機(jī)中最開始的WLAN是電腦無線網(wǎng)的IP地址,連的是手機(jī)熱點(diǎn)。
??從上面的分析中可以看出,WSL2的IP映射方式類似虛擬機(jī)網(wǎng)卡的NAT模式,也就是在宿主機(jī)中模擬出新的網(wǎng)卡和子系統(tǒng)相連,而并沒有將子系統(tǒng)直接放在宿主機(jī)所在的網(wǎng)端上(這種方式在虛擬機(jī)中叫橋接模式)。同時(shí)Ubuntu子系統(tǒng)/etc/network/目錄下已經(jīng)沒有了interfaces文件,該文件是用于Ubuntu系統(tǒng)的網(wǎng)絡(luò)配置,轉(zhuǎn)而是下面的兩個(gè)文件夾,在這兩個(gè)文件夾下都有名叫ethtool的腳本文件:


/etc/network/目錄

ethtool

在子系統(tǒng)中訪問Windows10下的文件

??安裝完子系統(tǒng)后,我們原來Windows10下的硬盤都被掛在到/mnt/目錄下,下面的命令將會(huì)依次訪問C\D\E盤:

cd /mnt/c/
cd /mnt/d/
cd /mnt/e/

vscode遠(yuǎn)端訪問

??在安裝子系統(tǒng)的同時(shí),如果你裝了vscode文本編輯器,那么vscode會(huì)提示我們安裝一個(gè)名叫"Remote WSL"的插件。

Remote WSL

??該插件可以讓你通過子系統(tǒng)直接使用在Windows10系統(tǒng)下的vscode而無需重新安裝,并且此時(shí)開啟的vscode使用的是Linux下的編譯環(huán)境,比如C語言使用的是/usr/bin/gcc。在終端鍵入以下命令即可:

code .

??此命令會(huì)以Ubuntu子系統(tǒng)下的當(dāng)前目錄作為工作目錄打開vscode。

其它

??我個(gè)人覺得子系統(tǒng)帶來的巨大好處就是重用,比如上文中提到的vscode,原來Windows10中安裝過后,子系統(tǒng)就不需要再重復(fù)安裝,本來一個(gè)軟件安裝一次便足矣,我們之所以需要在不同系統(tǒng)中使用是因?yàn)榄h(huán)境不同,我們實(shí)質(zhì)上用的是環(huán)境。所以Ubuntu子系統(tǒng)極大的解決了我們在不同環(huán)境下使用同一軟件應(yīng)用的需求。除此之外,在使用Docker、Visual Studio等軟件時(shí),我們都只需要在Windows10環(huán)境下安裝即可,然后在Ubuntu子系統(tǒng)就可以訪問使用了。

總結(jié)

??其實(shí)一開始我也是沉迷于雙操作系統(tǒng)不可自拔,后來由于學(xué)校的實(shí)驗(yàn)操作需要使用虛擬機(jī),又開始搞了一段時(shí)間的虛擬機(jī),直到有一天虛擬機(jī)說崩就崩了,也不知道出啥問題,反正一覺醒來就打不開了,網(wǎng)上各種方法也都試過了,始終無法恢復(fù)。在一氣之下就體驗(yàn)了一把Ubuntu子系統(tǒng),發(fā)現(xiàn)還是很香的,人生新世界的大門就此打開。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容