[嵌入式AI从0开始到入土]嵌入式AI系列教程
注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。
第一章 昇腾Altas 200 DK上手
第二章 下载昇腾案例并运行
第三章 官方模型适配工具使用
第四章 炼丹炉的搭建(基于Ubuntu23.04 Desktop)
第五章 炼丹炉的搭建(基于wsl2_Ubuntu22.04)
第六章 Ubuntu远程桌面配置
第七章 下载yolo源码及样例运行验证
第八章 在线Gpu环境训练(基于启智ai协作平台)
第九章 转化为昇腾支持的om离线模型
第十章 jupyter lab的使用
第十一章 yolov5在昇腾上推理
第十二章 yolov5在昇腾上应用
未完待续...
文章目录
- [嵌入式AI从0开始到入土]嵌入式AI系列教程
- 前言
- 一、启用wsl
- 二、安装系统
- 三、更改wsl版本
- 四、安装pip(可选)
- 问题
-
- 1、修改安装位置(适用于安装后未启动过wsl的情况)
- 2、wsl文件迁移
- 3、wsl虚拟磁盘大
- [4、System has not been booted with systemd as init system (PID 1). Can't operate.](#4、System has not been booted with systemd as init system (PID 1). Can't operate.)
- 5、wsl与win互连
- 总结
前言
注:本人环境win11 22H2家庭中文版,win10默认wsl,需要手动升级到wsl2
没有物理机的情况下,为避免虚拟机额外的性能开销,我们可以使用wsl2直接调用Gpu(Vmware好像也可以做显卡直通)。
微软官方文档点击这里跳转,本文仅挑选必要内容做分析。
关于conda和cuda环境的搭建,直接按照上一期的内容就可以了。
一、启用wsl
搜索Windows功能
,勾选适用于Linux的Windows子系统
,重启电脑等待更新完成。
二、安装系统
以下方法二选一即可,推荐使用Microsoft Store。
注:默认安装位置在C盘,如需更改请在安装完成后不要启动,按照问题区方法操作
1、使用微软商店
在Microsoft Store中搜索ubuntu,这里以ubuntu22.04为例。
注:按理说应该先安装下图第一个搜索结果,但实测会自动安装
点击上图所示的结果,点击获取,然后等待安装即可,大约不到500Mb。
2、使用命令行下载
搜索powershell,使用管理员权限打开。
输入以下指令安装,懒人直接第一条就行。
bash
wsl --install #默认安装 WSL 和 Linux 的默认 Ubuntu 发行版
wsl --list --online #获取发行版名称的有效列表
wsl --install <Distribution Name> #安装指定Linux发行版
选项包括:
--distribution
:指定要安装的Linux发行版。可以通过运行wsl --list --online
来查找可用的发行版。--no-launch
:安装Linux发行版,但不自动启动它。--web-download
:通过联机渠道安装,而不是使用Microsoft Store安装。
未安装 WSL 时,选项包括:
--inbox
:使用Windows组件(而不是Microsoft Store)安装WSL。(WSL 更新将通过Windows更新接收,而不是通过Microsoft Store中推送的可用更新来接收)。--enable-wsl1
:在安装Microsoft Store版本的 WSL 的过程中也启用"适用于 Linux 的 Windows 子系统"可选组件,从而启用 WSL 1。--no-distribution
:安装WSL时不安装发行版。
注意:如果在 Windows 10 或更低版本上运行 WSL,可能需要在 --install 命令中包含 -d 标志以指定发行版:wsl --install -d <distribution name>
。
三、更改wsl版本
注:WSL2仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。
我们因为需要调用显卡,所以需要切换到wsl2,win11一般默认就是wsl2。关于wsl和wsl的区别,请点击这里。
打开终端,执行以下命令
bash
wsl -l -v #查看wsl当前发行版本名称和运行状态
wsl --set-version <distribution name> <versionNumber>
- distribution name:上一步查询到的Name
- versionNumber:需要修改为的版本,1或者2
四、安装pip(可选)
本人从微软商店下载的ubuntu22.04缺少pip,通过正常方式均无法安装。
以下为解决方案
bash
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py #比较慢,下不动用迅雷
python get-pip.py #此处慢慢等,报错就重试
pip --version #验证安装
问题
1、修改安装位置(适用于安装后未启动过wsl的情况)
1、修改权限
进入C:\Program Files
目录,修改windowsapp文件夹权限
更改所有者
输入everyone,点击检查名称,确认即可。
2、移动wsl文件
在Windowsapp文件夹内找到CanonicalGroupLimited.Ubuntu22.04LTS
开头的一个文件夹,可能会有三个,我这里因为已经移动了,所以就找不到了,没法截图。
我们进去复制这两个文件,ubuntu2204.exe以及同文件夹下一个0.5G左右的文件(就是最大的那个)。把这俩个文件放到你想要的文件夹,然后双击ubuntu2204.exe,等待启动即可。
注:wsl启动过后移动ext4.vhdx文件会导致报错
2、wsl文件迁移
在wsl正常使用过程中,需要迁移的话,请按照如下方法操作
在终端中执行
bash
wsl --shutdown #关机
wsl -l -v #记下name,并且确认状态是stopped
wsl --export name D:\Ubuntu.tar #name替换为上一步查询的name
wsl --unregister name #name同上
wsl --import name D:\wsl D:\Ubuntu.tar --version 2 #name同上
ubuntu.exe config --default-user user_name #user_name替换为你的wsl内的用户名
3、wsl虚拟磁盘大
这是因为ext4.vhdx磁盘空间会根据加载的数据自动增长,但是无法自动回收。下面是手动回收的步骤。
在终端依次执行以下命令
bash
wsl --shutdown #关闭正在运行的wsl系统
diskpart #跳出授权,选择是
select vdisk file="D:\wsl\ext4.vhdx" #将路径改为你的实际路径
attach vdisk readonly
compact vdisk
detach vdisk
exit
4、System has not been booted with systemd as init system (PID 1). Can't operate.
这个报错是因为wsl没有启动system导致的。
使用ps -p 1
命令,如果cmd列为init请按照以下步骤操作启用systemd:
- 确保 WSL 版本为 0.67.6 或更高版本。(若要检查,请运行
wsl --version
。若要更新,请运行wsl --update
或从 Microsoft Store 下载最新版本。) - 进入wsl,
nano /etc/wsl.conf
。 - 在 wsl.conf 文件中添加以下行
Bash
[boot]
systemd=true
- 退出 Nano 文本编辑器(Ctrl + X,选择 Y 来保存更改)。然后,需要关闭 Linux 发行版。可以使用 PowerShell 中的
wsl.exe --shutdown
命令关闭所有 WSL 实例。 - Linux 发行版重启后,systemd 将会运行。 可使用
systemctl list-unit-files --type=service
或者ps -p 1
命令进行确认,这将显示与 Linux 发行版关联的任何服务的状态。
5、wsl与win互连
1、文件
win的目录在/mnt
文件夹下,直接cd过去就行。
win访问wsl文件直接在资源管理器就可以。
2、ssh
mobaxterm和vscode不需要,可以直接连接wsl。
- mobaxterm
- vscode
如果有其他需求,还是和物理机一样的操作,只是静态ip比较麻烦
bash
sudo apt install openssh-server #安装ssh服务端
sudo service sshd start #开启ssh服务
ifconfig #查看ip
wsl ip是eth0:下第二行inet后的地址。按理说应该是动态ip,不少教程内也都是每次启动就会变ip,但是我这里一个月都没变。于是,摆烂。
3、软件
wsl内安装的有图形界面的软件可以直接在开始菜单找到,直接打开使用即可。
总结
WSL 所需的资源少于完整虚拟机所需的资源(微软说的),但是依赖缺的真的很严重,gcc正在折磨我[大哭]。