- 1. Windows Features ที่เกี่ยวข้องกับ WSL
- 2. ตรวจสอบว่าเครื่องรองรับ Virtualization หรือไม่
- 3. วิธีติดตั้ง WSL ที่แนะนำ
- 4. เปิด Windows Features ด้วย GUI
- 5. เปิด Features ด้วย PowerShell/DISM
- 6. ตรวจสอบ WSL
- 7. Update WSL
- 8. ดู Linux Distribution ที่สามารถติดตั้งได้
- 9. ติดตั้ง Ubuntu
- 10. ตรวจสอบ Distribution ที่ติดตั้งแล้ว
- 11. เปลี่ยน Distribution จาก WSL 1 เป็น WSL 2
- 12. เปิดใช้งาน Linux
- 13. Update Package ภายใน Ubuntu
- 14. การทำงานร่วมกันระหว่าง Windows และ Linux
- 15. การเข้าถึง Drive C: จาก Linux
- 16. ตำแหน่งเก็บ Project ที่เหมาะสม
- 17. ใช้งาน Git บน WSL
- 18. ใช้งาน Python
- 19. ใช้งาน Node.js
- 20. ใช้งาน Go
- 21. ใช้งาน Visual Studio Code กับ WSL
- 22. systemd บน WSL
- 23. WSLg: รัน Linux GUI Application
- 24. Networking ระหว่าง Windows และ WSL
- 25. Mirrored Networking
- 26. กำหนด Resource ให้ WSL 2
- 27. ใช้งาน Docker กับ WSL
- 28. ใช้งาน Docker Compose
- 29. ใช้งาน Kubernetes CLI
- 30. GPU Acceleration สำหรับ AI/ML
- 31. คำสั่ง WSL ที่ควรรู้
- 32. Export และ Backup WSL
- 33. Import WSL Distribution
- 34. ลบ Distribution
- 35. WSL 1 กับ WSL 2
- 36. ตัวอย่าง Development Environment
- 37. Workflow ที่แนะนำ
- 38. ปัญหาที่พบบ่อย
- 39. เหมาะกับงานประเภทใด
- 40. สรุป
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 รายการ ได้แก่
- Windows Subsystem for Linux
- 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 แบบเต็มรูปแบบเอง
#อ้างอิง
-
Microsoft Learn — Windows Subsystem for Linux Documentation
https://learn.microsoft.com/windows/wsl/ -
Microsoft Learn — Basic commands for WSL
https://learn.microsoft.com/windows/wsl/basic-commands -
Microsoft Learn — Comparing WSL Versions
https://learn.microsoft.com/windows/wsl/compare-versions -
Microsoft Learn — Set up a WSL development environment
https://learn.microsoft.com/windows/wsl/setup/environment -
Microsoft Learn — Working across Windows and Linux file systems
https://learn.microsoft.com/windows/wsl/filesystems -
Microsoft Learn — Accessing network applications with WSL
https://learn.microsoft.com/windows/wsl/networking -
Microsoft Learn — Use systemd to manage Linux services with WSL
https://learn.microsoft.com/windows/wsl/systemd