Vitis/VivadoをWSL2にインストールする

# はじめに

Vitis/VivadoのWindows版を使用していたのですが、Linuxの環境で統一したくなったので、WSL2に入れ直しました。

公式にはサポートされてませんが、[インストールしている方](https://qiita.com/basaro_k/items/04eea702c83a927f920c)はいらっしゃるようなので、簡単にできるのではと思ったんですが、私の試したーバージョンでは、Vitisが表示されないという事情もあったので、記事にしておきます。

# バージョン

Windows 11　23H2
Vitis/Vivado 2024.2
WSLのOS　Ubuntu 24.04

# 手順

Linux版のインストール方法に従ってインストールします。

https://docs.amd.com/r/en-US/ug1742-vitis-release-notes/Installing-Required-Ubuntu-Packages

ドキュメントに従って必要なパッケージのインストールをする
```
sudo add-apt-repository ppa:xorg-edgers/ppa 
sudo apt-get update
sudo apt-get install libgl1-mesa-glx
sudo apt-get install libgl1-mesa-dri
sudo apt-get install libgl1-mesa-dev
sudo add-apt-repository --remove ppa:xorg-edgers/ppa
sudo apt install net-tools
sudo apt-get install -y unzip
sudo apt install gcc
sudo apt install g++
```

vitisをインストール後起動してみたら、次のライブラリーが不足していて起動できませんでした。
WSLのUbuntu 24.04の場合、足りないのだとおもわれます。インストールしておきます。
詳しくは、[補足3](#補足３)に記載。
xlsclientsがないと、Vitisが正常に動作しなかったのでx11-utilsをインストールします。

```
sudo apt-get install libasound2t64
sudo apt-get install libsecret-1-0 libsecret-1-dev
sudo apt install x11-utils
```

localeに関するエラーが発生するので、en_US.UTF-8をインストールします。次のコマンドを実行しておきます。

```
sudo locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
```

https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/vitis.html

Downloadサイトから、``` AMD 統合インストーラー (FPGA およびアダプティブ SoC 用) 2024.2: Linux Self Extracting Web Installer```をダウンロードして、WSL2のシェルから実行する

ダウンロードしたインストーラをsudoをつけて実行。
デフォルトのインストールディレクトリが/toolsだったので、sudoつけました。
ユーザで書き込めるディレクトリにインストーするのだったら、sudoは不要かもしれません。

```
INFO Could not detect the display scale (hDPI).
       If you are using a high resolution monitor, you can set the installer scale factor like this:
       export XINSTALLER_SCALE=2
       setenv XINSTALLER_SCALE 2
```
SCALEを設定すると大きい文字にできるようです。私の環境では、きにならなかったので、このまま進めました。

WSLgが有効になっているのでXサーバ等の考慮は不要で、GUIで表示されるインストール画面が表示されました。
画面の表示に従って、操作します。

インストールが開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/bd5ac686-ae3a-ded2-e4e4-48f0feef0bf0.png)

インストール完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/fa1f903c-8395-0a5e-39bc-25040fbe76eb.png)

指示されたスクリプトを実行

```
$ cd /tools/Xilinx/Vitis/2024.2/scripts/
$ sudo ./installLibs.sh
```

インストール完了しました。

```.bashrc```に次の記述を追加します。

```
source /tools/Xilinx/Vitis/2024.2/settings64.sh
```

一度WSLを開きなおして、.bashrcを読み込みます。

vitisを起動してみます。

```
vitis
```

しばらく待ってもGuiが何も表示されません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/2fd3f202-5426-d17d-9dd4-58b18c11af95.png)

プロセスは起動してるのに。

vivadoは、起動しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/07e703da-4509-570a-9ec4-428aa9c75592.png)

# vitisが起動できない原因判明

※当初、```libwebkit2gtk```が不足が原因と記載していましたが、再インストールして確認したところ、このライブラリーをインストールする必要はありませんでした。
修正いたします。

```/tools/Xilinx/Vitis/2024.2/bin/vitis```の205行目を次のように書き換えます

```bash:/tools/Xilinx/Vitis/2024.2/bin/vitis
-LD_LIBRARY_PATH=$XILINX_VITIS/lib/lnx64.o:$LD_LIBRARY_PATH
+LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$XILINX_VITIS/lib/lnx64.o:$LD_LIBRARY_PATH
```
詳しくは、[補足2](#補足２)を参照してください。

vitis起動できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/4717b6f6-500a-6336-16ee-7259b5bc6a32.png)

# xsdbの起動エラーの修正

vitisでアプリケーションを起動した時に、xsdbの起動時にエラーが発生していました。

```/tools/Xilinx/Vitis/2024.2/bin/xsdb```の最後の行を修正します。

（修正方法あとでかきます）


# 今後の予定

USBのJTAGを使えるようにする必要がありますが、Windows側にhw_serverを起動することで、WSLのvivadoから使えるようにできます。

[記事にしました](https://qiita.com/GeekMasahiro/items/314e38927d69370ab70d)


# 補足

上に書いた手順は、順調にいった時の手順です。
Vitisのインストールで、次の画面で進捗が止まって進まなくなる事態が起きました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532235/7155e96a-d0b5-6a1f-5d90-590638608313.png)

この画面から進まないので、Cancelを押したら、インストールしたものが全部削除されました。

- ダウンロードだけするというオプションがあったのでダウンロードだけして、インストールするした
- インストールするデバイスを、Zinqだけにしてみた（いまのところこれ以外使わないので）

という対応をしたら、うまく行きました。原因は不明です。
同様の現象が発生した場合は参考にしてみてください。

# 補足２

```$XILINX_VITIS/ide/electron-app/lnx64/vitis-ide```このコマンドで起動するとVitisを起動する事ができました。
違いを調査した結果、Vitisの起動スクリプトで、```LD_LIBRARY_PATH```に```$XILINX_VITIS/lib/lnx64.o```を追加している事が原因で、Vitisが動作しなくなっていました。
動作しない場合は、次のようなライブラリーのロードエラーが発生していました。
```
masa@DESKTOP-HP:~$ /home/masa/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: /home/masa/tools/Xilinx/Vitis/2024.2/lib/lnx64.o/Ubuntu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /lib/x86_64-linux-gnu/libgallium-24.2.8-1ubuntu1~24.04.1.so)
/home/masa/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: /home/masa/tools/Xilinx/Vitis/2024.2/lib/lnx64.o/Ubuntu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib/x86_64-linux-gnu/libgallium-24.2.8-1ubuntu1~24.04.1.so)
/home/masa/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: /home/masa/tools/Xilinx/Vitis/2024.2/lib/lnx64.o/Ubuntu/libstdc++.so.6: version `GLIBCXX_3.4.28' not found (required by /lib/x86_64-linux-gnu/libgallium-24.2.8-1ubuntu1~24.04.1.so)
/home/masa/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: /home/masa/tools/Xilinx/Vitis/2024.2/lib/lnx64.o/Ubuntu/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by /lib/x86_64-linux-gnu/libLLVM.so.19.1)
/home/masa/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: /home/masa/tools/Xilinx/Vitis/2024.2/lib/lnx64.o/Ubuntu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM.so.19.1)
/home/masa/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: /home/masa/tools/Xilinx/Vitis/2024.2/lib/lnx64.o/Ubuntu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib/x86_64-linux-gnu/libLLVM.so.19.1)
/home/masa/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: /home/masa/tools/Xilinx/Vitis/2024.2/lib/lnx64.o/Ubuntu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /lib/x86_64-linux-gnu/libLLVM.so.19.1)
```

```LD_LIBRARY_PATH```にUbuntu24のライブラリーを先に指定する記述を追加して、回避してみました。この方法で、問題ないかどうかはわかりませんが、起動する事はできました。

この状況はWSLに限らない問題のような気がします。
ドキュメントには、Vitisのドキュメントには、Ubuntu24もサポートしているような記述がありますが、Ubuntu24はサポートされていないのでしょうか？


# 補足3

vitisこのスクリプトでは、```$XILINX_VITIS/ide/electron-app/lnx64/vitis-ide```起動時にエラーメッセージを/dev/nullに出力して表示していないので、ログを表示するように修正して起動してみました。

```
masa@DESKTOP-HP:/tools/Xilinx/Vitis/2024.2/bin$ vitis-x

****** Vitis Development Environment
****** Vitis v2024.2 (64-bit)
  **** SW Build 5238363 on 2024-11-08-17:54:51
    ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
    ** Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.

masa@DESKTOP-HP:/tools/Xilinx/Vitis/2024.2/bin$ /tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory

```
libasound.so.2を追加。

```
sudo apt-get install libasound2t64
```

```
Error: libsecret-1.so.0: cannot open shared object file: No such file or directory
    at process.func [as dlopen] (node:electron/js2c/asar_bundle:5:1800)
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1170:18)
    at Object.func [as .node] (node:electron/js2c/asar_bundle:5:1800)
    at Module.load (node:internal/modules/cjs/loader:982:32)
    at Module._load (node:internal/modules/cjs/loader:823:12)
    at Function.c._load (node:electron/js2c/asar_bundle:5:13331)
    at Module.require (node:internal/modules/cjs/loader:1006:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at Object.<anonymous> (/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/resources/app/node_modules/keytar/lib/keytar.js:1:14)
    at Module._compile (node:internal/modules/cjs/loader:1110:14) {
  code: 'ERR_DLOPEN_FAILED'
}
```

libsecret-1.so.0を追加

```
sudo apt-get install libsecret-1-0 libsecret-1-dev
```

補足４

Ubuntu22.04の場合は、Vitis起動時に次のエラーが発生
```
/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
/tools/Xilinx/Vitis/2024.2/ide/electron-app/lnx64/vitis-ide: error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory
```

```
sudo apt install libnss3
sudo apt install libasound2
sudo apt install libsecret-1-0
sudo apt install dbus-user-session
sudo apt install libtinfo5
sudo apt install x11-utils
sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.6 /lib/x86_64-linux-gnu/libncursesw.so.5

```
# 参考

https://qiita.com/basaro_k/items/04eea702c83a927f920c
https://qiita.com/GeekMasahiro/items/314e38927d69370ab70d