Windows Subsystem for Linux หรือ WSL เป็นความสามารถของ Windows ที่ช่วยให้เรารัน Linux distribution เช่น Ubuntu, Debian หรือ Kali Linux บน Windows ได้โดยตรง โดยไม่จำเป็นต้องทำ Dual Boot และไม่ต้องจัดการ Virtual Machine แบบเต็มรูปแบบด้วยตนเอง

สำหรับงานพัฒนา Software, DevOps, Cloud, Data Science และ AI นั้น WSL มีประโยชน์มาก เพราะสามารถใช้ Bash, Git, Python, Node.js, Go, Java, Docker, Kubernetes CLI และเครื่องมือ Linux อื่น ๆ ควบคู่กับ Visual Studio Code และโปรแกรมบน Windows ได้

ปัจจุบันควรเลือกใช้ WSL 2 เป็นหลัก เพราะใช้ Linux kernel จริงภายใน lightweight virtual machine และรองรับ system call ของ Linux ได้ครบกว่ารุ่น WSL 1


#1. Windows Features ที่เกี่ยวข้องกับ WSL

การใช้งาน WSL 2 มี Windows optional features สำคัญ 2 รายการ ได้แก่

  1. Windows Subsystem for Linux
  2. Virtual Machine Platform

โดยคำสั่ง wsl --install จะช่วยเปิด component ที่จำเป็นให้โดยอัตโนมัติใน Windows รุ่นปัจจุบัน

#Windows Subsystem for Linux

เป็น component ที่ทำให้ Windows สามารถติดตั้งและรัน Linux distribution ได้

#Virtual Machine Platform

เป็น virtualization component ที่ WSL 2 ใช้สำหรับรัน Linux kernel ภายใน lightweight utility VM

WSL 2 ไม่ได้หมายความว่าผู้ใช้ต้องสร้าง VM เองแบบ Hyper-V หรือ VirtualBox แต่ Windows จะจัดการ VM ที่ใช้โดย WSL ให้เบื้องหลัง


#2. ตรวจสอบว่าเครื่องรองรับ Virtualization หรือไม่

WSL 2 ต้องใช้ Hardware Virtualization

ตรวจสอบได้จาก

Task Manager
→ Performance
→ CPU
→ Virtualization: Enabled

ถ้าแสดงเป็น

Virtualization: Enabled

แสดงว่าสามารถใช้งาน WSL 2 ได้

หากเป็น Disabled อาจต้องเข้า BIOS/UEFI แล้วเปิด Intel VT-x, Intel Virtualization Technology หรือ AMD-V/SVM ขึ้นอยู่กับเครื่อง


#3. วิธีติดตั้ง WSL ที่แนะนำ

เปิด PowerShell หรือ Windows Terminal แบบ Administrator

จากนั้นรัน

wsl --install

คำสั่งนี้จะทำงานหลายอย่างให้โดยอัตโนมัติ เช่น

  • เปิด Windows Subsystem for Linux
  • เปิด Virtual Machine Platform
  • ติดตั้ง WSL
  • ติดตั้ง Linux kernel
  • ตั้ง WSL 2 เป็นค่าเริ่มต้น
  • ติดตั้ง Ubuntu เป็น Linux distribution เริ่มต้น

หลังจากนั้นอาจต้อง Restart เครื่อง

Windows
   │
   ├── Windows Subsystem for Linux
   ├── Virtual Machine Platform
   │
   └── WSL 2
         │
         └── Ubuntu

#4. เปิด Windows Features ด้วย GUI

หากต้องการตรวจสอบด้วย Graphical User Interface

กด

Win + R

พิมพ์

optionalfeatures

จากนั้นเลือก

☑ Windows Subsystem for Linux
☑ Virtual Machine Platform

แล้วกด

OK

จากนั้น Restart Windows

อย่างไรก็ตาม สำหรับ Windows รุ่นปัจจุบัน วิธีที่ง่ายกว่าและแนะนำมากกว่าคือ

wsl --install

#5. เปิด Features ด้วย PowerShell/DISM

ในบางกรณี เช่น การเตรียมเครื่องในห้องปฏิบัติการ หรือทำ script สำหรับหลายเครื่อง สามารถเปิด Windows Features ด้วย DISM ได้

#เปิด Windows Subsystem for Linux

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

#เปิด Virtual Machine Platform

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

จากนั้น Restart

shutdown /r /t 0

#6. ตรวจสอบ WSL

ตรวจสอบสถานะ

wsl --status

ตรวจสอบเวอร์ชัน

wsl --version

ตัวอย่าง

WSL version: 2.x.x
Kernel version: ...
WSLg version: ...
Windows version: ...

#7. Update WSL

ควร Update WSL ให้เป็นรุ่นล่าสุด

wsl --update

หลังจาก update สามารถ restart WSL ด้วย

wsl --shutdown

แล้วเปิด Ubuntu ใหม่


#8. ดู Linux Distribution ที่สามารถติดตั้งได้

wsl --list --online

หรือ

wsl -l -o

ตัวอย่าง distribution ที่อาจพบ เช่น

Ubuntu
Debian
Kali-Linux
openSUSE
OracleLinux

#9. ติดตั้ง Ubuntu

หากยังไม่ได้ติดตั้ง

wsl --install -d Ubuntu

หากต้องการ distribution อื่น

wsl --install -d Debian

หลังจากติดตั้งครั้งแรก Linux จะให้กำหนด

username
password

บัญชีนี้เป็นบัญชี Linux และไม่จำเป็นต้องเหมือนกับ Windows account


#10. ตรวจสอบ Distribution ที่ติดตั้งแล้ว

wsl --list --verbose

หรือ

wsl -l -v

ตัวอย่าง

  NAME      STATE           VERSION
* Ubuntu    Running         2

ถ้า VERSION เป็น 2 แสดงว่ากำลังใช้ WSL 2


#11. เปลี่ยน Distribution จาก WSL 1 เป็น WSL 2

wsl --set-version Ubuntu 2

ตั้งค่าให้ distribution ใหม่ใช้ WSL 2 โดย default

wsl --set-default-version 2

#12. เปิดใช้งาน Linux

สามารถเปิด Ubuntu จาก Start Menu หรือรัน

wsl

เปิด Linux home directory โดยตรง

wsl ~

เปิด distribution ที่กำหนด

wsl -d Ubuntu

#13. Update Package ภายใน Ubuntu

หลังติดตั้ง Ubuntu ควร update package ก่อน

sudo apt update
sudo apt upgrade -y

ติดตั้งเครื่องมือพื้นฐาน

sudo apt install -y \
  build-essential \
  curl \
  wget \
  git \
  unzip \
  zip \
  jq

#14. การทำงานร่วมกันระหว่าง Windows และ Linux

WSL มี integration ระหว่าง Windows และ Linux

ตัวอย่างการรัน Windows executable จาก Linux

notepad.exe
explorer.exe .

คำสั่ง

explorer.exe .

จะเปิด Windows File Explorer ที่ directory ปัจจุบันของ Linux

ในทางกลับกัน PowerShell สามารถรัน Linux command ได้

wsl ls -la

หรือ

wsl uname -a

#15. การเข้าถึง Drive C: จาก Linux

Drive Windows จะถูก mount ใต้ /mnt

ตัวอย่าง Drive C

cd /mnt/c

โฟลเดอร์ Users

cd /mnt/c/Users

เช่น

cd /mnt/c/Users/naruapon/Desktop

#16. ตำแหน่งเก็บ Project ที่เหมาะสม

หากใช้ Linux tools เช่น Node.js, Python, Go หรือ Docker ภายใน WSL เป็นหลัก ควรเก็บ project ใน Linux filesystem

ตัวอย่าง

mkdir -p ~/projects
cd ~/projects

แทนการเก็บไว้ที่

/mnt/c/Users/...

Microsoft แนะนำให้เก็บไฟล์ไว้บน filesystem เดียวกับเครื่องมือที่ใช้ เพื่อประสิทธิภาพ I/O ที่ดีกว่า

ตัวอย่างที่เหมาะสม

/home/user/projects/my-app

และสามารถเข้าถึงจาก Windows Explorer ได้ผ่าน

\\wsl$\Ubuntu\home\user\projects

#17. ใช้งาน Git บน WSL

ติดตั้ง Git

sudo apt install git -y

ตรวจสอบ

git --version

ตั้งค่า

git config --global user.name "Your Name"
git config --global user.email "your@email.com"

Clone repository

git clone https://github.com/example/project.git

#18. ใช้งาน Python

ตรวจสอบ

python3 --version

ติดตั้ง

sudo apt install python3 python3-pip python3-venv -y

สร้าง Virtual Environment

python3 -m venv .venv

เปิดใช้งาน

source .venv/bin/activate

#19. ใช้งาน Node.js

สามารถติดตั้งผ่าน package manager หรือ Node Version Manager เช่น nvm

ตัวอย่างตรวจสอบ

node --version
npm --version

แนวทางที่เหมาะกับงานพัฒนาคือใช้ version manager เพื่อสลับ Node.js หลายเวอร์ชันได้ง่าย


#20. ใช้งาน Go

หลังติดตั้ง Go สามารถตรวจสอบด้วย

go version

สร้างโปรเจกต์

mkdir hello-go
cd hello-go
go mod init example.com/hello-go

สร้างไฟล์

nano main.go

ตัวอย่าง

package main

import "fmt"

func main() {
    fmt.Println("Hello from Go on WSL")
}

รัน

go run .

#21. ใช้งาน Visual Studio Code กับ WSL

ติดตั้ง

  • Visual Studio Code
  • Extension: WSL

จาก Linux directory

cd ~/projects
code .

Visual Studio Code จะเปิด project โดยใช้ environment ภายใน WSL

โครงสร้างจะเป็น

Windows
   │
   ├── Visual Studio Code UI
   │
   └── WSL
        │
        ├── Git
        ├── Node.js
        ├── Python
        ├── Go
        └── Project files

วิธีนี้เหมาะกับการพัฒนา Web, API, Microservices, DevOps และ Cloud Native


#22. systemd บน WSL

WSL 2 รองรับ systemd

ตรวจสอบ

systemctl status

ตัวอย่าง service เช่น

sudo systemctl status ssh
sudo systemctl enable ssh
sudo systemctl start ssh

Ubuntu รุ่นปัจจุบันที่ติดตั้งผ่าน wsl --install รองรับ systemd เป็นค่าเริ่มต้นในหลายกรณี

หาก distribution อื่นยังไม่ได้เปิด systemd สามารถตั้งค่า /etc/wsl.conf

[boot]
systemd=true

แล้วจาก PowerShell รัน

wsl --shutdown

#23. WSLg: รัน Linux GUI Application

WSL 2 รองรับ Linux GUI application ผ่าน WSLg บน Windows รุ่นที่รองรับ

ตัวอย่าง

sudo apt install x11-apps -y

ทดสอบ

xeyes

Linux GUI สามารถทำงานร่วมกับ Windows desktop ได้ เช่น

  • แสดงใน Start Menu
  • Alt+Tab
  • Clipboard ระหว่าง Windows/Linux
  • Pin ที่ Taskbar

#24. Networking ระหว่าง Windows และ WSL

เมื่อรัน Web Server ภายใน WSL

ตัวอย่าง

python3 -m http.server 8000

Windows สามารถเปิด

http://localhost:8000

ได้โดยตรงในกรณีทั่วไป

ตัวอย่าง Node.js

npm run dev

แล้วเปิด

http://localhost:3000

#25. Mirrored Networking

บน Windows 11 รุ่นที่รองรับ สามารถใช้ Mirrored Networking เพื่อให้ networking ระหว่าง Windows และ WSL ทำงานใกล้เคียงกันมากขึ้น โดยเฉพาะเมื่อใช้ VPN, IPv6 หรือระบบเครือข่ายซับซ้อน

สร้างไฟล์

%USERPROFILE%\.wslconfig

ตัวอย่าง

[wsl2]
networkingMode=mirrored
dnsTunneling=true
autoProxy=true

จากนั้น

wsl --shutdown

ประโยชน์ของ mirrored mode เช่น

  • รองรับ IPv6 ได้ดีขึ้น
  • ใช้ localhost ระหว่าง Windows และ Linux ได้สะดวกขึ้น
  • Compatibility กับ VPN ดีขึ้น
  • รองรับ multicast
  • รองรับ LAN networking ได้ดีขึ้น

#26. กำหนด Resource ให้ WSL 2

สามารถใช้ .wslconfig เพื่อกำหนด CPU และ Memory

เปิด

%USERPROFILE%\.wslconfig

ตัวอย่าง

[wsl2]
memory=8GB
processors=4
swap=4GB

จากนั้น restart WSL

wsl --shutdown

เหมาะเมื่อใช้ WSL สำหรับ

  • Docker
  • Kubernetes
  • Java/Spring Boot
  • Data Science
  • Machine Learning
  • Local LLM

#27. ใช้งาน Docker กับ WSL

WSL เป็น environment ที่เหมาะกับ Docker

แนวทางที่พบบ่อยคือ

Windows
   │
   ├── Docker Desktop
   │
   └── WSL 2
        │
        ├── Ubuntu
        ├── Docker CLI
        └── Containers

ตรวจสอบ

docker version

ทดสอบ

docker run hello-world

ตัวอย่าง Nginx

docker run -d \
  --name nginx-demo \
  -p 8080:80 \
  nginx

เปิดจาก Windows

http://localhost:8080

#28. ใช้งาน Docker Compose

สร้าง compose.yaml

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"

รัน

docker compose up -d

ตรวจสอบ

docker compose ps

หยุด

docker compose down

#29. ใช้งาน Kubernetes CLI

WSL สามารถใช้เป็น environment สำหรับ Kubernetes tools เช่น

kubectl
helm
kind
minikube
terraform
ansible

ตัวอย่าง

kubectl version --client
helm version

เหมาะสำหรับ workshop Cloud Native และ DevOps เพราะ command line ใกล้เคียง Linux server จริง


#30. GPU Acceleration สำหรับ AI/ML

WSL 2 รองรับ GPU acceleration ใน workflow ที่รองรับ โดยเฉพาะ NVIDIA CUDA บน Windows/driver ที่รองรับ

ตัวอย่างตรวจสอบ NVIDIA GPU

nvidia-smi

จึงสามารถนำ WSL ไปใช้กับงาน เช่น

  • PyTorch
  • TensorFlow
  • CUDA
  • Jupyter
  • Machine Learning
  • Deep Learning
  • AI Development
  • GPU-enabled Docker containers

ทั้งนี้ควรตรวจสอบ driver และ requirement ของ framework ที่ใช้เสมอ


#31. คำสั่ง WSL ที่ควรรู้

ดู Distribution

wsl -l -v

ดู Distribution ออนไลน์

wsl -l -o

Update WSL

wsl --update

ตรวจสอบสถานะ

wsl --status

ตรวจสอบเวอร์ชัน

wsl --version

เปิด Ubuntu

wsl -d Ubuntu

หยุด WSL ทั้งหมด

wsl --shutdown

หยุดเฉพาะ Distribution

wsl --terminate Ubuntu

ตั้ง Default Distribution

wsl --set-default Ubuntu

ตั้ง Default WSL version

wsl --set-default-version 2

#32. Export และ Backup WSL

สามารถ export distribution เป็นไฟล์ .tar

wsl --export Ubuntu ubuntu-backup.tar

เหมาะสำหรับ

  • Backup Development Environment
  • ย้ายไปเครื่องใหม่
  • เตรียม Lab Environment
  • Clone environment สำหรับผู้เรียน

#33. Import WSL Distribution

ตัวอย่าง

wsl --import UbuntuDev C:\WSL\UbuntuDev ubuntu-backup.tar --version 2

ตรวจสอบ

wsl -l -v

#34. ลบ Distribution

คำสั่งนี้จะลบ distribution และข้อมูลทั้งหมดภายใน distribution

wsl --unregister Ubuntu

ควร backup ก่อนด้วย

wsl --export Ubuntu ubuntu-backup.tar

#35. WSL 1 กับ WSL 2

คุณสมบัติ WSL 1 WSL 2
Windows/Linux integration ✓ ✓
Linux Kernel จริง - ✓
Managed lightweight VM - ✓
Full system call compatibility - ✓
systemd - ✓
Docker/Container workload จำกัดกว่า เหมาะกว่า
Linux filesystem performance ดี ดีมาก
Access Windows filesystem เร็วในบาง workload อาจช้ากว่า WSL 1
แนะนำสำหรับงานพัฒนาสมัยใหม่ บางกรณี ✓

โดยทั่วไปควรเลือก WSL 2

WSL 1 ยังมีประโยชน์ในบางกรณี เช่น workload ที่ต้องทำงานกับไฟล์บน Windows filesystem จำนวนมาก และไม่ต้องใช้ Linux kernel แบบเต็มรูปแบบ


#36. ตัวอย่าง Development Environment

Windows 11
│
├── Windows Terminal
├── Visual Studio Code
├── Browser
├── Docker Desktop
│
└── WSL 2
    │
    └── Ubuntu
        │
        ├── Git
        ├── Node.js
        ├── Python
        ├── Go
        ├── Java
        ├── Docker CLI
        ├── kubectl
        ├── Helm
        ├── Terraform
        └── Ansible

ด้วยโครงสร้างนี้ Windows ทำหน้าที่เป็น Desktop Environment ส่วน Linux ทำหน้าที่เป็น Development Environment


#37. Workflow ที่แนะนำ

Developer
   │
   ▼
Windows Terminal
   │
   ▼
WSL 2 / Ubuntu
   │
   ├── Git
   ├── Programming Runtime
   ├── Docker
   ├── Kubernetes Tools
   └── Cloud CLI
   │
   ▼
VS Code
   │
   ▼
GitHub / GitLab
   │
   ▼
CI/CD

#38. ปัญหาที่พบบ่อย

#wsl command not found

ตรวจสอบ Windows version และเปิด Windows Subsystem for Linux feature

ลอง

wsl --install

#WSL 2 ไม่ทำงาน

ตรวจสอบว่าเปิด Virtualization

Task Manager
→ Performance
→ CPU
→ Virtualization

ต้องเป็น

Enabled

#ตรวจสอบ Distribution

wsl -l -v

ถ้าเป็น VERSION 1

wsl --set-version Ubuntu 2

#Network มีปัญหา

ลอง restart WSL

wsl --shutdown

แล้วเปิดใหม่

wsl

หากใช้ Windows 11 รุ่นที่รองรับและมีปัญหาเกี่ยวกับ VPN/DNS อาจพิจารณา mirrored networking และ DNS tunneling


#39. เหมาะกับงานประเภทใด

WSL เหมาะกับ

#Software Development

React
Next.js
Laravel
Spring Boot
Go
Python
Node.js
.NET

#DevOps

Docker
Kubernetes
Helm
Terraform
Ansible
GitHub CLI
AWS CLI
Azure CLI
gcloud

#Data Science / AI

Python
Jupyter
PyTorch
CUDA
Machine Learning
LLM Development

#Cloud Native

Docker
Kubernetes
Microservices
GitOps
Argo CD
Helm

#40. สรุป

Windows Subsystem for Linux ทำให้ Windows กลายเป็น Development Workstation ที่สามารถใช้เครื่องมือจากทั้ง Windows และ Linux ได้ในเครื่องเดียว

สำหรับ Windows รุ่นปัจจุบัน ขั้นตอนเริ่มต้นที่ง่ายที่สุดคือ

wsl --install

จากนั้น

wsl --update
wsl -l -v

ภายใน Ubuntu

sudo apt update
sudo apt upgrade -y

แล้วจึงติดตั้ง Development Tools เช่น

Git
Node.js
Python
Go
Java
Docker
kubectl
Helm
Terraform
Ansible

แนวทางที่แนะนำสำหรับงาน Software Engineering และ DevOps คือ

Windows 11
   +
WSL 2
   +
Ubuntu
   +
VS Code
   +
Docker

ซึ่งช่วยให้สามารถพัฒนา ทดสอบ และจำลอง Linux/Cloud Native Environment บน Windows ได้อย่างสะดวก โดยไม่ต้อง Dual Boot หรือดูแล Virtual Machine แบบเต็มรูปแบบเอง


#อ้างอิง