windows安装linux子系统


windows安装linux

如果使用 wsl --install -d Ubuntu 安装 Ubuntu WSL 分发版失败,您可以尝试以下方法来解决问题:

  1. 检查系统要求:确保您的系统满足运行WSL的要求。WSL要求运行的Windows版本为Windows 10或更高版本,并且需要启用虚拟化功能。您可以在BIOS或UEFI设置中启用虚拟化。

  2. 更新Windows:确保您的Windows操作系统已经更新到最新版本。有时,安装WSL之前需要安装操作系统更新。

  3. 启用WSL功能:在 PowerShell 终端或命令提示符(CMD)中以管理员身份运行以下命令来启用WSL功能:

    powershellCopy code
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  4. 启用虚拟机平台功能:运行以下命令以启用虚拟机平台功能:

    powershellCopy code
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  5. 安装WSL 2运行时:根据您的Windows版本,可能需要手动安装WSL 2运行时。您可以在Microsoft的官方文档中找到适用于您版本的安装指南。

  6. 重启计算机:完成上述步骤后,重新启动您的计算机,以确保所有更改生效。

  7. 尝试安装Ubuntu:最后,再次运行 wsl --install -d Ubuntu 来尝试安装Ubuntu WSL 分发版。

  8. 使用wsl --status, wsl -l查看linux版本

  9. 使用wsl --shutdown来虚拟关机

安装完后报错:WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 https://aka.ms/wsl2kernel
请参考:解决无法打开Microsoft store和WslRegisterDistribution failed with error: 0x800701bc问题_山顶夕景的博客-CSDN博客

更新wsl后安装成功
windows安装linux-2

在pycharm中使用linux终端

windows安装linux-1
点击扩展,选择Ubuntu

cd到preprocess.sh所在的文件夹下,输入对应的命令即可

Xshell 连接wsl

服务器本地配置

点击左下角的windows按钮, 在最近添加中点击刚安装的系统图标, 会有个初始化的过程, 之后输入用户名和密码, 就完成了.
通过sudo apt update && sudo apt upgrade -y更新系统
通过sudo apt-get update && sudo apt-get upgrade更新软件源
安装ssh服务sudo apt autoremove --purge openssh-server -y && sudo apt install openssh-server -y
编辑文件vim /etc/ssh/sshd_config, Windows和子系统共用端口, 修改端口

# 端口 
Port 2222 UsePrivilegeSeparation no 
# 密码验证 
PasswordAuthentication yes 
# 允许登陆的用户 
AllowUsers name

重启服务sudo service ssh --full-restart
生成key, ssh-keygen -t rsa一路回车.

连接

在xshell中使用Alt + N创建新的连接会话, 主机改为127.0.0.1, 端口改为自己设置的端口.
点击左侧的用户身份验证, 方法使用Password, 用户名和密码为Ubuntu用户名密码, 点击连接.

开机自启

方案一

Bash窗口不能关闭, 如果关闭了, 那么相当于系统关机.
可以使用windows自带的定时任务计划上添加开机启动Ubuntu ssh服务的任务。
搜索任务计划程序, 操作 –> 创建基本任务
配置:
触发器: 当计算机启动时
操作: 启动程序
程序或脚本: C:\Windows\System32\bash.exe
参数为: -c \“sudo /usr/sbin/sshd -D\”
选择当单击“完成”是, 打开此任务属性的对话框按钮,点击完成,打开属性页
在属性页选择”使用最高权限运行”,避免错误。

方案二

  • 详情请见:Win11将WSL做SSH服务器
    为linux添加ssh自启动
    sudo apt install systemd #安装systemd
    sudo systemctl enable ssh #使用systemd实现ssh自启动
    使用sudo service ssh status查看ssh运行状态

修改配置文件

sudo vi /etc/ssh/sshd_config

将下面三项设置成:

  • Port 222
  • PermitRootLogin Yes
  • PasswordAuthentication Yes
    sudo vim /etc/hosts.allow
    添加一行:sshd:ALL
    然后重启ssh服务:
    sudo service ssh --full-restart
    windows powershell命令:
    Restart-Service sshd

C:/users/Appdata/Roaming/Microsoft/Windows/开始菜单/程序/startup中,新建vbs文件,内容如下:

CreateObject("Wscript.Shell").run "wsl -d Ubuntu -u root -e /etc/init.d/ssh start",vbhide
wscript.sleep 1000 * 10
Set Shell=CreateObject("Shell.Application")
Shell.ShellExecute "cmd.exe","/c netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=wslhost connectport=22","C:\Windows\System32\","runas",0

这里只用第一行即可
其中第一行负责启动wsl同时开启ssh服务,vbhide可以使得启动的wsl在后台进行,不显示终端。

第二行需要进行一定的延时,其中10就是十秒,可以根据自己的机器情况进行修改,估计5秒就够了。延时是因为代码的运行很快,接下来就会运行cmd进行端口映射,但是当已经运行完netsh的时候wsl可能还没有启动,导致端口映射依然是上次关机时候的wsl的ip,所以需要延时几秒钟再执行。

第三、四行就是执行nesth的命令,将connectaddress后的ip地址用域名wslhost替换,‘runas’参数以管理员身份运行cmd,后面的参数0表示隐藏窗口后台执行。

但是,众所周知,每次以管理员身份执行cmd的时候,都会弹框让用户确定“是”,“否”。需要进一步隐藏。打开设置,在左上角搜索框搜索管理员,选择更改用户账户控制设置,然后拉到底

(可选)可额外添加docker自启动内容如下:

Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d Ubuntu -u root /etc/init.wsl"

其中‘Ubuntu’为WSL2子系统的名字

frp端口映射

frpc.ini中加入以下内容

[ssh2]
type = tcp
local_ip = 127.0.0.1
local_port = 222
remote_port = 2222

再在云端服务器添加相应端口安全规则即可,详见内网穿透

在wsl(子系统)中访问windows文件

只需要访问mnt文件即可
windows安装linux-3
如图所示,在mnt文件中我们能看到windows系统C盘与D盘

配置免密访问

使用ssh-keygen在linux端生成公私钥对
/root/.ssh下,新建authorized_keys文件,将pubkey复制进authorized_keys文件中,以回车相隔
在windows系统中,重启服务器

windows如何使用FEMNIST数据集

项目代码:FedLab-benchmarks/fedlab_benchmarks/leaf/README_zh_cn.md at master ·SMILELab-FL/FedLab-benchmarks (github.com)

下载到本地后,你会发现需要linux系统来运行

linux环境配置

安装解压工具与必备工具

sudo apt install zip
sudo apt install build-essential

安装nvidia tools

apt install nvidia-cuda-toolkit

此项安装已包含cuda(疑似,待验证doge)

安装python

  • 在跟李沐课程配置linux上的深度学习环境时,遇到python安装报错问题
    E: Package 'python3.8' has no installation candidate
    sudo apt install python-3.8 
    E: Unable to locate package python-3.8
  • 这里发现之前的源没有找到对应的python,这里添加新的,详见python3.8相关环境安装
    sudo apt-get install software-properties-common
    或运行以下代码升级,详见帖子
    sudo apt update
    sudo apt install software-properties-common 
    sudo add-apt-repository ppa:deadsnakes/ppa 
  • 再运行sudo apt-get install python3.8即可

安装conda

  • 使用以下命令,或是自行下载将安装包拷贝进linux服务器
    wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
    url可访问anaconda官网,找到安装包下载地址获得
    使用bash 文件名安装,如bash Anaconda3-2023.09-0-Linux-x86_64.sh
  • 安装后提示
    installation finished.
    Do you wish to update your shell profile to automatically initialize conda?
    This will activate conda on startup and change the command prompt when activated.
    If you'd prefer that conda's base environment not be activated on startup,
       run the following command when conda is activated:
    
    conda config --set auto_activate_base false #使用此命令控制base环境自启
    
    You can undo this by running `conda init --reverse $SHELL`? [yes|no]
  • 如无设置base环境自启动,可使用以下命令激活base环境
    source activate

安装cuda

访问cuda官网,按服务器系统配置选择安装环境,按提示步骤安装即可
本教程使用以下安装代码:

wget https://developer.download.nvidia.com/compute/cuda/12.3.1/local_installers/cuda_12.3.1_545.23.08_linux.run
sudo sh cuda_12.3.1_545.23.08_linux.run

如提示driver未安装,可换用以下命令:

sudo sh cuda_12.3.1_545.23.08_linux.run --silent --driver

使用nvcc -V查看nvidia信息
使用以下命令启用linux中的nvidia-smi命令

cp /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi
chmod ogu+x /usr/bin/nvidia-smi

deb文件安装方式请参考官方文档
更新你的环境变量,以确保系统可以找到正确的CUDA路径。这通常涉及到编辑~/.bashrc~/.bash_profile/etc/profile文件,并在其中添加或更新以下行:

bash

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

然后,你需要运行source ~/.bashrc(或你编辑的相应文件)来使更改生效。

安装cudnn

windows

CUDA需要配合cudnn才能正常工作,将cudnn的四个文件(夹),复制到CUDA的安装路径即可,即CUDA文件夹。
往系统环境变量中的 path 添加如下路径(根据自己的路径进行修改

C:\Program Files\NVIDIA\CUDA\bin
C:\Program Files\NVIDIA\CUDA\include
C:\Program Files\NVIDIA\CUDA\lib
C:\Program Files\NVIDIA\CUDA\libnvvp

检验:

配置完成后,我们可以验证是否配置成功,主要使用CUDA内置的deviceQuery.exe 和 bandwidthTest.exe
首先win+R启动cmd,cd到安装目录下的 …\extras\demo_suite,然后分别执行.\bandwidthTest.exe.\deviceQuery.exe,应该得到下图.

cd C:\Program Files\NVIDIA\CUDA\extras\demo_suite 
.\bandwidthTest.exe 
.\deviceQuery.exe

linux

官方教程Github参考
安装linus解压工具

sudo apt-get install zlib1g

打开下载链接,选择相应的版本并下载。选择方法可参考链接,,建议直接选择cuDNN Library for Linux (x86_64)
进入cudnn压缩包所在的文件夹,解压文件

tar -xvf [$文件名]

将文件拷贝到相应cuda目录下

sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

查看cudnn版本

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

出现如下的信息,则为配置成功

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 4
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#endif /* CUDNN_VERSION_H */

或使用deb文件本地安装:

sudo apt install ./<filename.deb>
sudo cp /var/cudnn-<something>.gpg /usr/share/keyrings/

My cuDNN version is 8, adapt the following to your version:

sudo apt update
sudo apt install libcudnn8
sudo apt install libcudnn8-dev
sudo apt install libcudnn8-samples

配置conda虚拟环境

  • 在安装完成anaconda后,使用bash进入anaconda命令行
  • 使用conda create --name 名字 python=3.8新建一个虚拟环境
  • 使用conda env list查看虚拟环境列表
  • 使用conda activate 名字进入一个虚拟环境
  • 安装相应包,使用镜像加速
    pip install jupyter d2l torch torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 其他包就和在本地命令行安装一样,但安装包过大的话,建议采用离线安装。可以用移动硬盘到现教407线下拷贝
    PS:pytorch安装与离线安装请见深度学习:本地环境部署中的安装Pytorch-本地安装

文章作者: Austin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Austin !
  目录