【WSL2】win11创建秒级启动openEuler虚拟机

前言

Windows上安装openEuler虚拟机,现在大多采用的是 vmware workstation/virtual box 方案,可以完整地体验openEuler系统以及使用图形界面。

这个方案的缺点是启动慢、资源消耗大、性能损耗大,若只需使用命令行进行openEuler程序开发,有些大材小用;最难受的一点,Windows难以与openEuler虚拟机进行交互,在虚拟机里开发基本只能用Linux原生工具,难以借助Windows host主机上的工具远程连接进行开发。

本文提供一种使用Windows WSL2 (Windows subsystem for Linux)创建openEuler虚拟机的方法,创建好之后,可以享受openEuler秒级启动、资源动态共享、硬件性能损耗小,以及VSCode连接方便、开发效率高的好处。

环境准备

  1. windows 10/11 + WSL2已使能,已安装Ubuntu虚拟机(可从Windows应用商店安装)

    安装 WSL | Microsoft Learn

  2. windows已安装 Docker Desktop for Windows

    Install Docker Desktop on Windows | Docker Documentation

    WSL 上的 Docker 容器入门 | Microsoft Learn

制作可用于 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 文件。

  1. 打开已安装的 Linux 发行版(本例中是 Ubuntu)

  2. 启动 Docker 服务:

    sudo service docker start
    

    注:不要在Ubuntu中自行安装docker,应该安装Docker Desktop for windows,ubuntu中实际运行的docker来自Windows

  3. 在 Docker 中下载并运行 openEuler 容器:

    docker pull openEuler/openEuler:22.03-lts
    docker run -it openEuler/openEuler:22.03-lts /bin/bash
    

    在这里插入图片描述
    在这里插入图片描述

  4. 使用 grep 和 awk 获取 openEuler 容器 ID:

    dockerContainerID=$(docker container ls -a | grep -i openEuler | awk '{print $1}')
    
  5. 将容器 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:

  1. 打开 PowerShell,并创建一个要存储 openEuler 发行版的文件夹,如 E:\wslDistroStorage\openEuler。

    cd C:\temp
    mkdir E:\wslDistroStorage\openEuler
    
  2. 使用命令 wsl --import <DistroName> <InstallLocation> <InstallTarFile> 导入 tar 文件。

    wsl --import openEuler E:\wslDistroStorage\openEuler .\openEuler.tar
    
  3. 使用命令 wsl -l -v 检查已安装的发行版。此时应能显示出,并为 STOPPED 状态。

  4. 最后,使用命令 wsl -d openEuler 运行新导入的 openEuler Linux 发行版。

在这里插入图片描述
具体wsl虚拟机管理命令,参考微软官方教程。

使用VSCode连接openEuler WSL虚拟机

安装 remote development 拓展包:
在这里插入图片描述
安装好之后,点击左下角连接WSL虚拟机:

在这里插入图片描述

选择这一项,因为openEuler可能不是默认的WSL虚拟机:

在这里插入图片描述

在这里插入图片描述

等待一段时间之后,WSL设置完毕,就可以开始愉快的开发了~

在这里插入图片描述

添加特定于 WSL 的组件,例如默认用户

默认情况下,使用 --import 时,你总是作为 root 用户启动。

若要使用刚导入的 openEuler 发行版设置用户帐户,首先打开 PowerShell 并使用以下命令引导到 openEuler:

  1. 进入 openEuler WSL

    wsl -d openEuler
    
  2. 将 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
    
  3. 退出该实例,再次启动发行版:

    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 发行版完全一样。通过旁加载安装。

参阅:创建适用于 WSL 的自定义 Linux 发行版

参考文档

导入要与 WSL 一起使用的任何 Linux 发行版 | Microsoft Learn

设置 WSL 开发环境 | Microsoft Learn

### 关于 openEuler-24.03 支持的 WSL 版本 openEuler 是一款基于 Linux 的开源操作系统,其默认支持情况取决于具体架构以及安装环境的要求。对于 riscv64 架构下的 openEuler-24.03,在 WSL 环境中的运行依赖于底层虚拟化技术的支持。 WSL1 和 WSL2 的主要区别在于系统调用的方式和性能表现上。WSL1 使用的是模拟的 Linux 文件系统层来兼容 Linux 应用程序,而 WSL2 则通过轻量虚拟机提供完整的 Linux 内核支持[^1]。由于 riscv64 并未被微软官方列为 WSL1 所支持的体系结构之一,因此在尝试运行此版本时通常需要借助 WSL2 提供的更强大的硬件抽象能力。 为了能够在 Windows 子系统中成功部署并启动 QEMU 来模拟 riscv64 环境下的 OpenEuler 发行版,则需先完成对 Hyper-V 及容器功能的启用操作,并确保已切换至 WSL2 模式以获得必要的计算资源访问权限[^2]。 综上所述,当考虑将 openEuler-24.03(特别是针对 riscv64 场景优化过的镜像)应用于开发测试用途时,默认推荐采用 WSL2 而不是 WSL1。 ```json { "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "features": { "buildkit": true }, "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ] } ``` 上述 JSON 配置片段展示了如何调整 Docker 守护进程设置以便更好地适配本地存储管理需求的同时也反映了现代云原生工作流下工具链集成的趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值