wsl2折腾

折腾WSL2有个前提, 你不会用linux来开发和硬件设备强相关的产品,如果你要开发嵌入式产品,老老实实用纯linux。
我折腾WSL2就是为了进行 “AI/网络” 开发。

安装WSL2

在 Windows 上通过命令行安装 Ubuntu 作为 WSL(Windows Subsystem for Linux)发行版,可以按照以下步骤操作:

1. 启用 WSL, 安装特定的 Ubuntu 版本

首先需要确保 WSL 功能已启用。如果没有启用,可以在 PowerShell 中使用管理员权限运行以下命令:

比如 Ubuntu 22.04,可以通过以下命令来指定安装:

wsl --install -d Ubuntu-22.04

你也可以选择其他版本,比如 Ubuntu-20.04Ubuntu-18.04
如果wsl 出0x80072f7d 错误, 请打开TLS1.2 , win+r 输入inetcpl.cpl -> 高级 -> 开启TLS1.2 ,建议关掉SSL3,TLS1.0, TLS1.1,国内网银经常会关掉TLS1.2

如果wsl 出0x80370102 错误,要启用虚拟功能, 确保bios打开 Intel® Virtualization Technology选为Enabled、Intel® VT-d Feature选为Enabled .
在 powerShell 中以管理员身份运行下面命令以确保开启适用于 Linux 的 Windows 子系统和虚拟机平台配置项。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

运行完成之后,需要重启电脑完成安装。

还是不行的话,

确保 hypervisor launch 在 boot configuration 里面是enable的 . 在powershell 用以下命令确认:

 bcdedit /enum | findstr -i hypervisorlaunchtype

如果看到 hypervisorlaunchtype Off, 那么 hypervisor 是 disabled. 通过以下命令enable:

 bcdedit /set hypervisorlaunchtype Auto

运行完成之后,需要重启电脑完成安装。

2. 检查已安装的 Linux 发行版

安装完成后,可以使用以下命令来查看已安装的 Linux 发行版:

wsl -l -v

3. 设置默认 WSL 版本

通常安装的都是wsl2,如果不是,可以使用以下命令将默认版本设置为 WSL 2:

wsl --set-default-version 2

4. 启动 Ubuntu

安装完成后,你可以通过 Windows 的开始菜单搜索 “Ubuntu” 来启动它,也可以在命令行中直接运行以下命令:

wsl

或指定 Ubuntu 发行版启动:

wsl -d Ubuntu-22.04

这样你就可以使用命令行在 WSL 中安装并运行 Ubuntu 了。如果你之前没有启用 WSL,整个安装过程可能需要一些时间。

更改 WSL 发行版的安装位置

在 WSL 中安装 Linux 发行版时,默认情况下,它们会安装在 Windows 的系统驱动器(通常是 C:\ 盘)中。虽然 WSL 本身不提供在安装时直接选择安装路径的选项,但你可以通过以下方式间接控制安装路径:

1. 手动更改 WSL 发行版的安装位置

虽然 WSL 默认安装在 C:\ 盘的特定目录下,但你可以通过以下步骤手动更改发行版的安装位置:

步骤 1:导出当前的 WSL 发行版

首先,你可以导出当前安装的 WSL 发行版(例如,Ubuntu)为一个 .tar 文件。

打开 PowerShell 或命令提示符并输入以下命令:

wsl --export Ubuntu-22.04 D:\WSL_Backup\ubuntu.tar

这会将 Ubuntu-22.04 导出为一个 ubuntu.tar 文件,保存在 D:\WSL_Backup\ 目录中。你可以选择任何你希望保存的路径。

步骤 2:注销当前的 WSL 发行版

导出完成后,注销现有的 Ubuntu 发行版:

wsl --unregister Ubuntu-22.04

这将删除当前的发行版,但不会影响你的 .tar 备份文件。

步骤 3:在新位置导入 WSL 发行版

接下来,你可以在新的路径下导入发行版。假设你想将 Ubuntu 安装在 D:\WSL\Ubuntu-22.04 目录下,可以运行以下命令:

wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\WSL_Backup\ubuntu.tar

这里:

  • Ubuntu-22.04 是发行版的名称。
  • D:\WSL\Ubuntu-22.04 是你希望安装发行版的路径。
  • D:\WSL_Backup\ubuntu.tar 是你导出的 .tar 文件的位置。

导入后,WSL 发行版将安装在你指定的新路径中。
导入之后,缺省用户变成root, 如果要让缺省用户是当前用户,执行以下命令:

ubuntu2204.exe config --default-user 你的用户名

ubuntu2204.exe 这个可执行文件和你的安装版本Ubuntu-22.04相关

步骤 4:启动导入的发行版

导入完成后,你可以像往常一样启动 WSL 发行版:

wsl -d Ubuntu-22.04

wsl2使用windows clasx工具

一、前置

这里使用的是 clasx工具 for windows,注意需要打开允许局域网
在这里插入图片描述

二、具体实施

wsl 终端输入:

cat /etc/resolv.conf

可以查看 hostip:

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.24.32.1

此后输入以下命令,设置环境变量

export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"
export all_proxy="socks5://${hostip}:7890"
#hostip为刚才查询的ip,后面的端口号默认为 7890

三、写成脚本

# 获取本地主机的 IP 地址
host_ip=$(grep "nameserver" /etc/resolv.conf | cut -f 2 -d " ")

# 设置代理
alias setproxy="export all_proxy=http://$host_ip:7890; export http_proxy=http://$host_ip:7890; export https_proxy=http://$host_ip:7890"

# 取消代理
alias unsetproxy="unset all_proxy; unset http_proxy; unset https_proxy"

使用 setproxy 打开,unsetproxy 关闭

将脚本添加到 .bashrc

如果你希望每次启动 shell 都能使用这些别名,可以将脚本添加到 ~/.bashrc中。

.bashrc 中添加:
  1. 打开配置文件

    vim ~/.bashrc
    
  2. 将上述脚本粘贴到文件的末尾。

  3. 保存文件并退出编辑器。

  4. 重新加载配置文件:

    source ~/.bashrc
    

四、添加window防火墙规则

我在这个window防火墙卡了好久,打开powershell,输入以下命令:

netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=7890

五、检测成果

测试的方法有很多,比如:

wget abc.com

安装docker

下载docker desktop, 安装即可.

需要调整 Docker Desktop 在 Windows 上的存储目录,不然C盘很容易塞满:

在 Windows 上调整 Docker Desktop 的存储目录

默认情况下,Docker Desktop 在 Windows 上将其数据存储在C盘。

步骤 1:停止 Docker Desktop

在更改存储路径之前,首先需要停止 Docker Desktop。

  1. 打开 Docker Desktop。
  2. 在 Docker Desktop 中点击右上角的 齿轮图标 ,进入设置页面。
  3. Troubleshoot 选项卡中,点击 Stop 按钮来停止 Docker Desktop。
步骤 2:移动 Docker 数据目录

接下来,你需要将 Docker 的数据文件从默认位置移动到新的位置。

  1. 找到 Docker 的数据文件目录,通常位于: C:\Users\<username>\AppData\Local\Docker
  2. 将该文件夹的所有文件和目录移动到你想要的新存储位置。例如,将它移动到 D:\DockerData
  3. 删除原始的Docker 的数据文件目录,C:\Users\<username>\AppData\Local\Docker
步骤 3:创建符号链接

在 Windows 上,你可以使用符号链接来欺骗 Docker,使其认为数据仍然在默认位置。通过符号链接将新的存储路径连接到旧的路径。

  1. 打开 命令提示符 ,并以管理员身份运行。

  2. 使用 mklink 命令创建符号链接:

    mklink /J "C:\Users\<your-username>\AppData\Local\Docker" "D:\DockerData"
    

    这里,/J 参数用于创建目录符号链接。C:\Users\<your-username>\AppData\Local\Docker 是 Docker 默认的数据存储路径,而 D:\DockerData 是你想要的新路径。

步骤 4:重新启动 Docker Desktop

符号链接创建成功后,重新启动 Docker Desktop,它将会使用新的存储位置。

安装python环境

安装pyenv + poetry + pipenv的组合 , pyenv管理python各个版本 ; poetry管理虚拟环境,适用于poetry ; pipenv也是管理虚拟环境,适用于pip .

1. 安装pyenv

安装依赖项

在安装 pyenv 前,确保安装了必要的依赖项:

sudo apt update; sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
安装 pyenv

使用以下命令来下载并安装 pyenv

curl https://pyenv.run | bash
配置环境变量

.bashrc 文件中添加以下内容:

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

然后重新加载 shell:

source ~/.bashrc
验证安装

运行以下命令来验证是否成功安装:

pyenv --version

这样,pyenv 就安装好了,你可以开始管理 Python 版本了。

先用pyenv安装一个python版本:

pyenv install 3.10

然后,全局设置一个python:

pyenv global 3.10

2. 安装poetry

curl -sSL https://install.python-poetry.org | python3 -

.bashrc新增:

export PATH=$PATH:$HOME/.local/bin

存档后验证:

source ~/.bashrc
poetry --version
修改config,可以建立项目目录里面的.venv 虚拟环境

先使用poetry config指令來查看 Poetry 目前的设定:

❯ poetry config --list
cache-dir = "/root/.cache/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /root/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

virtualenvs.in-project = null就是我们要修改的配置,使用指令:

poetry config virtualenvs.in-project true
实际使用:

比如用 pyenv install 3.10 安装一个python 3.10

进入一个项目目录, pyenv local 3.10

然后就可以在项目目录 poetry env use 3.10

之后 poetry init 建立虚拟环境 ,或者如果项目目录中已经有pyproject.toml的情况下,用 poetry install 安装虚拟环境。

虚拟环境安装成功后, 用 poetry shell 来激活虚拟环境

poetry shell

3. 安裝 virtualenv

pip install virtualenv
建立 virtualenv 环境
  1. 移动到项目文件目录里面
  2. 输入 virtualenv venv
  3. 完成后,即可看到项目文件目录多了 venv 的文件夹
启动 venv 环境
source venv/bin/activate

查看一下目前使用的版本

python --version

查看一下目前安裝的套件

pip list
关闭venv 环境
deactivate
实际使用:

比如用 pyenv install 3.10 安装一个python 3.10

进入一个项目目录, pyenv local 3.10

然后就可以在项目目录 virtualenv venv 建立虚拟环境 。

虚拟环境安装成功后, 用 source venv/bin/activate 来激活虚拟环境

然后你就可以快乐的pip, 安装的库都会在venv目录里面,可以du -h venv 看一下占用空间大小。

安装N卡cuda和cudnn:

安装CUDA:

由于是window系统,驱动系统已经装好了,看一下nvidia-smi的CUDA版本:

在这里插入图片描述

去 https://developer.nvidia.com/cuda-toolkit-archive 下载对应的版本

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

根据安装好的提示,在 .bashrc 路径下添加环境变量。cuda的版本目录请根据实际版本来调整

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

测试安装:先source ~/.bashrc

nvcc -V

安装cudnn:

去 https://developer.nvidia.cn/cudnn-downloads 下载对应的cudnn,我下载9.4.0

wget https://developer.download.nvidia.com/compute/cudnn/9.4.0/local_installers/cudnn-local-repo-ubuntu2204-9.4.0_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2204-9.4.0_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-9.4.0/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn

测试安装是否成功:

sudo apt-get install libfreeimage3 libfreeimage-dev
cp -r /usr/src/cudnn_samples_v9/ $HOME
cd  $HOME/cudnn_samples_v9/mnistCUDNN
make clean && make
./mnistCUDNN

通过会显示Test passed!

安装ollama server

选择ollama安装在wsl2里面,方便linux应用开发。

curl -fsSL https://ollama.com/install.sh | sh

远程调用ollama服务

我们想要在别的机器远程调用带GPU的ollama服务器的模型能力。

打开ollama的端口

Ollama默认的网络配置为仅在本地网络环境中运行,这意味着只有安装Ollama的主机能够访问该服务。如果希望从外部网络访问Ollama服务,需要进行相应的网络配置调整。

修改ollama配置使其可以监听0.0.0.0和修改端口,可以实现非本地访问

使用命令:sudo vim /etc/systemd/system/ollama.service,添加:Environment=“OLLAMA_HOST=0.0.0.0:11434”,然后保存更改

然后 sudo systemctl daemon-reload

然后 sudo systemctl restart ollama

在wsl2里面查询一下本地ip

打开windows浏览器输入:ip地址:11434

出现ollama is running,表示配置成功,局域网可以调用ollama服务

公网调用ollama服务

需要1个前置条件: 公网ip

有了公网ip,就可以用代理来实现跳转。client端就可以用 公网ip:公网端口 来访问ollama服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值