Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Linux GUI
Applications on
Windows Subsystem
for Linux [WSL2]
Jim McKeeth
Chief Developer Advocate
Embarcadero Technologies
jim.mckeeth@embarcadero.com
@JimMcKeeth
Developers Perspective
Slides, links & replay: blogs.embarcadero.com/?p=130922
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Agenda
▪ Introduction to WSL
▪ Setup and configuration
▪ Different Linux Distributions
▪ Deploying and debugging
▪ Troubleshooting
▪ Advanced Options
▪ Q&A
Slides, links & replay: blogs.embarcadero.com/?p=130922
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Presenter: Jim McKeeth
● Chief Developer Advocate & Engineer for Embarcadero
● Long time software developer
○ Delphi, C/C++, Python, Java, JavaScript, Ruby, etc.
● Invented and patented pattern and swipe to unlock
○ e.g. US Patents # 8352745 & 6766456
● Built thought controlled drone with Google Glass and
wireless EEG headset
● Contributor to Internet of Things and Data Analytics Handbook
● Blogger, podcaster, conference speaker, webinar host, etc.
● Twitter, TikTok, YouTube, etc. @JimMcKeeth
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Windows Subsystem for Linux
● Introduced in Windows 10
○ Trivia: Replaces Windows Services for Unix from 2004
○ Also available on Windows 11 and Windows Server 2019
● Developed in collaboration with Canonical and others
● WSL2 improved performance with a real Linux kernel
○ Uses a subset of Hyper-V features
● Not as isolated or as much overhead as a VM
○ Performance rivals native Linux
● WSLg adds GUI support
○ Ships in Windows 11 or Windows 10 Insider 21364
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
&
LINUX
Addressing the
Elephant in
the Room…
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
"a step
backward in the
campaign for
freedom."
https://tek.io/3ufuXWR
Linus Torvalds
Creator of Linux kernel
Img https://w.wiki/4n93
"The whole
anti-Microsoft thing was
sometimes funny as a
joke… I feel like, yes,
they have changed… So
I completely dismissed
all the anti-Microsoft
stuff."
https://zd.net/35x8YjE
Richard Stallman
Found of FSF & GNU
Img https://w.wiki/4n8x
Satya Nadella
Microsoft CEO
https://zd.net/3IQSst6
Img https://w.wiki/4n9G
Mark Shuttleworth
Founder & CEO Canonical
Img https://w.wiki/4n9H
“It’s not like Microsoft is
stealing our toys, it’s
more that we’re sharing
them with Microsoft in
order to give everyone
the best possible
experience.”
https://tek.io/3ufuXWR
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Benefits and Use Cases
● Ability to run unmodified ELF64 Linux binaries, expand toolkit and capabilities
● Flexibility of combining Windows and Linux tool chain on one computer
● Less overhead than a traditional virtual machine means better performance
● Local build environment with containers, etc.
● Testing server applications from Windows without additional infrastructure
● No need to mess with dual boot or 3rd
party VM installation
● Invoke Linux binaries from Windows and Windows executables from Linux
● Runs as you need it, less management
● Memory and drive space are dynamically shared
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
WSL Installation Guide
● Enable "Windows Subsystem for Linux" optional feature (via Admin PowerShell or Windows Features)
○ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
● Install Linux Distro of Choice
○ Windows Store or manually via script
● Launch Linux Distro to initialize it, provide password, etc.
● You can also build a custom distro
● Launch WSL 4 ways
○ Icon on start menu
○ [distro], for example ubuntu
○ wsl.exe or bash.exe
○ wsl [command] or bash -c [command]
https://docs.microsoft.com/en-us/windows/wsl/install
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Available Distributions
● Ubuntu, Kali, & Pengwin are in the
Debian family (using .deb pkgs - apt)
○ Kali is focused on security
○ Pengwin is designed around WSL
● SUSE and Fedora are in the RPM family
with Red Hat
● Alpine is an independent, lightweight,
security-oriented, Linux distribution
● Some distros include multiple versions
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Managing WSL Distros
● List distributions
○ wsl --list --all or wsl --list --running
● Set default distribution
○ wsl --setdefault <DistributionName> or wsl -s <DistributionName>
● Run a specific distro
○ wsl --distribution <DistributionName>
● Run as specified user
○ wsl --user <Username> (or use the specific distro name)
● Unregister and uninstall a distribution
○ wsl --unregister <DistributionName>
● Shutdown all WSL instances
○ wsl --shutdown
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
First Run
▪ On first run you are usually
prompted for a username
and password
▪ openSUSE uses YaST2 for a
nice ASCII GUI
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Connecting from the IDE
● Tools -> Options -> Deployment ->
Connection Profile Manager
● The IP address and ports are shared with
the host
● So you connect to 127.0.0.1
● Can only use each port number once
(even if you have multiple distros setup)
● So use different port numbers for
multiple instances if you want to run
them simultaneously
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Linux User Password Reset
1. Note your username
2. From Windows terminal get the distro name
➢ wsl -l
3. From Windows terminal switch default-user to root
➢ ubuntu config --default-user root
4. Launch the WSL distro (you will be logged in as
root)
➢ ubuntu
5. Change the user’s password
➢ passwd username
6. Change the default user back
➢ ubuntu config --default-user username
7. Launch the WSL distro again
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Accessing Files Between Systems
● Access Windows from Linux
○ cd /mnt/c/
● Open WSL in current Windows directory
○ wsl
○ wsl -d ubuntu
○ ubuntu
● Access Linux from Windows
○ wsl.localhost
● Open current Linux path from Windows
○ explorer.exe .
○ cmd.exe
○ powershell.exe
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company RAD STUDIO
Demonstration
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
● Command Line Blog (includes WSL) http://aka.ms/cliblog
● Learn WSL http://aka.ms/learnwsl
● WSL Docs http://aka.ms/wsldocs
● Connect USB to WSL https://aka.ms/wsl-usbip
● WSL: Run Linux GUI Apps youtu.be/kC3eWRPzeWw
● Deep Dive in WSL2 youtu.be/lwhMThePdIo
● Windows Dev Tool Updates: WSL, Terminal, Package Manager, and more youtu.be/m5tt9mDRPSw
Windows Subsystem for Linux resources
Slides, links & replay: blogs.embarcadero.com/?p=130922
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
More WSL Resources
● Advanced WSL Launcher / Installer (Simplify making your own WSL distro)
○ https://github.com/yuk7/wsldl
● Other prebuilt distros based on WSLDL
○ https://wsldl-pg.github.io/docs/Using-wsldl/#distros
● Collection of WSL Utilities
○ https://github.com/wslutilities/wslu
● A GUI WSL2 instance manager
○ https://github.com/bostrot/wsl2-distro-manager
● Awesome list for WSL
○ https://github.com/sirredbeard/Awesome-WSL
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
● DocWiki: Linux Application Development
docwiki.embarcadero.com/RADStudio/en/Linux_Application_Development
● DocWiki: Installing the Platform Assistant on Linux
docwiki.embarcadero.com/RADStudio/en/Installing_the_Platform_Assistant_on_Linux
● DocWiki: FireMonkey for Linux
docwiki.embarcadero.com/RADStudio/en/FireMonkey_for_Linux
● Script to automate setup on Ubuntu
○ embt.co/Ubuntu4Delphi22
● Script to automate setup on Redhat
○ embt.co/RedHat4Delphi22
FMXLinux Resources
Slides, links & replay: blogs.embarcadero.com/?p=130922
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company
Setting up CentOS (Redhat based)
● Install Docker in Ubuntu docs.docker.com/engine/install/ubuntu/
● Follow steps docs.microsoft.com/en-us/windows/wsl/use-custom-distro
○ Make folder on Windows C:WSLCentOS
○ From Ubuntu
■ sudo service docker start
■ sudo docker run -t dokken/centos-stream-9 bash ls /
■ dockerContainerID=$(sudo docker container ls -a | grep -i
dokken/centos-stream-9 | awk '{print $1}')
■ sudo docker export $dockerContainerID > /mnt/c/WSL/CentOS/centos.tar
■ sudo docker rm $dockerContainerID
○ From PowerShell
■ cd C:WSLCentOS
■ wsl --import CentOS C:WSLCentOS .centos.tar
○ From CentOS
■ yum update -y && yum install passwd sudo -y
■ myUsername=jim
■ adduser -G wheel $myUsername
■ echo -e "[user]ndefault=$myUsername" >> /etc/wsl.conf
■ passwd $myUsername
○ From PowerShell
■ wsl --terminate CentOS
Fedora
Redhat
CentOS
● Base OS
● By Redhat &
Community
● Feature focus
● Free
● By Redhat
● Supported
● Stable focus
● Commercial
● By community
● No support
● Free
https://embt.co/RedHat4Delphi22
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company RAD STUDIO
Q&A
Slides, links & replay: https://blogs.embarcadero.com/?p=130922
Jim McKeeth
Chief Developer Advocate
Embarcadero Technologies
jim.mckeeth@embarcadero.com
@JimMcKeeth
Linux GUI
Applications on
Windows Subsystem
for Linux [WSL2]
Delphi 11
Copyright © 2022 by Embarcadero, an Idera company

Linux GUI Applications on Windows Subsystem for Linux

  • 1.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Linux GUI Applications on Windows Subsystem for Linux [WSL2] Jim McKeeth Chief Developer Advocate Embarcadero Technologies jim.mckeeth@embarcadero.com @JimMcKeeth Developers Perspective Slides, links & replay: blogs.embarcadero.com/?p=130922
  • 2.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Agenda ▪ Introduction to WSL ▪ Setup and configuration ▪ Different Linux Distributions ▪ Deploying and debugging ▪ Troubleshooting ▪ Advanced Options ▪ Q&A Slides, links & replay: blogs.embarcadero.com/?p=130922
  • 3.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Presenter: Jim McKeeth ● Chief Developer Advocate & Engineer for Embarcadero ● Long time software developer ○ Delphi, C/C++, Python, Java, JavaScript, Ruby, etc. ● Invented and patented pattern and swipe to unlock ○ e.g. US Patents # 8352745 & 6766456 ● Built thought controlled drone with Google Glass and wireless EEG headset ● Contributor to Internet of Things and Data Analytics Handbook ● Blogger, podcaster, conference speaker, webinar host, etc. ● Twitter, TikTok, YouTube, etc. @JimMcKeeth
  • 4.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Windows Subsystem for Linux ● Introduced in Windows 10 ○ Trivia: Replaces Windows Services for Unix from 2004 ○ Also available on Windows 11 and Windows Server 2019 ● Developed in collaboration with Canonical and others ● WSL2 improved performance with a real Linux kernel ○ Uses a subset of Hyper-V features ● Not as isolated or as much overhead as a VM ○ Performance rivals native Linux ● WSLg adds GUI support ○ Ships in Windows 11 or Windows 10 Insider 21364
  • 5.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company & LINUX Addressing the Elephant in the Room…
  • 6.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company "a step backward in the campaign for freedom." https://tek.io/3ufuXWR Linus Torvalds Creator of Linux kernel Img https://w.wiki/4n93 "The whole anti-Microsoft thing was sometimes funny as a joke… I feel like, yes, they have changed… So I completely dismissed all the anti-Microsoft stuff." https://zd.net/35x8YjE Richard Stallman Found of FSF & GNU Img https://w.wiki/4n8x Satya Nadella Microsoft CEO https://zd.net/3IQSst6 Img https://w.wiki/4n9G Mark Shuttleworth Founder & CEO Canonical Img https://w.wiki/4n9H “It’s not like Microsoft is stealing our toys, it’s more that we’re sharing them with Microsoft in order to give everyone the best possible experience.” https://tek.io/3ufuXWR
  • 7.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Benefits and Use Cases ● Ability to run unmodified ELF64 Linux binaries, expand toolkit and capabilities ● Flexibility of combining Windows and Linux tool chain on one computer ● Less overhead than a traditional virtual machine means better performance ● Local build environment with containers, etc. ● Testing server applications from Windows without additional infrastructure ● No need to mess with dual boot or 3rd party VM installation ● Invoke Linux binaries from Windows and Windows executables from Linux ● Runs as you need it, less management ● Memory and drive space are dynamically shared
  • 8.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company WSL Installation Guide ● Enable "Windows Subsystem for Linux" optional feature (via Admin PowerShell or Windows Features) ○ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux ● Install Linux Distro of Choice ○ Windows Store or manually via script ● Launch Linux Distro to initialize it, provide password, etc. ● You can also build a custom distro ● Launch WSL 4 ways ○ Icon on start menu ○ [distro], for example ubuntu ○ wsl.exe or bash.exe ○ wsl [command] or bash -c [command] https://docs.microsoft.com/en-us/windows/wsl/install
  • 9.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Available Distributions ● Ubuntu, Kali, & Pengwin are in the Debian family (using .deb pkgs - apt) ○ Kali is focused on security ○ Pengwin is designed around WSL ● SUSE and Fedora are in the RPM family with Red Hat ● Alpine is an independent, lightweight, security-oriented, Linux distribution ● Some distros include multiple versions
  • 10.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Managing WSL Distros ● List distributions ○ wsl --list --all or wsl --list --running ● Set default distribution ○ wsl --setdefault <DistributionName> or wsl -s <DistributionName> ● Run a specific distro ○ wsl --distribution <DistributionName> ● Run as specified user ○ wsl --user <Username> (or use the specific distro name) ● Unregister and uninstall a distribution ○ wsl --unregister <DistributionName> ● Shutdown all WSL instances ○ wsl --shutdown
  • 11.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company First Run ▪ On first run you are usually prompted for a username and password ▪ openSUSE uses YaST2 for a nice ASCII GUI
  • 12.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Connecting from the IDE ● Tools -> Options -> Deployment -> Connection Profile Manager ● The IP address and ports are shared with the host ● So you connect to 127.0.0.1 ● Can only use each port number once (even if you have multiple distros setup) ● So use different port numbers for multiple instances if you want to run them simultaneously
  • 13.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Linux User Password Reset 1. Note your username 2. From Windows terminal get the distro name ➢ wsl -l 3. From Windows terminal switch default-user to root ➢ ubuntu config --default-user root 4. Launch the WSL distro (you will be logged in as root) ➢ ubuntu 5. Change the user’s password ➢ passwd username 6. Change the default user back ➢ ubuntu config --default-user username 7. Launch the WSL distro again
  • 14.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Accessing Files Between Systems ● Access Windows from Linux ○ cd /mnt/c/ ● Open WSL in current Windows directory ○ wsl ○ wsl -d ubuntu ○ ubuntu ● Access Linux from Windows ○ wsl.localhost ● Open current Linux path from Windows ○ explorer.exe . ○ cmd.exe ○ powershell.exe
  • 15.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company RAD STUDIO Demonstration
  • 16.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company ● Command Line Blog (includes WSL) http://aka.ms/cliblog ● Learn WSL http://aka.ms/learnwsl ● WSL Docs http://aka.ms/wsldocs ● Connect USB to WSL https://aka.ms/wsl-usbip ● WSL: Run Linux GUI Apps youtu.be/kC3eWRPzeWw ● Deep Dive in WSL2 youtu.be/lwhMThePdIo ● Windows Dev Tool Updates: WSL, Terminal, Package Manager, and more youtu.be/m5tt9mDRPSw Windows Subsystem for Linux resources Slides, links & replay: blogs.embarcadero.com/?p=130922
  • 17.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company More WSL Resources ● Advanced WSL Launcher / Installer (Simplify making your own WSL distro) ○ https://github.com/yuk7/wsldl ● Other prebuilt distros based on WSLDL ○ https://wsldl-pg.github.io/docs/Using-wsldl/#distros ● Collection of WSL Utilities ○ https://github.com/wslutilities/wslu ● A GUI WSL2 instance manager ○ https://github.com/bostrot/wsl2-distro-manager ● Awesome list for WSL ○ https://github.com/sirredbeard/Awesome-WSL
  • 18.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company ● DocWiki: Linux Application Development docwiki.embarcadero.com/RADStudio/en/Linux_Application_Development ● DocWiki: Installing the Platform Assistant on Linux docwiki.embarcadero.com/RADStudio/en/Installing_the_Platform_Assistant_on_Linux ● DocWiki: FireMonkey for Linux docwiki.embarcadero.com/RADStudio/en/FireMonkey_for_Linux ● Script to automate setup on Ubuntu ○ embt.co/Ubuntu4Delphi22 ● Script to automate setup on Redhat ○ embt.co/RedHat4Delphi22 FMXLinux Resources Slides, links & replay: blogs.embarcadero.com/?p=130922
  • 19.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company Setting up CentOS (Redhat based) ● Install Docker in Ubuntu docs.docker.com/engine/install/ubuntu/ ● Follow steps docs.microsoft.com/en-us/windows/wsl/use-custom-distro ○ Make folder on Windows C:WSLCentOS ○ From Ubuntu ■ sudo service docker start ■ sudo docker run -t dokken/centos-stream-9 bash ls / ■ dockerContainerID=$(sudo docker container ls -a | grep -i dokken/centos-stream-9 | awk '{print $1}') ■ sudo docker export $dockerContainerID > /mnt/c/WSL/CentOS/centos.tar ■ sudo docker rm $dockerContainerID ○ From PowerShell ■ cd C:WSLCentOS ■ wsl --import CentOS C:WSLCentOS .centos.tar ○ From CentOS ■ yum update -y && yum install passwd sudo -y ■ myUsername=jim ■ adduser -G wheel $myUsername ■ echo -e "[user]ndefault=$myUsername" >> /etc/wsl.conf ■ passwd $myUsername ○ From PowerShell ■ wsl --terminate CentOS Fedora Redhat CentOS ● Base OS ● By Redhat & Community ● Feature focus ● Free ● By Redhat ● Supported ● Stable focus ● Commercial ● By community ● No support ● Free https://embt.co/RedHat4Delphi22
  • 20.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company RAD STUDIO Q&A Slides, links & replay: https://blogs.embarcadero.com/?p=130922 Jim McKeeth Chief Developer Advocate Embarcadero Technologies jim.mckeeth@embarcadero.com @JimMcKeeth Linux GUI Applications on Windows Subsystem for Linux [WSL2]
  • 21.
    Delphi 11 Copyright ©2022 by Embarcadero, an Idera company