WSL 2

WSL 2 ติดตั้งได้บน Windows 11 หรือ Windows 10 version 2004+ (Build 19041 and higher)

การติดตั้ง WSL 2

  1. Open PowerShell or Windows Command Prompt in administrator mode by right-clicking and selecting “Run as administrator
  2. Enter the command: wsl --install
  3. You’ll need to restart your machine following this installation process to begin using WSL.

คำสั่ง wsl --install จะติดตั้ง Ubuntu distribution เป็นค่า default แต่เราสามารถติดตั้ง Linux distributions อื่นได้

ดู Linux distribution ที่มีใน Microsoft Store ใช้คำสั่ง wsl --list --online

> wsl --list --online
The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_8_5                        Oracle Linux 8.5
OracleLinux_7_9                        Oracle Linux 7.9
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4                     openSUSE Leap 15.4
openSUSE-Tumbleweed                    openSUSE Tumbleweed

เลือก Linux distribution ที่จะติดตั้งด้วยคำสั่ง wsl --install --distribution <Distribution Name>

> wsl --install Ubuntu-22.04
Installing: Ubuntu 22.04 LTS
[======                    11.0%                           ]

ถ้าจะ uninstall ใช้คำสั่ง

> wsl --unregister Ubuntu-22.04

หลังจาก WSL ติดตั้ง Linux distribution เสร็จ ให้ restart เครื่อง

เรียกใช้งาน installed Linux distribution ได้จาก Windows search แล้วค้นหาคำว่า Ubuntu หรือเปิด Windows Terminal แล้วเลือก Ubuntu

เมื่อเรียกใช้งานครั้งแรก จะให้ตั้ง username และ password.

เมื่อตั้งเสร็จ สามารถดูข้อมูลของ Linux distribution ที่ติดตั้งได้ด้วยคำสั่ง cat /etc/os-release

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Update และ upgrade packages ของ Ubuntu ด้วยคำสั่ง sudo apt update && upgrade

Visual Studio Code

ติดตั้ง WSL Extension ให้กับ Visual Studio Code

เรียก Visual Studio Code จาก command line ของ Linux (Bash) ด้วยคำสั่ง code .

File system

ถ้าอยู่ที่ Bash ใน Linux สามารถอ้างถึง drive c บน Windows ได้ที่ /mnt/c/ (mounted C drive)

ถ้าจะกลับไปที่ home directory บน Linux ได้ด้วยคำสั่ง cd ~

ถ้าอยู่ที่ PowerShell สามารถอ้างถึง home directory บน Linux ได้ด้วยคำสั่ง cd \\wsl.localhost\Ubuntu\home\<username>

ถ้าอยู่ที่ Windows File Explorer (explorer.exe) สามารถดูได้ทั้ง Windows file system (c:\) และ Linux file system (\\wsl.localhost\Ubuntu)

WSL commands

ถ้ารันจาก PowerShell หรือ Windows Command Prompt (CMD) พิมพ์คำสั่ง wsl แต่ถ้ารันจาก Bash พิมพ์คำสั่ง wsl.exe

ดูเวอร์ชันของ WSL ด้วย wsl --version

  • WSL
  • the Linux Kernel used by WSL
  • the version for WSLg, which runs Linux GUI apps
  • the version for MSRDC, which represents the Microsoft Remote Desktop Client supporting WSL
  • the versions of Direct3D and DXCore, used for graphics rendering
  • the version of Windows that you’re running
> wsl --version
WSL version: 1.1.3.0
Kernel version: 5.15.90.1
WSLg version: 1.0.49
MSRDC version: 1.2.3770
Direct3D version: 1.608.2-61064218
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22621.1344

อัพเดท WSL ด้วย wsl --update

ดูรายการ Linux distributions ที่มีการิดตั้งด้วย wsl --list --verbose หรือ wsl -l -v

> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2

เปลี่ยน default Linux distribution ด้วย wsl --set-default <Distribution Name>

ที่ PowerShell เปิด Bash command line ไปที่ home directory ด้วย wsl ~ หรือ เปิด Bash command line โดยยังอยู่ที่พาทเดิมด้วย wsl และออกจาก Bash ด้วย exit

ที่ Bash เรียก Windows File Explorer ให้ชี้ไปที่ current directory path ด้วย explorer.exe . (อย่าลืมพิมพ์จุดด้วย)

คำสั่งของ Ubuntu ใน WSL2

คำสั่ง systemctl ใช้ไม่ได้

$ sudo systemctl status apache2
[sudo] password for jack:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

ให้ใช้คำสั่ง service แทน

$ sudo service apache2 status