WSL 開(kāi)發(fā)環(huán)境搭建
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
1 簡(jiǎn)介WSL( Windows Subsystem for Linux 核心功能 ?原生兼容?:直接運(yùn)行Linux命令行工具(如Bash),無(wú)需修改或額外安裝X服務(wù)器。 ? ?1.1 ?WSL1與WSL2?WSL1與WSL2的核心區(qū)別如下?: ?內(nèi)核與系統(tǒng)調(diào)用支持? ?WSL1?:基于動(dòng)態(tài)翻譯層,將Linux系統(tǒng)調(diào)用轉(zhuǎn)換為Windows NT調(diào)用,沒(méi)有真正的Linux內(nèi)核。因此不支持需要完整系統(tǒng)調(diào)用兼容性的應(yīng)用(如Docker),且部分系統(tǒng)功能(如systemd)不可用。? ?性能表現(xiàn)? ?文件系統(tǒng)集成?:WSL2在跨操作系統(tǒng)文件操作時(shí)性能顯著提升,而WSL1可能存在延遲和性能瓶頸(例如讀寫NTFS文件系統(tǒng)的額外開(kāi)銷)。? ?資源占用?:兩者啟動(dòng)時(shí)間和資源占用相近(WSL2因虛擬化技術(shù)可能略高),但WSL2在處理大規(guī)模文件操作時(shí)更優(yōu)。? ?適用場(chǎng)景? ?WSL1?:適合僅需輕量級(jí)命令行工具或無(wú)需完整Linux內(nèi)核功能的場(chǎng)景(如腳本開(kāi)發(fā))。? ?注意事項(xiàng)?:WSL2僅支持Windows 10版本1903版本18362或更高版本中可用(通過(guò)選擇 Windows 徽標(biāo)鍵 + R 來(lái)檢查 Windows 版本,鍵入 winver,選擇“確定”),WSL1支持范圍更廣但功能受限。?對(duì)于低于 14393 的版本,WSL 根本不支持。下表列出了兩種版本的主要特性對(duì)比。 在Windows 10上如果默認(rèn)版本是WSL1,可以手動(dòng)下載更新包對(duì)其升級(jí),如下圖所示: 升級(jí)完成后可通過(guò)“wsl --set-default-version 2”命令,將wsl2設(shè)置為默認(rèn)版本,更詳細(xì)內(nèi)容請(qǐng)查閱Windows學(xué)習(xí)文檔。 1.2 常見(jiàn)命令wsl --help:顯示幫助信息。 wsl --list:列出當(dāng)前安裝的虛擬機(jī),如果在命令后面增加--verbose選項(xiàng),還可以顯示安裝虛擬機(jī)wsl版本信息。 wsl --list --online:列出可用的Linux分發(fā)版。 wsl --install:安裝WSL和Linux的默認(rèn)Ubuntu分發(fā)版,還可以使用此命令通過(guò)運(yùn)行wsl --install <Distribution Name>來(lái)安裝其他 Linux 分發(fā)版(如果在 Windows 10 或更早版本上運(yùn)行 WSL,則可能需要將-d標(biāo)志包含在命令中--install以指定分發(fā)版: wsl --install -d <distribution name>)。 wsl --set-version:后面跟參數(shù)<Distribution Name> <Version Number>,表示設(shè)置相應(yīng)Linux 發(fā)行版安裝的WSL版本。 wsl --set-default:后面跟參數(shù)<Distribution Name>來(lái)設(shè)置默認(rèn)版本。 wsl --update:更新wsl。 wsl --status:檢查wsl狀態(tài)。 wsl --export:后面跟參數(shù)<Distribution Name> <FileName>將指定分發(fā)的快照導(dǎo)出為新的分發(fā)文件, 默認(rèn)為tar格式。 wsl --import:后面跟參數(shù)<Distribution Name> <InstallLocation> <FileName>將指定的tar文件導(dǎo)入為新的分發(fā)版。 wsl --unregister:后面跟參數(shù)<DistributionName>注銷或卸載Linux分發(fā)版。 wsl --mount:后面跟參數(shù)<DiskPath>裝載磁盤或設(shè)備。 wsl --unmount:后面跟參數(shù)<DiskPath>卸載磁盤。 wsl hostname -I:返回通過(guò) WSL 2 安裝的 Linux 分發(fā)版的 IP 地址(WSL 2 VM 地址)。 ip route show | grep -i default | awk '{ print $3}':返回從WSL 2(WSL 2 VM)中看到的Windows計(jì)算機(jī)的IP地址(該命令在虛擬機(jī)中運(yùn)行)。 2 安裝Linux發(fā)行版本2.1 啟用Hyper-V及相關(guān)項(xiàng)打開(kāi)【控制面板】→【程序】→【啟用或關(guān)閉 Windows 功能】。 勾選Hyper-V、虛擬機(jī)平臺(tái)、適用于 Linux 的 Windows 子系統(tǒng)。 點(diǎn)擊確定后,重啟計(jì)算機(jī)。 Hyper-V 預(yù)安裝在 Windows 11專業(yè)版、企業(yè)版和教育版中,只需啟用即可。但是,在其他版本(如 Windows 11 家庭版)中,缺少啟用 Hyper-V 的選項(xiàng),下面介紹一種方法可以在 Windows 11 家庭版上安裝和啟用 Hyper-V。 復(fù)制以下代碼存為hyper-v.bat: pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i" del hyper-v.txt Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL 右鍵該文件以管理員運(yùn)行該程序,并且按照提示輸入Y,重啟電腦,這個(gè)時(shí)候,就會(huì)發(fā)現(xiàn)有了Hyper-V。 2.2 安裝Linux發(fā)行版2.2.1 命令行安裝運(yùn)行“wsl --install”即可安裝默認(rèn)版本,如下圖所示: 沒(méi)用使用最新的版本,又使用“wsl --install Ubuntu-22.04”命令安裝早期版本Ubuntu22。 2.2.2 離線安裝1 前往https://aka.ms/wslubuntu2204,下載Ubuntu2204-221101.AppxBundle,將下載的文件保存到本地路徑,如C:\wsl。 2 以管理員權(quán)限打開(kāi)PowerShell,cd到C:\wsl目錄,直接運(yùn)行“Add-AppxPackage .\Ubuntu2204-221101.AppxBundle”進(jìn)行安裝。 2.2.3 安裝路徑Ubuntu 默認(rèn)安裝的位置是:C:\Users\<你的用戶名>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonXXX_<隨機(jī)字符串>\ LocalState\ext4.vhdx是Ubuntu根文件系統(tǒng)的虛擬磁盤。 2.2.4 更改安裝位置默認(rèn)的wsl --install命令不會(huì)讓你選擇目錄,需要使用導(dǎo)出+導(dǎo)入的方法來(lái)自定義安裝路徑。 首先,使用如下命令導(dǎo)出安裝實(shí)例鏡像 wsl --export Ubuntu D:\WSL\ubuntu_backup.tar 其次,注銷原來(lái)的 Ubuntu(可選,如果你想完全搬家并刪除原始安裝,會(huì)永久刪除原來(lái)的實(shí)例,包括你安裝的軟件、數(shù)據(jù)等,導(dǎo)出后請(qǐng)確保備份)。 wsl --unregister Ubuntu 之后,導(dǎo)入到新目錄(你指定的位置) wsl --import Ubuntu_Custom D:\WSL\UbuntuCustom D:\WSL\ubuntu_backup.tar --version 2 最后,你可以用如下方式運(yùn)行你的自定義實(shí)例: wsl -d Ubuntu_Custom 也可以設(shè)置默認(rèn) WSL: wsl --set-default Ubuntu_Custom 3 使用windows上的cudawindows上版本cuda驅(qū)動(dòng)要安裝好,在當(dāng)前筆記本中顯卡為NVIDIA GeForce RTX 4060 Laptop GPU,其他詳細(xì)信息如下所示: 需在在wsl下Ubuntu中安裝相版本的cuda-tookit,安裝步驟如下: wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb sudo dpkg -i cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb sudo cp /var/cuda-repo-wsl-ubuntu-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda-toolkit-12-8 需要說(shuō)明的是由于Nvidia可能會(huì)調(diào)整具體包的子版本號(hào),導(dǎo)致以上部分鏈接可能失效,這時(shí)要在https://developer.nvidia.com/cuda-toolkit-archive頁(yè)面自行選擇適合自己的版本: 再打開(kāi)相應(yīng)的鏈接,并一步步根據(jù)自己的實(shí)際情況,產(chǎn)生相應(yīng)的安裝腳本: 根據(jù)腳本內(nèi)容,在wsl Ubuntu下完成安裝,之后再在~/.bashrc最后添加加環(huán)境變量配置: export CUDA_HOME="/usr/local/cuda-12.8" export PATH="/usr/local/cuda-12.8/bin:$PATH" 通過(guò)source命令使環(huán)境變量生效,然后即可查看nvcc版本信息。 進(jìn)行完這一步后,網(wǎng)上有些文章說(shuō)就可以直接nvidia-smi查看windows下的顯卡信息了,其實(shí)根本不行,最起碼nvidia-smi這個(gè)文件根本找不到。強(qiáng)大的chatgpt給出原因: 并且它還給出解決方案,執(zhí)行以下命令(在 Ubuntu 中): 步驟 1:添加 NVIDIA WSL 包源 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) # 會(huì)得到 ubuntu22.04 curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit.gpg curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb #deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit.gpg] #' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list > /dev/null 步驟 2:更新并安裝驅(qū)動(dòng)組件 sudo apt update sudo apt install -y nvidia-driver-535 nvidia-utils-535 libnvidia-container-tools libnvidia-container1 上面版本號(hào)(如 535)要與你 Windows 中的驅(qū)動(dòng)版本一致或兼容(你當(dāng)前是 572,可以試安裝 以上步驟執(zhí)行完以后,才可以在wsl Ubuntu下正常使用nvidia-smi命令,顯示信息和windows下一致:
參考: https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands ?轉(zhuǎn)自https://www.cnblogs.com/zhaoweiwei/p/18986211/wsl 該文章在 2025/10/13 10:43:36 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |