> 文档中心 > 基于windows子系统WSL2搭建openharmony开发环境(图文详解)

基于windows子系统WSL2搭建openharmony开发环境(图文详解)

       WSL(Windows Subsystem for Linux)是Microsoft弄出来的windows下的linux子系统,主要目的也就是为了给开发者提供便利,抢占macOs的市场。想必大家对它都不陌生了吧。

       在windows上使用传统的虚拟机体验可能会有启动速度慢、消耗资源大、需要你花费时间进行管理等问题,而WSL没有这些问题,能大大提高我们的开发效率。但很多开发者对WSL还报比较大的怀疑态度,害怕在开发过程中踩坑,不敢轻易尝试,还是在使用传统的虚拟机开发。       

        之前的WSL1或许存在这个问题,但是WSL2已经使用了完整的Linux 内核,实现机制也是VM,所以基本不用太过担心这个问题了。WSL 2 有 WSL 1 的优点,包括 Windows 和 Linux 之间的无缝集成,启动时间短,资源占用量少,并且无需 VM 配置或管理。

         说了这么多,下面我就用WSL2真实的搭建一下openharmony开发环境吧。(做鸿蒙开发的同学可以跟我一起用起来,一起交流使用心得,真的可以提高开发效率哦)

PC环境:windows企业版(使用专业版也OK)

以下操作PowerShell皆以管理员权限运行。 

1.安装WSL 

进入windows Store,搜索Ubuntu

右键windows左下角->应用和功能->相关设置-程序和功能->启用或关闭windows功能

勾选适用于Linux的windows子系统和虚拟机平台(WSL2需要)选项。

也可以直接在powershell中输入如下两条指令开启:

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

按要求重启使设置生效。

在开始菜单中找到刚刚安装的ubuntu20.04,打开后会自动进行安装:

安装完成后,会提示创建用户。

按照提示输入你的用户名和密码即可。(这里我们也可以直接关闭,不创建用户,以后打开WSL都会以root用户登录运行)

在powerShell中输入:

wsl -l --all -v

 看到如上信息,表示WSL1安装成功了。下面我们要将它升级成WSL2,执行如下指令。

wsl --set-version Ubuntu-20.04 2

 

提示需要更新内核组件,我们这里直接下载linux内核包进行安装:

 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

安装完成后,重启电脑,再次执行上面的命令,耐心等待即可。

查询版本确认升级成功:

使WSL 2成为你的默认体系结构:

wsl --set-default-version 2

至此WSL2安装完成,但是不要急着使用。WSL2还存在下面三个问题:

1.WSL2默认安装在C盘,可能导致磁盘空间不够。

解决办法:将WSL2移动到别的空间足够的磁盘。

如果Ubuntu正常使用,则需要先关闭Ubuntu:

wsl --shutdown

 然后导出Ubuntu: 

wsl --export Ubuntu-20.04 E:\wsl-ubuntu20.04.tar

导出完成后,在相应磁盘下即可看到压缩包: 

 注销当前分发版:

wsl --unregister Ubuntu-20.04

重新导入并安装WSL2到指定目录:

wsl --import Ubuntu-20.04 E:\wsl2-ubuntu20.04 E:\wsl-ubuntu20.04.tar --version 2

导出完成后,在相应磁盘路径下即可看到文件夹:

设置WSL2默认登录用户(xxx表示你的用户名):

ubuntu2004 config --default-user xxx

删除之前导出的压缩包(空间足够不删除,也OK) 

del E:\wsl-ubuntu20.04.tar

PS:平时我们对ubuntu20.04做比较激进的操作时,可以采用这个方法将WSL2备份,万一把系统玩崩溃了,还能还原回来。 

2.编译代码时WSL2内存占用率高,影响Windows使用。

解决办法:添加wsl2配置文件,限制最大使用内存。

在 C:\Users\%UserProfile% 目录下,创建.wsl2config隐藏文件(注意前面有个点),复制粘贴如下内容(8GB表示限制WSL2最多使用8G的内存,可以根据你电脑配置合理分配)。

[wsl2]memory=8GBswap=0localhostForwarding=true

3.与windows文件共享问题

解决办法:通过资源管理器直接访问

 wsl2访问windows:直接在ubuntu中访问/mnt/下磁盘挂载目录即可。

windows访问wsl2: 直接在资源管理器中输入\\wsl$ 即可:

 

 进入到常用目录下,将该目录固定到快速访问,以后直接从快速访问栏进入即可:

4.wsl删除的空间不回收的问题

由于WSL2使用虚拟硬盘(VHD)存储linux下的文件,随着Linux下文件越来越多,占用空间也会不断增长。但是,在Linux中减少文件占用,WSL却没有相应的自动减少硬盘空间的占用(据说使用VM虚拟机一样存在这个问题)。

已知一种方法,在删除掉linux下的文件后,可以手动释放这部分空间。

 下图所示,是我在删除文件前的磁盘大小,并且在我删除20多个G大小的文件后,还是未发生变化。

step1: 关闭wsl

wsl --shutdown

step2: 执行diskpart,会弹出一个cmd窗口。

在diskpart命令窗口下依次输入如下内容(vhdx文件需要换成你自己的路径):

select vdisk file="D:\WSL\Ubuntu2004\ext4.vhdx"attach vdisk readonlycompact vdiskdetach vdiskexit

如下所示: 

 退出后,再次查看虚拟文件大小,发现空间已经恢复回来了:

5.连接USB的问题

连接 USB 设备 | Microsoft Docs了解如何使用 usbipd-win 将 USB 设备连接到 WSL 2 Linux 发行版。https://docs.microsoft.com/zh-cn/windows/wsl/connect-usb

至此,WSL2配置安装完成,可以开始用于项目开发了。若对WSL2感兴趣,更详细的安装配置过程可参考微软官网:

​安装 WSL | Microsoft Docs

2.安装windows terminal

        工欲善其事,必先利其器,原生的Ubuntu窗口还是low了点,字体和字符编码支持得都不是很好,开发过程中容易遇到一些问题。

所以在此推荐使用命令行工具:windows terminal

它的下载方法跟下载Ubuntu方法一样,在windows应用商店搜索下载安装即可:

 下面介绍几种常用的配置方法:

1.配置启动项

(打开windows terminal默认是开启Powershell,可以修改为默认开机)

2.配置启动初始目录

未配置前,ubuntu默认会进入windows的user目录,二我们的代码通常放在home目录下,每次都需要切换比较麻烦。

在设置中设置启动目录即可:

3.更换背景图片

也可以在设置中选择图片,还能够支持gif动图。

通常设置背景图片,都会调节背景图片不透明度,让命令行文字看得更清楚:

 展示效果如图所示:

4.一些使用技巧 

1.ctrl+鼠标滚轮,可以快速放大缩小字体。

2.左键选中文字后,单击右键可以复制内容。

3.在空白处单击右键,可以粘贴内容。

4.在命令行输入code . 命令,可以直接唤起VScode打开当前文件夹。

此外,对颜值要求高的小伙伴还可以了解下:oh-my-zsh

据说可以弄得很炫酷,效果差不多如下图所示:

3.搭建openharmony开发环境。

1.更换Ubuntu软件源

ubuntu镜像-ubuntu下载地址-ubuntu安装教程-阿里巴巴开源镜像站

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

sudo vim /etc/apt/sources.list

 sudo apt-get update

2.安装依赖环境(如果不想安装环境可以直接跳到11节)

下面比对官方的文档删除了一些已经安装的包

微型和小型系统(L0): 

sudo apt-get install build-essential
sudo apt-get install zlib*
sudo apt-get install libffi-dev
sudo apt-get install pkg-config 
sudo apt-get install flex 
sudo apt-get install bison 
sudo apt-get install openssl 
sudo apt-get install libssl-dev
sudo apt-get install libc6-dev-amd64-*
sudo apt-get install binutils-dev
sudo apt-get install libdwarf-dev
sudo apt-get install u-boot-tools
sudo apt-get install mtd-utils
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install cpio

标准系统环境依赖(L2):  

sudo apt-get install git
sudo apt-get install git-lfs
sudo apt-get install gperf
sudo apt-get install curl 
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install lib32ncurses5-dev
sudo apt-get install x11proto-core-dev
sudo apt-get install libx11-dev
sudo apt-get install lib32z1-dev
sudo apt-get install ccache 
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libxml2-utils
sudo apt-get install xsltproc 
sudo apt-get install gnutls-bin 
sudo apt-get install ruby

#官方没有提到,但是WSL2必须要安装此项,否则执行./build.sh编译标准系统时无法编译通过
sudo apt-get install libncurses5

3.创建python软连接:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 

4.安装并升级Python包管理工具(pip3)

sudo apt-get install python3-setuptools python3-pip -y

sudo pip3 install --upgrade pip

pip换源(换成豆瓣源,可加快下载速度,但是可能会影响一些三方SDK Python包的安装(如espressif安装),下载速度不是特别慢可以不换):

mkdir ~/.pip && vim ~/.pip/pip.conf 

输入如下内容保存退出:

[global]index-url = http://pypi.douban.com/simple/trusted-host = pypi.douban.com

5.安装hb工具

python3 -m pip install --user ohos-build

添加环境变量:

vim ~/.bashrc
export PATH=~/.local/bin:$PATH
source ~/.bashrc

6. 安装码云repo工具

curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo

chmod a+x repo

sudo mv repo /usr/local/bin/

7.添加ssh-key至gitee

gitee添加SSH公钥_fangye945a的博客-CSDN博客_ssh生成

8.下载源码

从网上下载:

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

通过.repo压缩包同步:

mkdir openharmony && cd openharmony
tar axvf repo.tar.gz 
repo sync -l
repo forall -c 'git lfs pull'

9.针对具体开发板安装相应的开发环境

微型和小型系统编译:

hi3861环境搭建与代码编译:

hi3861是基于scons构建的, 需要安装scons

python3 -m pip install scons 

安装python依赖包:

sudo pip3 install setuptools
sudo pip3 install kconfiglib
sudo pip3 install pycryptodome
sudo pip3 install six
sudo pip3 install ecdsa

安装编译工具链: 

wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

sudo tar axvf gcc_riscv32-linux-7.3.0.tar.gz -C /opt/

echo 'export PATH=/opt/gcc_riscv32/bin:$PATH' >> ~/.bashrc

source ~/.bashrc

编译测试:

hb set 
hb build -f

编译结果:

hi3516与hi3518环境搭建与代码编译:

将Linux shell改为bash: 

sudo dpkg-reconfigure dash

安装文件打包工具及Java虚拟机环境:

sudo apt-get install dosfstools mtools mtd-utils default-jre default-jdk

 编译测试: 

选择hi3516工程:

选择hi3518工程:

 编译结果:

其他架构平台编译环境搭建: 

C-SKY架构:

wget https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource/1356021/1619529111421/csky-elfabiv2-tools-x86_64-minilibc-20210423.tar.gz

sudo mkdir /opt/csky

tar axvf csky-elfabiv2-tools-x86_64-minilibc-20210423.tar.gz -C /opt/csky/

添加环境变量:

vim ~/.bashrc
export PATH=/opt/csky/bin:$PATH
source ~/.bashrc

更多平台环境安装可以参考Openharmony/device_qemu仓库,文档中的使用说明:

device_qemu: Hardware platforms emulation by QEMU | QEMU模拟不同的硬件单板

标准系统编译测试:

按照官方文档,执行如下指令,进行编译:

bash build/prebuilts_download.sh
./build.sh --product-name Hi3516DV300 --ccache

编译时间比较久需要耐心等待,编译成功如下图所示: 

11. docker的安装和使用(环境搭建成功可忽略)

安装docker

如果觉得编译环境安装麻烦,我们可以直接安装docker:

建议直接下载windows docker安装,Docker Desktop for Mac and Windows | DockerLearn why Docker Desktop is the preferred choice for millions of developers building containerized applications. Download for Mac or Windows.https://www.docker.com/products/docker-desktop

安装时会提示:

直接ok,开始安装即可。 

安装完毕,点击close and log out,会自动注销电脑,重新登录后,点击Accept

然后在Settings->Resources->WSL INTEGRATION中进度设置,勾选Ubuntu-20.04,然后点击应用并重启。

 再打开Windows terminal, 执行docker -v,查看docker是否可用:

下载轻量系统docker:

docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4

下载标准系统docker:

docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5

由于docker命令比较长,为了方便使用,给docker命令取一个别名:

vim ~/.bashrc

添加如下内容,保存退出:

#docker
alias ohos_small_docker='docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4'

alias ohos_stand_docker='docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5'

使配置生效:

source ~/.bashrc

如下图所示,直接输入别名,即可快速进入对应的docker镜像进行代码编译(别名可以自行定义)

上述,基本能够满足我们日常的开发需求了,有什么问题欢迎留言探讨~