WSL介紹
WSL(Windows Subsystem on Linux)顶别,適用于 Windows 的 Linux 子系統(tǒng)酒朵,是微軟和Canonical(Ubuntu 的母公司)共同開發(fā)的初斑,在Windows 10后加入的功能宪肖,能夠在Windows 10 系統(tǒng)中掛載一個Linux 系統(tǒng),用起來不像虛擬機那樣臃腫濒生、開機緩慢埋泵、性能低下,是Windows使用者用來進階使用Linux系統(tǒng)的一個不錯的選擇罪治,開發(fā)人員可在其上運行GNU/Linux環(huán)境(包括大多數命令行工具丽声、實用程序和應用程序)。
WSL的安裝
第一步:啟用虛擬機平臺和 Linux 子系統(tǒng)功能
確保你的windows10系統(tǒng)的內部版本高于或等于16215 (來自官網提示)觉义;
在win10的win圖標處雁社,右鍵->管理員權限啟動 PowerShell (或者win+r-->PowerShell-->ctrl+shift+enter),出現PowerShell的命令行界面后谁撼,接著輸入以下命令啟用虛擬機平臺:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
命令運行后歧胁,等待一段時間滋饲,會出現如下結果厉碟,代表虛擬平臺已經開啟:
Running
[ooooooooooooooo ]
Path :
Online : True
RestartNeeded : False
虛擬平臺開啟后,接著在命令行中輸入以下命令開始Linux子系統(tǒng):
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
和開啟虛擬平臺有一些區(qū)別屠缭,命令運行結束后箍鼓,命令行會出現是否重啟的界面:
Running
[ooooooooooooooo ]
是否立即重啟計算機以完成此操作?
[Y] Yes [N] No [?] 幫助 (默認值為“Y”): n
Path :
Online : True
RestartNeeded : True
當然,上述windows 10的功能的開啟也可以通過啟用或者關閉windows功能來啟用:
win搜索-->控制面板-->程序-->卸載程序-->啟用或者關閉 Windows 功能-->勾選虛擬機平臺和適用于 Linux 的 Windows 子系統(tǒng):
完成設置后呵曹,記得重啟計算機款咖!
第二步:選擇一個 Linux 發(fā)行版進行安裝
windows打開微軟應用商店(store),在搜索框中輸入Linux進行搜索奄喂,在搜索結果中有很多Linux發(fā)行版可以選擇铐殃,開始你的選擇,獲取該發(fā)行版跨新,然后安裝:
在這里需要注意富腊,在store中的安裝并沒有實際上完成 Linux 子系統(tǒng)的安裝,還需要運行一次已安裝的 Linux 發(fā)行版域帐,這樣才會完成真正的安裝:
一般不愿意折騰的都推薦使用這種方法安裝Linux發(fā)行版赘被,但是官方也考慮到了其他的情況是整,如無法(或不想)通過 Microsoft Store 安裝 WSL Linux 發(fā)行版、可能運行的是不支持 Microsoft Store民假、系統(tǒng)環(huán)境中不允許 Microsoft Store 使用的 Windows Server 等等浮入,當出現以下情況時,可以通過如下的方法下載和安裝:
手動下載適用于 Linux 的 Windows 子系統(tǒng)發(fā)行版包
有時候羊异,你可能無法(或不想)通過 Microsoft Store 安裝 WSL Linux 發(fā)行版事秀,比如說,你運行的可能不支持 Microsoft Store 或公司網絡策略和/或管理員在你的環(huán)境中不允許 Microsoft Store 使用的 Windows Server 或長期服務(LTSC)桌面操作系統(tǒng) SKU野舶。
在這些情況下秽晚,雖然 WSL 本身可用,但如果你無法訪問應用商店筒愚,如何下載并在 WSL 中安裝 Linux 發(fā)行版赴蝇?
瀏覽器下載發(fā)行版
如果 Microsoft Store 應用不可用,則可以在瀏覽器中通過單擊以下鏈接下載并手動安裝 Linux 發(fā)行版:
Ubuntu 18.04
Ubuntu 18.04 ARM
Ubuntu 16.04
Debian GNU/Linux
Kali Linux
OpenSUSE Leap 42
SUSE Linux Enterprise Server 12
WSL 的 Fedora Remix
點擊鏈接后巢掺,可以下載CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc.Appx
這樣的以.appx
為后綴的包到瀏覽器下載文件夾句伶,然后按照下面的安裝說明安裝下載的發(fā)行版。
命令行下載發(fā)行版
使用 PowerShell WebRequest下載
下載發(fā)行版陆淀,也可以通過windows的命令行工具——PowerShell
來操作考余,命令提示符是Invoke-WebRequest,如下是下載示例:
cd C:\Users\dulun\Downloads
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu-1804.appx -UseBasicParsing
來自官方的提示:下載開始的時候可以看到一個進度條轧苫,如果預估下載的時間比較長楚堤,請通過設置$ProgressPreference = 'SilentlyContinue'
來關閉進度欄
使用 PowerShell curl.exe 下載
Windows 10 春季2018更新(或更高版本)包含可從命令行調用 web 請求(例如 HTTP GET、POST含懊、PUT 等命令)的常用命令行工具——curl.exe身冬,名字是客戶端(client)的 URL 工具的意思。使用curl.exe下載的示例:
curl.exe -L -o Ubuntu-1804.appx https://aka.ms/wsl-ubuntu-1804
安裝下載的Linux發(fā)行版
在Windows10系統(tǒng)中岔乔,使用PowerShell
安裝已下載的Linux 發(fā)行版酥筝,但是需要進入到下載的文件的目錄,運行Add-AppxPackage \.app_name.appx
雏门,示例:
cd C:\Users\dulun\Downloads
Add-AppxPackage Ubuntu-1804.appx
Windows Server安裝WSL
但是有些用戶使用的是Windows Server的系統(tǒng)嘿歌,這和Windows10的安裝有一些區(qū)別,前面的開啟受信用的執(zhí)行環(huán)境是一樣的茁影,啟用虛擬機平臺和適用于 Linux 的 Windows 子系統(tǒng)宙帝,然后重啟計算機,必須重啟募闲。然后按照上面的鏈接步脓、下載方式選擇合適Linux 發(fā)行版、下載。
Windows Server提取并安裝 Linux 發(fā)行版
下載發(fā)行版后沪编,請?zhí)崛∑鋬热莺襞瑁⑹謩影惭b發(fā)行版,使用PowerShell
提取下載的<distro>.appx
包的內容:
Rename-Item .\Ubuntu-1804.appx .\Ubuntu.zip
Expand-Archive .\Ubuntu.zip .\Ubuntu
cd .\Ubuntu && ls ##進入Ubuntu目錄并查看包含的文件
在名為Ubuntu的目標文件夾中運行Linux 發(fā)行版啟動器應用程序ubuntu1804.exe
以完成安裝:
.\ubuntu1804.exe
第三步:初始化蚁廓、查看和使用 WSL
初始化安裝Linux發(fā)行版
新安裝完WSL后访圃,首次運行新安裝的分發(fā)版,會打開一個控制臺窗口相嵌,其中指出需要等待一兩分鐘時間來完成安裝:
這一步是最后的安裝階段腿时,Linux發(fā)行版的文件將會被解壓縮,然后儲存到電腦上供使用饭宾,時間的長短取決于電腦存儲設備的性能批糟,這一步也只是當Linuxf發(fā)行版是初始安裝的版本時,才需要執(zhí)行初始化安裝——這也是為什么后期WSL的啟動飛速的原因看铆。
初始話安裝結束后徽鼎,系統(tǒng)提示創(chuàng)建新的用戶帳戶及其密碼:
此用戶帳戶用于啟動Linux 發(fā)行版時默認登錄的非管理員用戶。
可根據需要選擇任何用戶名和密碼 - 它們與 Windows 用戶名無關弹惦。打開此Linux子系統(tǒng)時否淤,系統(tǒng)不需要輸入密碼,但是如果使用
sudo
權限的時候棠隐,這需要輸入密碼石抡,所以密碼還是需要記住的。
在windows中查看安裝的WSL
在PowerShell
中使用 wsl -l
可以列出當前系統(tǒng)上已經安裝的 Linux 子系統(tǒng)名稱助泽。注意這里的 -l
是列表list
的縮寫啰扛,是字母l
不是其他字符。
如果運行命令的時候嗡贺,提示wsl
不是內部或外部命令隐解,說明你第一步的“適用于 Windows 的 Linux 子系統(tǒng)”沒有設置完整,請先完成第一步暑刃。
如果提示沒有發(fā)現任何已安裝的 Linux子系統(tǒng)厢漩,說明你沒有安裝 Linux 發(fā)行版,或者只是從商店或者瀏覽器下載了岩臣,沒有運行它執(zhí)行真正的安裝,請先完成本文第二步宵膨。
在這里如果直接在PowerShell
中輸入wsl
架谎,也可以直接進入安裝的Linux子系統(tǒng)。
WSL的配置ssh的開機自啟動
因為我是在Workstation上安裝的WSL辟躏,本意是取代原先使用的虛擬機谷扣,這里說一下為什么舍棄了虛擬機,我剛開始使用的是VirtualBox,這個軟件吧我第一次使用会涎,KI‘s IT部門推薦的裹匙,但是除了安裝完第一次以后,我就再也沒有打開過末秃,IT小哥也不知道怎么辦概页,我只能轉投了VMware,這不是我第一次使用了练慕,剛來KI的時候惰匙,因為條件艱苦,我使用了辦公室老機器打了一個虛擬機用來搭建流程铃将,但是用的只能說還行项鬼,畢竟只是前期搭建。
后來新機器來了以后劲阎,因為網絡驅動器(俗稱存儲Server)的存在绘盟,我沒有辦法安裝Ubuntu,只能先安裝KI的windows 10悯仙,然后使用實驗室博后的賬號登錄奥此,Server才會出現(人家有access的)。VMware在KI的Software Center居然下不到雁比,想盡了辦法安裝好稚虎,體驗了5天左右,缺點出來了偎捎,我配的服務器的內存是256g蠢终,但是VMware的max memory是64g;機器配了兩個cpu茴她,共40個核寻拂,但是VMware的max processor數是16,這導致我配置的機器大部分性能根本沒法發(fā)揮出來丈牢,于是我轉身就投身了WSL的懷抱祭钉,配置起來也是各種奇葩,因為KI安裝軟件的各種限制己沛。
既然是服務器的使用慌核,肯定需要用到SSH的配置,因為我一般是使用自己的電腦用putty申尼、xshell等軟件連接服務器的垮卓,但是WSL的ssh不是安裝好久開機自啟動,需要設置师幕,接下來簡單說一下我的設置粟按。
Ubuntu 啟用SSH所需設置
#設置root的口令(密碼),用作后續(xù)登陸使用
sudo passwd root
#安裝openssh-server(ubuntu自帶已安裝,但是我使用有問題灭将,沒找到原因)
sudo apt remove openssh-server
sudo apt install openssh-client openssh-server
#備份原始的sshd_config
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
#使用vim進行編輯疼鸟,按i進入insert模式
sudo vim /etc/ssh/sshd_config
在vim中找到對應項并修改,ESC庙曙,輸入`wq`保存退出:
Port 2222
ListenAddress 0.0.0.0 # 如果需要指定監(jiān)聽的IP則去除最左側的井號空镜,并配置對應IP,默認即監(jiān)聽PC所有IP
PermitRootLogin no # 如果你需要用 root 直接登錄系統(tǒng)則此處改為 yes
PasswordAuthentication yes # 將 no 改為 yes 表示使用帳號密碼方式登錄
#使用vim進行編輯矾利,按i進入insert模式
sudo vim /etc/ssh/sshd_config
#在vim中找到對應項并修改姑裂,ESC,輸入`wq`保存退出:
Port 2222
ListenAddress 0.0.0.0 # 如果需要指定監(jiān)聽的IP則去除最左側的井號男旗,并配置對應IP舶斧,默認即監(jiān)聽PC所有IP
#啟動ssh,查看status
sudo service ssh start #啟動SSH服務
sudo service ssh status #檢查狀態(tài)
sudo systemctl enable ssh #開機自動啟動ssh命令察皇,我好想失效了
WSL開機自啟動SSH
因為我使用systemctl這個失效了茴厉,所以就另想辦法開機自啟動ssh;
Ubuntu 系統(tǒng)添加啟動:
##登錄帳號就會啟動什荣,寫入到bash中
sed -i '/^sudo service ssh --full-restart/ d' ~/.bashrc
##使用sudo開機自啟動
echo -e "%sudo\tALL=(ALL) NOPASSWD: /usr/sbin/service ssh --full-restart" | sudo tee -a /etc/sudoers
##檢測ssh的狀態(tài)矾缓,也是寫入到bash中
cat << 'EOF' >> ~/.bashrc
sshd_status=$(service ssh status)
if [[ $sshd_status = *"is not running"* ]]; then
sudo service ssh --full-restart
fi
EOF
如果大家覺得麻煩,可以使用這個自動安裝和配置的腳本稻爬,我修改了一下嗜闻,大家用之前可以看一下大概,這里也會安裝一下基礎的安裝包桅锄。
Windows啟用SSH端口所需設置
因為在前面設置的ssh端口是2222琉雳,22端口在Windows下有其他占用了,所以還需要去防火墻中設置一下這個端口的撥入友瘤,win+防火墻翠肘,進入防火墻頁面,按如下操作:
端口-->TCP-->特點本地端口2222
-->允許連接-->下一步確定辫秧;設置完成束倍。
Windows 系統(tǒng)添加自動啟動
在ubuntu中添加一個腳本程序,詳情如下:
sudo vi /etc/init.wsl
#!/bin/sh
# Filename: /etc/init.wsl
# Usage: sudo /etc/init.wsl [start|stop|restart]
/etc/init.d/ssh $1
/etc/init.d/cron $1
/usr/sbin/rstudio-server $1
mount -t drvfs 'P:\PHA' /mnt/shareP
Windows 中添加自動啟動的腳本 startubuntu.vbs盟戏;
a. 打開當前用戶默認自啟動加載文件夾绪妹,在 Windows 中,開始-運行(或者win+r)抓半,輸入:shell:startup
喂急;
b. 在當前用戶默認自啟動加載文件夾中,添加要加載的VBS腳本文件 startubuntu.vbs 笛求。
Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d ubuntu -u root /usr/sbin/service ssh --full-restart", vbhide
ws.run "ubuntu run sudo /etc/init.wsl start", vbhide
重啟 Windows 系統(tǒng),驗證WSL ssh服務是否自動啟動。
至此探入,我這段時間的折騰就在這里了狡孔,還有些有的沒的也就沒寫了,服務器配置好了蜂嗽,還需要去把流程什么的遷移過來苗膝,后期再寫寫WSL中掛在硬盤、移動硬盤植旧、網絡驅動器等等再說吧辱揭!
References
如何在 Windows 10 中安裝 WSL2 的 Linux 子系統(tǒng)
在Windows上舒適地使用Linux子系統(tǒng)(一):WSL的安裝及配置
—— dulunar 后記于 2019.10