我的Windows10下的WSL的使用經歷
微軟每年都會舉辦 Build 開發者大會,近年來越來越受關注的 子系統 Windows Subsystem for Linux ( WSL )已經很完善了,我抱著體驗一把的心態,也來使用一下這個功能。
各位新手 Linux 朋友們, 有沒有想過怎麼在 W indows 下面使用 Linux ,下面我來透過自己的實際操作,分享一遍自己的 Windows10 下的 WSL 的使用經歷。
首先什麼是 W SL
百度百科裡面是這樣介紹的: Windows Subsystem for Linux (簡稱 WSL )適用於 Windows 的 Linux 子系統。 也許剛剛接觸 Linux 的新手會覺得奇怪, Linux 不是單獨的系統嗎?比如我們學習和考試認證的都是 Redhat 、 Ubuntu 、 Centos 等。 為什麼 Windows 會有一個 Linux 的子系統呢?其實此子系統起源於命運多舛的 Astoria 專案,其目的是允許 Android 應用執行在 Windows 10 Mobile 上。此功能元件從 Windows 10 Insider Preview build 14316 開始可用。後來到了 2022 年 9 月 22 日,微軟釋出了 Windows 11/10 的 Linux 子系統新預覽版,微軟宣佈從該版本開始, WSL 已支援 systemd 。最新的正式版於 2022 年 11 月 16 日,微軟 Win11/10 Linux 子系統 WSL 1.0.0 釋出
操作 Linux 的過程中常用的命令和如何使用 ssh 服務管理遠端主機,可以檢視 第 9 章節的內容。
一 開啟 WSL 功能
首先是你要使用 Windows 10 2004 以上版本。或者你理解為要是 2 022 年 9 月份以後的版本。我寫本文的時間是 2 022 年 1 1 月,更新了最新的微軟 1 1 月累計更新包。
分享兩種啟動 W SL 的方法
方法 1 :透過命令列啟動 W SL 。
點選右下角 W IN 開始 - 右鍵 - Windows PowerShell( 管理員 ) 以管理員身份執行。
然後輸入如下命令:
[ Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform ]
看到如下就表示虛擬平臺正在啟動。
虛擬平臺開啟後,接著在命令列中輸入以下命令開始 Linux 子系統:
[ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux ]
重啟動計算機
方法 2 :當然你也有第二種啟動的方法,不用敲命令這麼麻煩 。
開機進入 - 控制皮膚 - 程式 - 找到 啟動或關閉 Windows 功能
請在勾選框中勾選 - 適用於 Linux 的 Windows 子系統
這個時候系統也會要求你重啟動計算機。
二 安裝一個 Linux 系統
功能開啟以後,這個時候你可以選擇的有兩種方法:
1. 透過 開啟電腦上微軟應用商店,在搜尋框中輸入 Linux ,然後在出來結果中你可以看到很多發行版的 Linux 。當前透過這種方法只有一個 Ubuntu 的下載。
獲取該版本,然後安裝就可以了。
這個方法看上去簡單,我一般不推薦也不願意折騰。這是因為很多版本的 W indows10 無法或者不願意透過微軟應用商店下來更新。
1. 直接手動下載一個安裝包 ,這個方法是我認為最簡單的。我在網上找到了如下幾個下載連線供大家使用:
下載完成以後,直接執行 Cent OS7.exe 安裝就可以了。
安裝的過程請看上圖,按照畫面提示操作即可。
開啟開始 - 選擇 Windows PowerShell 執行看一下,這就是我們 L inux 子系統了。
三 啟動 S SH 服務
為什麼要啟動 S SH 伺服器,這個不用我多說了把。使用 Linux 的時候,因為大部分使用者一般都是使用 S SH 連線到伺服器上,所以上來就直接啟動 systemctl 失敗。結果後來上網查資料才發現,原來 W SL 無法使用 systemctl ,正好使用網路找到了一個寫好的指令碼分享給大家。
#!/bin/sh
# Start/stop/restart the secure shell server:
sshd_start() {
# Create host keys if needed.
if [ ! -r /etc/ssh/ssh_host_key ]; then
/usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ''
fi
if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
/usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
fi
if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
/usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
fi
if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
/usr/bin/ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key-N ''
fi
if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
/usr/bin/ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key-N ''
fi
/usr/sbin/sshd -f /etc/ssh/sshd_config
}
sshd_stop() {
killall sshd
}
sshd_restart() {
if [ -r /var/run/sshd.pid ]; then
echo "WARNING: killing listener process only. To kill every sshd process, you must"
echo " use 'rc.sshd stop'. 'rc.sshd restart' kills only the parent sshd to"
echo " allow an admin logged in through sshd to use 'rc.sshd restart' without"
echo " being cut off. If sshd has been upgraded, new connections will now"
echo " use the new version, which should be a safe enough approach."
kill `cat /var/run/sshd.pid`
else
killall sshd
fi
sleep 1
sshd_start
}
case "$1" in
'start')
sshd_start
;;
'stop')
sshd_stop
;;
'restart')
sshd_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
編輯這段 S HELL 和以往一樣,記得一定要儲存 。
接下來就是修改 sshd 的服務配置 vi /etc/ssh/sshd_config
# 允許 root 使用者登入
PermitRootLogin yes
# 服務埠,為了不和 windows 及其它 WSL 子系統衝突,手動指定一個
Port 12308
# 監聽地址,如果需要遠端機器連線
ListenAddress 0.0.0.0
到這一步先不要換,記得提升自己的使用者許可權,
chmod +x /etc/init.d/sshd
啟動 sshd, 檢視服務已經啟動
/etc/init.d/sshd start
ps -ef|grep ssh
啟動的過程會彈出防火牆的提示,這個時候點選允許
這樣一切順利的話,你可以透過 W indows 開啟執行 命令列模式 cmd
輸入 netstat -ano|findstr "12308", 檢視埠,發現已經啟動。
接下來就是 就可以配合 vscode ,透過遠端連線到 Windows 下的 Centos 進行編譯。
有個報錯需要注意下
如果啟動出現報錯 error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
透過網路很快搜尋到解決方法:( )
這是因為新版的 opensshd 中新增了 ed25519 做簽名驗證,而之前系統裡沒這個演算法的證書。生成一下就好了
解決方法如下:
ssh-keygen –A
或者
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ED25519_key
然後
重新啟動sshd 服務
以上就是我執行 Windows 子系統 W SL 的操作步驟,當中也有些不足,希望能夠在 Linux 的學習中幫助大家。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2987768/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我的前端學習經歷前端
- 聊聊我所經歷的遊戲公司遊戲
- 我的Go語言學習經歷Go
- 分享我曾經的學習和找工作經歷
- 記一次我的 MySQL 調優經歷MySql
- 我在華為做外包的真實經歷!
- 我經歷的全球移動辦公 297 天。
- 記一次使用 SelectMany 的經歷
- 我所經歷的Android面試|掘金技術徵文Android面試
- 我的學習經歷——Linux系統入門教程Linux
- 我經歷過的監控系統演進史
- Windows10 子系統 WSL 位置遷移問題_wsl --import 未指定的錯誤WindowsImport
- 談談我在企業內部的創業經歷創業
- 雲起時:記我們正在經歷的教育之躍
- 我的Java轉型大資料的學習過程和經歷Java大資料
- wsl 下的 docker 開發實踐(上)Docker
- vscode 配合wsl做linux下的開發VSCodeLinux
- WSL 回收未使用的磁碟空間
- 【轉】整整30天終於走完,分享下我的崑山人才引進落戶經歷
- [譯] 我經常使用的 Rust 小 CrateRust
- DevOps經歷的 Log4j痛苦經歷 - Redditdev
- 三年 React 開發經驗的我,遷移到 Vue 的心路歷程ReactVue
- 分享我成為GDE(Google開發者專家)的經歷Go
- 聊一聊我在 B 站自學 Java 的經歷吧Java
- 從月入3000的打工仔到年薪20W,寫寫我的經歷
- 記一次在 Laradock 中使用 beanstalkd 的經歷Bean
- RustTalk 001. 與 Folyd 聊他的 Rust 使用經歷Rust
- The connection to the server localhost:8080 was refused在WSL/WSL2環境下使用DockerDesktop的kubectl無法連線叢集(缺少config的解決ServerlocalhostDocker
- 我在職場第一次薪資翻倍的經歷!
- 我的自定義多互動live2d折騰經歷
- 聊聊我學linux的歷程Linux
- 記一次在Windows10桌面環境搭建Jekins的吐血經歷Windows
- 兩次面試的經歷面試
- 部署Linux系統的經歷Linux
- 整理一下虛擬化與Linux的學習經歷Linux
- PearProject 在 WSL 下的開發環境部署教程Project開發環境
- 利用Visual Studio除錯WSL下的C++工程除錯C++
- 記一次在Grafana中使用Worldmap Panel的經歷Grafana