想在Windows下完成Xilinx基于Linux的整套開發編譯鏈?覺得虛擬機還是有各種不便?使用WSL2的時候遇到了各種問題?歡迎聯系科通,科通Xilinx技術Team幫您踩坑。為什么現在是開始利用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下嵌入式系統編譯鏈的需求,又滿足了圖像化開發的需求,真是兩全其美!軟件與硬件的準備工作
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 升級到最新版本,實測沒有問題。
到底用哪個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其他發行版,歡迎各位有興趣有余力可以去嘗試下。讓我們開始安裝
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吧!安裝后運行,按指示設置用戶名和密碼就可以了。
讓我們準備足夠的空間
微軟對WSL2設定的初始虛擬硬盤空間是256G,雖然安裝后可以在/mnt下直接訪問Windows其他文件夾,但是EDA工具基本都要求工程在/home 下運行,所以我們要給虛擬硬盤進行擴容。首先我們進入我們剛剛裝完的WSL, 用df查一下容量:


可以看到C系統盤確實沒有更大空間了,想要更大空間,我們需要做兩個步驟:1.?修改安裝目錄,把虛擬機移動到另一個盤符下(這里是D盤);修改安裝目錄的方法如下(例子是一個18.04版本的,20.04把下面指令中的 ‘18.04’ 換成‘20.04’即可):
1. 第一步,首先查看所有分發版本:

2. 第二步,導出分發版為tar文件到D盤:
wsl--export Ubuntu-18.04 d:\ubuntu18.04.tar

3. 第三步,注銷當前分發版:
wsl--unregister Ubuntu-18.044.?重新導入并安裝分發版在d:\ubuntu (注意我們這里都是WSL2啦);5.?wsl--import Ubuntu-18.04 d:\ubuntu2004 d:\ubuntu18.04.tar6.?設置默認登錄用戶為安裝時用戶名 (這里的Username替換成您之前的用戶名);Ubuntu1804config --default-user Username再強調下哈,上面例子是一個18.04版本的,20.04把下面指令中的 ‘18.04’ 換成‘20.04’即可??, 以后的新版本Ubuntu同理。

好了,我們搬完家啦!在搬家目錄下應該就可以看到ext4.vhdx了,之前玩過虛擬機的小伙伴應該對這個文件格式很熟悉,下面我們要對這個vhdx擴容啦。

我們強烈推薦小伙伴們在安裝前修改硬盤尺寸,畢竟到了Vitis/Vivado安裝界面被提示安裝空間不夠回頭再來擴容還挺麻煩的。對于修改虛擬硬盤尺寸,微軟已經給出了解決方案,參見:https://docs.microsoft.com/en-us/windows/wsl/vhd-sizeB.?如果沒有移動過安裝位置,可以按上面微軟文檔尋找ext4.vhdx文件的問題,不過我們是非常清楚的,比如我們當前就是”d:\ubuntu1804\ext4.vhdx ”;C.?然后管理員模式打開Windows下命令行工具,用DISKPART工具擴大分區:隨后在DISKPART 下,“Select vdisk file="”;比如當前就是 “Select vdisk file=”d:\ubuntu1804\ext4.vhdx ”;選擇后,可以先用detail vdisk確認當前尺寸:

然后用 “expand vdisk maximum=<以MB為單位的目標尺寸> ”來設定大小;比如我們設一個接近1.2T的,那就輸入1200000 :expand vdisk maximum=1200000D.?這時候重新進入WSL, 雖然虛擬硬盤已經修改為1.2T了,但是Linux的分區其實還沒修改,我們還要在Linux下擴容下分區:sudo mount -t devtmpfs none /dev(此時你可能會看到如下警告:“mount command:"/dev: none already mounted on /dev." This message can safely beignored. ”這個警告可以不管)。記錄下/dev/sdX 的名字(X可能為不同字母,本例為/dev/sdb )。sudo resize2fs /dev/sdb <以MB為單位的目標>Msudo resize2fs /dev/sdb 1200000M

和Windows 交換文件
WSL最方便的地方之一當然就是和Windows交換各種文件啦,這是以共享文件夾形式存在的,直接在運行中輸入”\\wsl$ ” 即可。如下圖所示:

安裝桌面環境
終于到了重點啦,我們全面的一通操作,就是為了使用WSL2的圖像界面嘛。Ubuntu 常用可選的圖像環境有Gnome, KDE, Xfce4等等,這里推薦Gnome 或者 Xfce4。Windows下終端工具我們推薦流行的MobaXterm:sudoapt-get install ubuntu-gnome-desktop然后我們可以使用Gnome的文件管理器,Nautilus

sudoapt-get install xfce4

安裝Xilinx工具
后續的Vitis / Vivado / Petalinux 的安裝和Windows下都比較類似了:



關于Petalinux ,當然要在安裝前先安裝各支持庫:

sudoapt-get install xterm autoconf libtool texinfo zlib1g* gcc-multilibbuild-essential ncurses* zlibcsudodpkg --add-architecture i386sudoapt-get install zlib1g:i386最后,按老習慣,安裝后編譯一個官方板卡的BSP慶祝一下吧??!


如果您在WSL運行Vitis/Vivado/Petalinux方面有問題,歡迎聯系:
simonyang@comtech.com.cn
charlesxu@comtech.com.cn
