- Created by John Hartfiel, last modified on 08 12, 2023
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 67 Next »
2023.2 under WSL is currently being evaluated. Documentation for 2023.2 can be changed permanently at the moment.
Instructions
Setup WSL and Install Linux
- Enable CPU virtualisation in BIOS
- Open Windows Features
- Enable Windows-Subsystem for Linux
- Powershell as Admin:
- dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- Reboot
- Download and install: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
- Powershell as Admin:
- wsl --set-default-version 2
- Vivado/Vitis/Petalinux 2023.2
- with WSL Ubuntu 22.04 LTS
- Archive(was created with older version of this guideline)
- Vivado/Vitis/Petalinux 2020.2
- with WSL Ubuntu 18.04 LTS
- Vivado/Vitis/Petalinux 2021.2/2022.2
- with WSL Ubuntu 18.04 LTS
- with WSL Ubuntu 20.04 LTS
- Vivado/Vitis/Petalinux 2020.2
- Open Powershell as Admin
- Show all available distributions wsl.exe --list --online
- Install(Need for Multi Distributions): wsl.exe --install -d <linux distribution> or wsl.exe --install <linux distribution>
- Start Linux console and follow install instruction
- Start Ubuntu App (Windows Start Button → Ubuntu)
- (optional) WSL Configuration on linux console:
- sudo vim /etc/wsl.conf
[wsl2]
memory=<size>GB
processors=<cnt>
- Other options: https://docs.microsoft.com/en-us/windows/wsl/wsl-config
- sudo vim /etc/wsl.conf
- Other Install options from MS:https://docs.microsoft.com/de-de/windows/wsl/install-manual
Mount external ext4 drive (optional)
- mount ext4 drive (optimal as working drive instead if vhs): https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-disk
- Mounting a partitioned disk
Show drives on powershell: GET-CimInstance -query "SELECT * from Win32_DiskDrive"
- Mount drive inside powershell: wsl --mount <DiskPath> -p <partition number>
- Linux Console
- show available partitions: lsblk -lf
- Mount drive inside linux:
- sudo mkdir /mnt/<name>
- sudo mount /dev/sdd<Number> /mnt/<name>/
- Change Permission
- sudo chown <owner>:<owner> /mnt/<name>/
- sudo chown <owner>:<owner> /mnt/<name>/
- todo automount (otherwise ex4 is unmounted after wsl shutdown)
- Mounting a partitioned disk
- Check that the DNS server is configured on the Linux console:
- sudo vim /etc/resolv.conf
- In case DNS server is correct, skip this instruction otherwise follow instruction below
- Linux console:
- sudo vim /etc/wsl.conf
- [network]
generateResolvConf = false
- [network]
- (in case file can't be wrote):
- sudo rm /etc/.wsl.conf.swp
- sudo vim /etc/wsl.conf
- Powershell console:
- wsl --shutdown
- Get DNS Server IP over powershell:
- ipconfig -all
- Restart Linux (over powershell or win start button → Ubuntu)
- Linux console:
- sudo vim /etc/resolv.conf
- nameserver <DNS IP>
- (in case file can't be wrote, remove) and try again point a:
- sudo rm /etc/.resolv.conf.swp
- sudo rm etc/resolv.conf
- sudo vim /etc/resolv.conf
- Open explore
- Right click on PC icon --> Connect network drive
- Select drive
- Add to folder \\wsl$\Ubuntu-18.04
- Click Finish
Prepare Linux for AMD Tools
- Resize WSL VHD, see "Resize WSL VHD" on "Notes and Hints and other stuff" section
- Install browser
sudo apt-get install firefox
change console from dash to bash
sudo dpkg-reconfigure dash
- Press "No" to disable dash and activate default bash
Enable i386 architecture
- sudo dpkg --add-architecture i386
sudo apt-get update
- sudo dpkg --add-architecture i386
Download and run plnx-env-setup.sh(optional, not longer recommended from AMD): https://www.xilinx.com/support/answers/73296.htmlchmod 777 ./plnx-env-setup.shsudo ./plnx-env-setup.sh
Install packages(see https://support.xilinx.com/s/article/000035572?language=en_US → PetaLinux_2023.2_OS_Package_List.xlsx)
Note:
From excel additional to python3 also python was recommended which is not longer possible to install
- Additionally bc and was libtinfo5 added
- Add subversion (need only in case svn is used)
- Add u-boot-tools (need to generate own boot.scr file instead of petalinux version)
sudo apt-get install iproute2 gawk python3 build-essential gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib automake zlib1g:i386 screen pax gzip cpio python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint bc libtinfo5 subversion u-boot-tools -y
- Download AMD Vitis All OS installer Single-File(Includes Vitis, Vivado and Petalinux downloader):
- Extracted Files on linux drive
- tar -xvf FPGAs_AdaptiveSoCs_Unified_2023.2_1013_2256.tar.gz
- tar -xvf FPGAs_AdaptiveSoCs_Unified_2023.2_1013_2256.tar.gz
- Create Folder /tools/Xilinx
- sudo mkdir /tools
- sudo mkdir /tools/Xilinx
- sudo mkdir /tools
- Change owner to user
sudo chown <owner>:<owner> /tools/Xilinx
Install Vitis
run:$ ./xsetup
- select Vitis on default installation path
- Vivado License
- Open Xilinx License manager and chose Copy License and select your license file
- In case license file is node-locked and shared with WinOS:
- sudo vim /etc/bash.bashrc
- sudo ip link add bond0 type bond
- in case bond0 is not available
- sudo ip link set dev bond0 address xx:xx:xx:xx:xx:xx
- (use MAC from Win OS)
- sudo ip link add bond0 type bond
- sudo vim /etc/bash.bashrc
- Install petalinux
- run:$ ./xsetup
- select petalinux on default installation path
- Add source environment to auto start of new console :
- sudo vim /etc/bash.bashrc
- source /tools/Xilinx/PetaLinux/2023.2/tool/settings.sh
- sudo vim /etc/bash.bashrc
Notes and Hints and other stuff
#... #(original part) #... #all extensions to setup environment and # load petalinux environment, can be overwrite via project scripts export LM_LICENSE_FILE=<path to license file> export GLOBAL_VIVADO=2023.2 source /tools/Xilinx/PetaLinux/${GLOBAL_VIVADO}/tool/settings.sh # additional TE environment variables to change timeout and used jobs # additional TE envirnmoent variables export TE_TIMEOUT=200 export TE_RUNNING_JOBS=16 export TE_WSL_USAGE=1 export TE_EDITOR=notepad++.exe #export TE_SERIAL_PS=<path> export TE_COM=/mnt/<path to putty on winOS> export TE_PLX_SSTATE_CACHE_DOWNLOAD=~/design/sstate-cache/downloads_${GLOBAL_VIVADO}/downloads export TE_PLX_SSTATE_CACHE_AARCH64=~/design/sstate-cache/sstate_aarch64_${GLOBAL_VIVADO}/aarch64 export TE_PLX_SSTATE_CACHE_ARM=~/design/sstate-cache/sstate_arm_${GLOBAL_VIVADO}/arm export TE_PLX_SSTATE_CACHE_MB_FULL=~/design/sstate-cache/sstate_mb-full_${GLOBAL_VIVADO}/mb-full # finish echo "TE Enviroment Variables" echo "TE_TIMEOUT=${TE_TIMEOUT}" echo "TE_RUNNING_JOBS=${TE_RUNNING_JOBS}" echo "TE_WSL_USAGE=${TE_WSL_USAGE}" echo "TE_EDITOR=${TE_EDITOR}" echo "TE_SERIAL_PS=${TE_SERIAL_PS}" echo "TE_COM=${TE_COM}" echo "TE_PLX_SSTATE_CACHE_DOWNLOAD=${TE_PLX_SSTATE_CACHE_DOWNLOAD}" echo "TE_PLX_SSTATE_CACHE_AARCH64=${TE_PLX_SSTATE_CACHE_AARCH64}" echo "TE_PLX_SSTATE_CACHE_ARM=${TE_PLX_SSTATE_CACHE_ARM}" echo "TE_PLX_SSTATE_CACHE_MB_FULL=${TE_PLX_SSTATE_CACHE_MB_FULL}" # finish function x_run () { sudo ip link add bond0 type bond # replace xx:xx:xx:xx:xx:xx with win 10 MAC sudo ip link set dev bond0 address xx:xx:xx:xx:xx:xx } # xSetup only needed in case wsl is rebooted echo "Refresh XSetup? y/N" read xsetup if [ "${xsetup}" == "y" ]; then x_run; fi #show version lsb_release -a
#Sometimes Vmmem did not release DDR memory # ############### #Solution 1: # ####### #shutdown (close all running application before) wsl --shutdown #start WSL again wsl #Solution 2: #todo
# Resize VHD # ############### # see: https://docs.microsoft.com/en-us/windows/wsl/vhd-size # #1 open powershell as admin #Terminate WSL wsl --shutdown # https://learn.microsoft.com/en-us/windows/wsl/disk-space#how-to-locate-the-vhdx-file-and-disk-path-for-your-linux-distribution #find your distribution installation. #replace <distribution-name> with your Ubuntu Version, for example Ubuntu-22.04 (Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx" #Copy the path to that file, it should look something like %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79xxxx\LocalState\ext4.vhdx # This path will be called "<pathToVHD>" below # -------------------------#start diskpartdiskpart# ---------- diskpart #inside diskpart console #select disk DISKPART> Select vdisk file="<pathToVHD>" #check details DISKPART> detail vdisk #(optional) shrink size DISKPART> compact vdisk #expand for example to 512GB <sizeInMegaBytes>=512000 #Note: WSL2 and Ubuntu 22.04 has default maximum size from harddisk DISKPART> expand vdisk maximum=512000 #exit DISKPART> exit # ---------- #start WSL from powershell sudo mount -t devtmpfs none /dev # "/dev: none already mounted on /dev." warning can be ignored mount | grep ext4 #resize fs to 512GB <sizeInMegaBytes>=512000M sudo resize2fs /dev/sdb 512000M
#change manually with sudo dpkg-reconfigure locales
Table of contents
Preview Screenshots
Vivado Linux GUI on XServer in WinOS Desktop
Vivado Linux GUI Linux Desktop in RDP
Linux Console on Win OS with Petalinux
Virtual Linux EXT4 Drive on Win Explorer
Obsolete Notes
VCXsrv is not longer needed with newest WSL und Ubuntu 22.04
- Install VcXsrv
- Start VcXsrv (XLaunch)
- (optional) Save Configuration and run XLaunch directly with "XLaunch -run <config.xlaunch>"
- Linux console:
- sudo apt update && sudo apt upgrade
- sudo apt install xfce4
sudo apt install build-essential
sudo apt install net-tools
- sudo apt install xrdp -y && sudo systemctl enable xrdp
- Add environment to auto start of new console :
- sudo vim /etc/bash.bashrc
export DISPLAY=<host IP>:0.0
export LIBGL_ALWAYS_INDIRECT=1
- sudo /etc/init.d/dbus start
- sudo /etc/init.d/xrdp start
Currently not tested with newest WSL und Ubuntu 22.04
- Start Ubuntu App (Windows Start Button → Ubuntu)
- Add username and password
- Update packet manager:
- sudo apt update && sudo apt upgrade
- Install:
- sudo apt install xfce4 xrdp
- Modify Remote Port
- sudo sed -i 's/3389/3388/g' /etc/xrdp/xrdp.ini
- Start XRDP Server
- sudo /etc/init.d/xrdp start
- (optional) XRDP autostart :
- sudo vim /etc/bash.bashrc
- sudo /etc/init.d/xrdp start
- sudo vim /etc/bash.bashrc
- Connect via RDP (Win10 Remote Desktop Connection):
- localhost:3388
- localhost:3388
#... #(original part) #... #all extensions to setup environment and # load petalinux environment, can be overwrite via project scripts export GLOBAL_VIVADO=2021.2 source /tools/Xilinx/PetaLinux/${GLOBAL_VIVADO}/tool/settings.sh # additional TE environment variables to change timeout and used jobs # additional TE envirnmoent variables export TE_TIMEOUT=200 export TE_RUNNING_JOBS=16 export TE_WSL_USAGE=1 export TE_EDITOR=notepad++.exe #export TE_SERIAL_PS=<path> export TE_COM=/mnt/<path to putty on winOS> export TE_PLX_SSTATE_CACHE_DOWNLOAD=~/design/sstate-cache/downloads_${GLOBAL_VIVADO}/downloads export TE_PLX_SSTATE_CACHE_AARCH64=~/design/sstate-cache/sstate_aarch64_${GLOBAL_VIVADO}/aarch64 export TE_PLX_SSTATE_CACHE_ARM=~/design/sstate-cache/sstate_arm_${GLOBAL_VIVADO}/arm export TE_PLX_SSTATE_CACHE_MB_FULL=~/design/sstate-cache/sstate_mb-full_${GLOBAL_VIVADO}/mb-full # finish echo "TE Enviroment Variables" echo "TE_TIMEOUT=${TE_TIMEOUT}" echo "TE_RUNNING_JOBS=${TE_RUNNING_JOBS}" echo "TE_WSL_USAGE=${TE_WSL_USAGE}" echo "TE_EDITOR=${TE_EDITOR}" echo "TE_SERIAL_PS=${TE_SERIAL_PS}" echo "TE_COM=${TE_COM}" echo "TE_PLX_SSTATE_CACHE_DOWNLOAD=${TE_PLX_SSTATE_CACHE_DOWNLOAD}" echo "TE_PLX_SSTATE_CACHE_AARCH64=${TE_PLX_SSTATE_CACHE_AARCH64}" echo "TE_PLX_SSTATE_CACHE_ARM=${TE_PLX_SSTATE_CACHE_ARM}" echo "TE_PLX_SSTATE_CACHE_MB_FULL=${TE_PLX_SSTATE_CACHE_MB_FULL}" # finish function x_run () { #XServer Display export DISPLAY=xxx.xxx.xxx.xxx:0.0 # replace xxx.xxx.xxx.xxx with your win 10 host IP export LIBGL_ALWAYS_INDIRECT=1 sudo /etc/init.d/dbus start sudo /etc/init.d/xrdp start # replace xx:xx:xx:xx:xx:xx with win 10 MAC sudo ip link set dev bond0 address xx:xx:xx:xx:xx:xx } # x-server Setup only needed in case wsl is rebooted echo "Refresh XSetup? y/N" read xsetup if [ "${xsetup}" == "y" ]; then x_run; fi #show version lsb_release -a
- No labels