我的Windows10下的WSL的使用經歷

大雄45發表於2023-10-26

微軟每年都會舉辦 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( 管理員 )   以管理員身份執行。

我的Windows10下的WSL的使用經歷

然後輸入如下命令:

[ Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform ]

看到如下就表示虛擬平臺正在啟動。

我的Windows10下的WSL的使用經歷 我的Windows10下的WSL的使用經歷

虛擬平臺開啟後,接著在命令列中輸入以下命令開始 Linux 子系統:

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

我的Windows10下的WSL的使用經歷

重啟動計算機

方法 2 :當然你也有第二種啟動的方法,不用敲命令這麼麻煩

開機進入 - 控制皮膚 - 程式 - 找到 啟動或關閉 Windows 功能

我的Windows10下的WSL的使用經歷

請在勾選框中勾選 - 適用於 Linux Windows 子系統

我的Windows10下的WSL的使用經歷

這個時候系統也會要求你重啟動計算機。

  安裝一個 Linux 系統

功能開啟以後,這個時候你可以選擇的有兩種方法:

1.  透過 開啟電腦上微軟應用商店,在搜尋框中輸入 Linux ,然後在出來結果中你可以看到很多發行版的 Linux 。當前透過這種方法只有一個 Ubuntu 的下載。

我的Windows10下的WSL的使用經歷

獲取該版本,然後安裝就可以了。

這個方法看上去簡單,我一般不推薦也不願意折騰。這是因為很多版本的 W indows10 無法或者不願意透過微軟應用商店下來更新。

1.  直接手動下載一個安裝包 ,這個方法是我認為最簡單的。我在網上找到了如下幾個下載連線供大家使用:

下載完成以後,直接執行 Cent OS7.exe 安裝就可以了。

我的Windows10下的WSL的使用經歷

我的Windows10下的WSL的使用經歷

我的Windows10下的WSL的使用經歷

安裝的過程請看上圖,按照畫面提示操作即可。

開啟開始 - 選擇 Windows PowerShell 執行看一下,這就是我們 L inux 子系統了。

我的Windows10下的WSL的使用經歷

  啟動 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

我的Windows10下的WSL的使用經歷

# 允許 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

啟動的過程會彈出防火牆的提示,這個時候點選允許

我的Windows10下的WSL的使用經歷 我的Windows10下的WSL的使用經歷

這樣一切順利的話,你可以透過 W indows 開啟執行 命令列模式 cmd

輸入 netstat -ano|findstr "12308", 檢視埠,發現已經啟動。

我的Windows10下的WSL的使用經歷

接下來就是 就可以配合 vscode ,透過遠端連線到 Windows 下的 Centos 進行編譯。

有個報錯需要注意下

如果啟動出現報錯 error: Could not load host key: /etc/ssh/ssh_host_ed25519_key

我的Windows10下的WSL的使用經歷

透過網路很快搜尋到解決方法:(

這是因為新版的 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章