作者: Jesse, Luke,文章来源: Ingdan FPGA微信公众号
想在Windows下完成Xilinx基于Linux的整套开发编译链?觉得虚拟机还是有各种不便?使用WSL2的时候遇到了各种问题?
欢迎联系科通,科通Xilinx技术Team帮您踩坑。
1. 为什么现在是开始利用WSL运行Xilinx设计链的好时机?
Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。
如果使用Windows 10 2004以上,可以通过WSL 2来窗口化运行桌面应用,也不需要另外安装其他的X 服务器。
由于Zynq/MPSoC应用的普及,尤其是Linux的软硬件结合应用越来越多, 对Linux的裁剪和编译也成为了嵌入式工程师的必修课,而Linux 编译链(尤其基于Yocto 和 GCC) ,基本都在在Linux下调试和运行。
尽管理论上可以用全脚本全文本的形式来进行Vivado全流程设计,但是不管是基于Block Design设计的灵活性,还是在Block中配置参数的方便性,基于图像GUI会非常方便。之前WSL 一代对GUI支持不是很好,在WSL2加强了对图形GUI的支持之后,既满足了Linux下嵌入式系统编译链的需求,又满足了图像化开发的需求,真是两全其美!
2. 软件与硬件的准备工作
硬件:
硬件主要是三大件 CPU、内存和硬盘啦。
CPU和内存丰俭由人,主要会影响WSL的速度,当然是越高配越好,实测7、,8代i7与16G及更多的内存跑起来还是很流畅的。
硬盘就很重要了,众所周知Vitis / Vivado 比较新的版本安装文件需要约60G, 解压安装文件需要约80G, 安装软件需要约80G,一个嵌入式工程(含临时Download / Sstate)约300~500G,再加上其他软件等,一个1T左右的硬盘是必须的。
如果你的系统所在盘没有1T是没有问题的!我们稍后会解决这个问题。
软件:
软件方面主要需要考虑Windows版本,WSL2 需要Windows 10 20H4以上版本或者Windows 11较新版本。我们推荐Windows 10 升级到最新版本,实测没有问题。
3. 到底用哪个Linux版本?
因为支持期已过,Canonical已经停止为Ubuntu 16.04 LTS的技术支持,Windows Store当前主要提供18.04 LTS / 20.04 LTS版本,这里我们推荐比较新的20.04 LTS:
我们来看比较新的2021.1 版本Vivado / Vitis Release note:
可以看到最新版本的18.04/20.04 LTS都已经支持。本文就是WSL2 / Ubuntu 20.04 LTS / Vitis 2021.1 版本为例。
当然, Windows商店中还提供了Linux其他发行版,欢迎各位有兴趣有余力可以去尝试下。
4. 让我们开始安装
1. 既然是虚拟机,首先要在BIOS中开启虚拟化相关选项(如Intel 的 VT-x,或者AMD的 AMD-V), 请参考您的主板和CPU说明书。
2. 使能“程序与功能”-“启用或关闭Windows功能”下两个功能:
“虚拟机平台” 与 “适用于Linux的Windows子系统” (其他语言版本大致类似)。
以上两步一定要先确保哦! 不然后续会有一些莫名其妙的bug。
这里要特别说明一句,因为本文是基于WSL2,如果之前您已经安装过WSL1,后续可能碰到下面类似报警:
造成该问题的原因是WSL版本由原来的WSL1升级到WSL2后,内核没有升级,前往微软WSL官网下载安装适用于 x64 计算机的最新 WSL2 Linux 内核更新包即可。
下载链接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
如果是直接安装不会有这个问题。
好,一切准备妥当,从Windows Store中安装Ubuntu 20.04 LTS吧!安装后运行,按指示设置用户名和密码就可以了。
5. 让我们准备足够的空间
微软对WSL2设定的初始虚拟硬盘空间是256G,虽然安装后可以在/mnt下直接访问Windows其他文件夹,但是EDA工具基本都要求工程在/home 下运行,所以我们要给虚拟硬盘进行扩容。
首先我们进入我们刚刚装完的WSL, 用df查一下容量:
可以看到只有256GB。
而以我们实验的机器为例:
可以看到C系统盘确实没有更大空间了,想要更大空间,我们需要做两个步骤:
1. 修改安装目录,把虚拟机移动到另一个盘符下(这里是D盘);
2. 在新盘符中虚拟硬盘扩容。
Windows10子系统(WSL)修改安装目录:
修改安装目录的方法如下(例子是一个18.04版本的,20.04把下面指令中的 ‘18.04’ 换成‘20.04’即可):
1. 第一步,首先查看所有分发版本:
wsl-l -v
结果类似下面:
2. 第二步,导出分发版为tar文件到D盘:
wsl--export Ubuntu-18.04 d:\ubuntu18.04.tar
结果类似下面:
3. 第三步,注销当前分发版:
wsl--unregister Ubuntu-18.04
4. 重新导入并安装分发版在d:\ubuntu (注意我们这里都是WSL2啦);
5. wsl--import Ubuntu-18.04 d:\ubuntu2004 d:\ubuntu18.04.tar
6. 设置默认登录用户为安装时用户名 (这里的Username替换成您之前的用户名);
Ubuntu1804config --default-user Username
7. 删除tar文件(可选):
deld:\ubuntu18.04.tar
再强调下哈,上面例子是一个18.04版本的,20.04把下面指令中的 ‘18.04’ 换成‘20.04’即可, 以后的新版本Ubuntu同理。
好了,我们搬完家啦!在搬家目录下应该就可以看到ext4.vhdx了,之前玩过虚拟机的小伙伴应该对这个文件格式很熟悉,下面我们要对这个vhdx扩容啦。
我们强烈推荐小伙伴们在安装前修改硬盘尺寸,毕竟到了Vitis/Vivado安装界面被提示安装空间不够回头再来扩容还挺麻烦的。
对于修改虚拟硬盘尺寸,微软已经给出了解决方案,参见:
https://docs.microsoft.com/en-us/windows/wsl/vhd-size
A. 首先是关闭当前WSL:
wsl --shutdown
B. 如果没有移动过安装位置,可以按上面微软文档寻找ext4.vhdx文件的问题,不过我们是非常清楚的,比如我们当前就是”d:\ubuntu1804\ext4.vhdx ”;
C. 然后管理员模式打开Windows下命令行工具,用DISKPART工具扩大分区:
首先输入diskpart , 回车;
随后在DISKPART 下,“Select vdisk file="
比如当前就是 “Select vdisk file=”d:\ubuntu1804\ext4.vhdx ”;
选择后,可以先用detail vdisk确认当前尺寸:
然后用 “expand vdisk maximum=<以MB为单位的目标尺寸> ”来设定大小;
比如我们设一个接近1.2T的,那就输入1200000 :
expand vdisk maximum=1200000
随后输入exit退出diskpart。
D. 这时候重新进入WSL, 虽然虚拟硬盘已经修改为1.2T了,但是Linux的分区其实还没修改,我们还要在Linux下扩容下分区:
首先来确认一下分区名称,输入以下两句指令:
sudo mount -t devtmpfs none /dev
mount | grep ext4
(此时你可能会看到如下警告:“mount command:"/dev: none already mounted on /dev." This message can safely beignored. ”这个警告可以不管)。
记录下/dev/sdX 的名字(X可能为不同字母,本例为/dev/sdb )。
随后用resize2fs在逻辑上扩容:
sudo resize2fs /dev/sdb <以MB为单位的目标>M
比如本例是:
sudo resize2fs /dev/sdb 1200000M
结果如下,可以看到修改成功。
6. 和Windows 交换文件
WSL最方便的地方之一当然就是和Windows交换各种文件啦,这是以共享文件夹形式存在的,直接在运行中输入”\\wsl$ ” 即可。如下图所示:
7. 安装桌面环境
终于到了重点啦,我们全面的一通操作,就是为了使用WSL2的图像界面嘛。
Ubuntu 常用可选的图像环境有Gnome, KDE, Xfce4等等,这里推荐Gnome 或者 Xfce4。Windows下终端工具我们推荐流行的MobaXterm:
如果是Gnome:
在Ubuntu登录后,运行:
sudoapt-get install ubuntu-gnome-desktop
然后我们可以使用Gnome的文件管理器,Nautilus
运行:
nautilus&
效果如下图, 后面的操作各位就很熟悉啦:
如果是Xfce4:
在Ubuntu登录后,运行:
sudoapt-get install xfce4
运行:
startxfce4&
效果如下图:
8. 安装Xilinx工具
后续的Vitis / Vivado / Petalinux 的安装和Windows下都比较类似了:
关于Petalinux ,当然要在安装前先安装各支持库:
sudoapt-get install gcc
然后在安装过程中按照提示查缺补漏即可:
sudoapt-get install xterm autoconf libtool texinfo zlib1g* gcc-multilibbuild-essential ncurses* zlibc
唯一说明的是zlib1g需要加i386库:
sudodpkg --add-architecture i386
sudoapt-get update
sudoapt-get install zlib1g:i386
最后,按老习惯,安装后编译一个官方板卡的BSP庆祝一下吧!
如果您在WSL运行Vitis/Vivado/Petalinux方面有问题,欢迎联系:
simonyang@comtech.com.cn
charlesxu@comtech.com.cn