前言
Windows上安装openEuler虚拟机,现在大多采用的是 vmware workstation/virtual box 方案,可以完整地体验openEuler系统以及使用图形界面。
这个方案的缺点是启动慢、资源消耗大、性能损耗大,若只需使用命令行进行openEuler程序开发,有些大材小用;最难受的一点,Windows难以与openEuler虚拟机进行交互,在虚拟机里开发基本只能用Linux原生工具,难以借助Windows host主机上的工具远程连接进行开发。
本文提供一种使用Windows WSL2 (Windows subsystem for Linux)创建openEuler虚拟机的方法,创建好之后,可以享受openEuler秒级启动、资源动态共享、硬件性能损耗小,以及VSCode连接方便、开发效率高的好处。
环境准备
-
windows 10/11 + WSL2已使能,已安装Ubuntu虚拟机(可从Windows应用商店安装)
-
windows已安装 Docker Desktop for Windows
制作可用于 WSL 直接运行的 openEuler 发行版 tar 文件
获取自定义 Linux 发行版的 tar 文件
可通过两种方式获取 tar 文件:
1)下载提供的 tar 文件。 可在 Alpine Linux 下载 站点的“微型根文件系统”部分找到 Alpine 的示例。openEuler未提供。
2)查找 Linux 发行版容器,将实例导出为 tar 文件。以下将使用 openeuler/openeuler - Docker Image 演示此过程。
openEuler 容器发行文档:openeuler-docker-images: Dockerfiles for openEuler official basic and application images. (gitee.com)
获取 openEuler 的 tar 文件示例
在本示例中,使用 WSL 发行版中的 Docker 来获取 openEuler 的 tar 文件。
-
打开已安装的 Linux 发行版(本例中是 Ubuntu)
-
启动 Docker 服务:
sudo service docker start
注:不要在Ubuntu中自行安装docker,应该安装Docker Desktop for windows,ubuntu中实际运行的docker来自Windows
-
在 Docker 中下载并运行 openEuler 容器:
docker pull openEuler/openEuler:22.03-lts docker run -it openEuler/openEuler:22.03-lts /bin/bash
-
使用 grep 和 awk 获取 openEuler 容器 ID:
dockerContainerID=$(docker container ls -a | grep -i openEuler | awk '{print $1}')
-
将容器 ID 对应的容器导出到装载的 C 盘上,生成tar文件:
docker export $dockerContainerID > /mnt/c/temp/openEuler.tar
此过程导出的 openEuler tar 文件,之后用于导入 WSL 使用。
将 tar 文件导入 WSL
准备好 tar 文件后,可使用以下命令导入它:
wsl --import <Distro> <InstallLocation> <FileName>
。
导入 openEuler 示例
将 openEuler 发行版 tar 文件导入 WSL:
-
打开 PowerShell,并创建一个要存储 openEuler 发行版的文件夹,如 E:\wslDistroStorage\openEuler。
cd C:\temp mkdir E:\wslDistroStorage\openEuler
-
使用命令
wsl --import <DistroName> <InstallLocation> <InstallTarFile>
导入 tar 文件。wsl --import openEuler E:\wslDistroStorage\openEuler .\openEuler.tar
-
使用命令
wsl -l -v
检查已安装的发行版。此时应能显示出,并为 STOPPED 状态。 -
最后,使用命令
wsl -d openEuler
运行新导入的 openEuler Linux 发行版。
具体wsl虚拟机管理命令,参考微软官方教程。
使用VSCode连接openEuler WSL虚拟机
安装 remote development 拓展包:
安装好之后,点击左下角连接WSL虚拟机:
选择这一项,因为openEuler可能不是默认的WSL虚拟机:
等待一段时间之后,WSL设置完毕,就可以开始愉快的开发了~
添加特定于 WSL 的组件,例如默认用户
默认情况下,使用 --import 时,你总是作为 root 用户启动。
若要使用刚导入的 openEuler 发行版设置用户帐户,首先打开 PowerShell 并使用以下命令引导到 openEuler:
-
进入 openEuler WSL
wsl -d openEuler
-
将 sudo 和密码设置工具安装到 openEuler 中,创建用户帐户,并将其设置为默认用户。 在此示例中,用户名为“bingo”。
yum update -y && yum install passwd sudo -y myUsername=bingo adduser -G wheel $myUsername echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf passwd $myUsername
-
退出该实例,再次启动发行版:
wsl --terminate openEuler wsl -d openEuler
现在,你将看到
[bingo@bingo-dev]$
作为基于此示例的输出。若要详细了解如何配置 WSL 设置,请参阅使用 .wslconfig 和 wsl.conf 配置设置。
创建 openEuler 发行版 UWP 应用
UWP 应用打包文档:WSL-DistroLauncher/README.md at master · microsoft/WSL-DistroLauncher (github.com)
创建自定义 Linux 发行版后,其行为将与 Microsoft Store 中提供的 WSL 发行版完全一样。通过旁加载安装。