admin 管理员组文章数量: 887629
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/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=8GB
swap=0
localhostForwarding=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 readonly
compact vdisk
detach vdisk
exit
如下所示:
退出后,再次查看虚拟文件大小,发现空间已经恢复回来了:
5.连接USB的问题
连接 USB 设备 | Microsoft Docs了解如何使用 usbipd-win 将 USB 设备连接到 WSL 2 Linux 发行版。https://docs.microsoft/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/simple/
trusted-host = pypi.douban
5.安装hb工具
python3 -m pip install --user ohos-build
添加环境变量:
vim ~/.bashrc
export PATH=~/.local/bin:$PATH
source ~/.bashrc
6. 安装码云repo工具
curl -s https://gitee/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/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/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/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/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-south-1.myhuaweicloud/openharmony-docker/openharmony-docker:0.0.4
下载标准系统docker:
docker pull swr-south-1.myhuaweicloud/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-south-1.myhuaweicloud/openharmony-docker/openharmony-docker:0.0.4'alias ohos_stand_docker='docker run -it -v $(pwd):/home/openharmony swr-south-1.myhuaweicloud/openharmony-docker/openharmony-docker-standard:0.0.5'
使配置生效:
source ~/.bashrc
如下图所示,直接输入别名,即可快速进入对应的docker镜像进行代码编译(别名可以自行定义)
上述,基本能够满足我们日常的开发需求了,有什么问题欢迎留言探讨~
版权声明:本文标题:基于windows子系统WSL2搭建openharmony开发环境(图文详解) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726367180h945933.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论