1 Star 0 Fork 10

bolin-lee / wsl

forked from openEuler / wsl 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

[toc]

运行openEuler in WSL

配置Windows环境

你需要在Windows上,启用WSL。

这是微软的配置文档,你也可以按照以下步骤来做:

使用管理员身份打开PoweShell或者cmd,有以下两种方式:

  1. 按下Win+Q,搜索PoweShell,点击“以管理员身份运行”。

  2. 按下Win+R,输入PoweShell或cmd,然后按下Ctrl+Shift+Enter,这样能使用管理员权限启动。

然后复制粘贴下列命令,按回车运行:

  1. 开启WSL服务。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  1. 开启虚拟机特性。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 下载64位的Linux内核升级包,双击点击运行,需要管理员权限。
  2. 将WSL2设为默认启动版本。
wsl --set-default-version 2

在Microsoft Store上安装openEuler

  1. 点击这个直达链接,单击get,等待安装。

  2. 或者打开Microsoft Sore,手动搜索openEuler,如下所示:

默认情况下,您的任务栏应当有下列图标:

image-20210715193437648

如果没有,可以按下Win+Q,输入store,搜索Microsoft store

image-20210715192912605

安装好后,在商城中点击Launch,或在开始菜单中点击openEuler,会进行首次安装。

首次运行需要进行安装,需要稍等一两分钟,如下图所示:

image-20210715200255290

安装好后,界面如下:

image-20210715200311972

启动openEuler

安装好后,有以下几种启动方法:

  1. 开始菜单中点击图标启动。
  2. 命令行启动。
  3. VScode中启动。

开始菜单中点击图标启动

image-20210716111332327

如图所示,将左侧openEuler小图标拖到右侧变成较大的磁贴,点击磁贴或小图标都能运行。

命令行启动

Windows下有三种命令行,PoweShell,cmd,Windows terminal。

推荐使用Windows terminal,其使用更符合linux习惯,而且界面更美观。

前2个命令行打开方式如上所述,下面演示Windows terminal安装打开方式。

  1. 打开Microsoft Store,搜索Windows terminal,安装 2. 在开始菜单或Win+Q搜索windows terminal打开Windows terminal 2. 或按下Ctrl+R,输入windows terminal或者其缩写wt,按下回车即可启动

启动上述三种任意命令行后,即可在命令行中输入WSL命令,来启动openEuler。

输入下列命令查看帮助:

wsl -h

输入以下命令显示当前安装的WSL发行版:

wsl -l

image-20210715194505903

可以看到我这里安装了openEuler、fedoraremix、Ubuntu,且openEuler是默认启动的发行版。

输入下列命令,可以启动默认的发行版。

wsl 

如果你在安装openEuler前安装了其他WSL发行版,那么可以运行下列命令将openEuler设为默认启动的发行版。

wsl -s openEuler

此外,使用-d命令,可以指定启动任意发行版。

wsl -d openEuler

image-20210715194745640

VScode启动

如果涉及代码编写,推荐使用VScode打开WSL。

VScode可以使用ssh的方式,连接到WSL。其需要在WSL中下载一个安装包,此安装包需要使用tar解包,因此连接的发行版需要安装tar。

  1. 使用命令行打开openEuler,确保安装了tar。

    dnf install tar -y
  2. 在Windows下安装VScode,官网链接

  3. 打开vscode,安装WSL插件。

image-20210715195349061

  1. 在远程资源管理器中,在下拉菜单中,选择WSL targets

image-20210715195611221

  1. 在菜单中,选择openEuler,即可打开新的窗口启动openEuler

    image-20210715200737801

    1. 在VScode中,按下快捷键Ctrl+~,即可打开控制台

注意事项

WSL与VMware、VirtualBox不兼容问题

参见官方文档,WSL使用Hyper-V技术来提供虚拟化,而部分老版本的VMware、VirtualBox在Hyper-V技术开启后,无法正常运行。

这意味着你需要更新VMware、VirtualBox到新版本来解决这个问题。

VScode连接openEuler失败

如果你出现了下图所示,那么查看报错信息可以发现,你没有安装tar。

请使用命令行启动openEuler,然后运行下列命令来安装tar包。

dnf install tar -y

image-20210715201454093

WSL的缺陷

WSL有部分无法支持的原生Linux功能,比如不支持systemctl,正在支持GUI等。

详见FAQ's about Windows Subsystem for Linux | Microsoft Docs

开发过程

如果你只想运行openEuler,那么可以到此为止了,不用往下看了。

如果你对WSL以及移植过程感兴趣,你可以接着往下看。

浅谈WSL原理

WSL很多地方与docker很像,如:

  1. 启动WSL的速度与启动docker容器速度差不多。
  2. 导入导出方式,都是用export,import命令。
  3. WSL下的各个发行版,与docker下的容器,都共享宿主机的内核。

因此我简单的理解为,WSL就是一个,使用起来和docker很像的,轻量化的虚拟机。

除此以外,Windows也开发了很多独有技术来实现WSL,参见官方博客

手动导入openEuler

参考官方文档,你可以导入任何Linux发行版到WSL内。

  1. 你需要获得一个根文件系统,包含openEuler的所有二进制文件。
    1. 使用docker导出容器文件系统。
    2. 或者使用类似debootstrap的工具制作根文件系统。
  2. 使用WSL命令导入根文件系统。

使用docker导出容器文件系统

参考文档

  1. 下载openEuler LTS SP1的docker镜像,链接,这里将其存放在D:\Download目录下。

  2. 打开控制台,进入刚刚下载镜像的文件夹,启动Ubuntu,此时Ubuntu的工作目录应在D:\Download目录下。

cd D:\Download
wsl -d Ubuntu
  1. 安装Ubuntu下的docker。
curl -sSL https://get.daocloud.io/docker | sh
  1. 导入镜像,-i表示使用tar包来导入镜像。
docker load -i .\openEuler-docker.x86_64.tar.xz
  1. 查看现有images。
docker images

应该会有以下输出:

REPOSITORY                 TAG       IMAGE ID       CREATED         SIZE
openeuler-20.03-lts-sp1    latest    6934cec25f28   3 months ago    512MB
  1. 随便运行一个命令,加载容器。
docker run openeuler-20.03-lts-sp1 echo hello, openEuler WSL
  1. 导出docker容器的快照,即当前文件系统。

docker ps -ql表示获得最近运行的容器的编号,即刚才openEuler的容器编号。

docker export $(docker ps -ql) > ./openEuler.tar
exit

使用WSL命令导入根文件系统

退出Ubuntu,在控制台使用WSL命令,导入openEuler包,并指明openEuler的安装目录。

举例,设置D:\work\WSL\openEuler为WSL的安装目录。

wsl --import openEuler D:\work\WSL\openEuler .\openEuler.tar
  1. 即可启动openEuler。
wsl -d openEuler

使用debootstrap导出根文件系统

请注意,debootstrap适用于Debian系操作系统,如Debian、Ubuntu。

febootstrap适用于Fedora操作系统。

如果不使用debootstrap这类工具,可以使用脚本导出根文件系统,下面给出参考链接:

Fedora:fedora-wsl-builder.sh · master · Gerard Braad / fedora-wsl · GitLab

Kali Linux:build_chroot.sh · master · Kali Linux / Build-Scripts / kali-wsl-chroot · GitLab

构建安装包过程

构建安装包的大概过程

  1. 克隆,修改启动器基本信息。
  2. 安装WSL、WSL下的Ubuntu。
  3. 导出根文件系统。
  4. 构建包。

克隆,修改基本信息

克隆官方启动器仓库。

git clone https://github.com/Microsoft/WSL-DistroLauncher

安装Visual Studio,选择安装“通用Windows平台开发”、“使用C++的桌面开发”工具。

对于“通用Windows平台开发”,需要勾选Windows 10 SDK (10.0.16299.0),其余默认即可。

使用Visual Studio打开WSL-DistroLauncher工程下的DistroLauncher.sln。

双击打开MyDistro.appxmanifest,此时VS会自动探测xml格式,并出现很好看的修改界面如下。

image-20210412172319111

如果您没有在解决方案选项卡中打开MyDistro.appxmanifest,VS将会展现给您全文本的界面。请点击下面的切换按钮,进入解决方案视图,然后双击点击DistroLauncher.sln。

image-20210421150031934

点击Packaging选项卡,点击Choose Certificate...,点击Create...,这里输入Publish Name,如果只是为了测试,这里可以随意输入,如果发布,需要输入你在微软合作伙伴账户的CN码,后续发布流程中会讲到。

修改Application选项卡下的基本信息,修改Visual Asserts图片信息。

不同大小图片可以使用Asserts Generator,给定一个图片,可以生成不同大小的图片。

官网的logo太小,我找到了部门里的logo矢量图.ai文件,放大了些,并参考Ubuntu启动图标,裁剪了文字部分,只保留了logo,尽量让产生的logo在启动界面好看一些。

最后生成的所有图片可以在工程文件中找到。

安装WSL、Ubuntu

[参考配置环境这一节](# 配置Windows环境)

导出根文件系统

[参考手动导入一节](# 手动导入openEuler)

其中,最后一步改为:即修改了导出包的名称。

docker export $(docker ps -ql) > ./install.tar

退出WSL下的Ubuntu,压缩刚才的包,得到install.tar.gz。

exit
gzip.exe -k .\install.tar

-k表示保留包,不删除。

构建包

将install.tar.gz复制到项目的根目录下的x86目录。

使用Visual Studio打开WSL-DistroLauncher工程下的DistroLauncher.sln。

在右侧的Solution Explorer,可以看到以下界面。

Solution

右键点击"Solution (DistroLauncher)",在弹出菜单中点击Deploy Solution。

等待编译完成后,则构建完成,这时应该会在开始菜单安装好测试用的openEuler版本。

此外还可以在.\x64\Debug\DistroLauncher-Appx\AppX文件夹下看到openEuler.exe文件。

发布流程

账号申请

登录微软合作伙伴账户,注册一个账户

注意,如果选择注册公司账户,需要提供公司注册的官方PDF文件,且微软验证文件的过程将十分漫长。

注册好账户,付款后,登录账户,点击右上角齿轮,点击Account settings,在Windows publisher ID右侧,找到CN开头的码。

这个CN码是用于唯一标识你的账号的,后续打包时要用到。

关联APP

在Visual Studio中,将项目与创建的APP名称关联

image-20210715204742801

后续跟着提示,登录账号,选择应用名称即可。

创建签名

然后需要创建签名,如下图所示:

image-20210715204414385

  1. 打开DistroLauncher.sln,进入Packaging选项卡
  2. 点击Choose Certificate...
  3. 点击Create...
  4. 输入刚才获得的CN码
  5. OK保存,创建证书
  6. OK保存,选择刚刚创建好的证书

创建可发布的软件包

最后,创建可发布的软件包

image-20210715204802020

选择发布到Microsoft Store上,然后创建即可。

image-20210715205053877

编译创建完后,可选是否进行测试。

然后可以到项目目录下的找到上传文件,如:

WSL-DistroLauncher\AppPackages\DistroLauncher-Appx\DistroLauncher-Appx_1.0.0.0_x64_bundle.appxupload

申请发布到Microsoft Store

微软合作伙伴中心,创建应用,按照提示填写内容。

这里需要注意,不得勾选下列选项,原因为:Notes for uploading to the Store · microsoft/WSL-DistroLauncher Wiki · GitHub

img

然后就能发布了,等待批准后,就能发布了。

注意事项

如果你是从wsl: Port openEuler to WSL (Windows Subsystem for Linux) (gitee.com),git clone的仓库,那么文件夹名称请从wsl改为WSL-DistroLauncher,否则后续可能编译失败。

MIT License Copyright (c) Microsoft Corporation. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE

简介

Port openEuler to WSL (Windows Subsystem for Linux) 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/bolin-lee/wsl.git
git@gitee.com:bolin-lee/wsl.git
bolin-lee
wsl
wsl
master

搜索帮助