WSL (Windows Subsystem for Linux) คืออะไร: ติดตั้งและตั้งค่า Linux บน Windows
WSL (Windows Subsystem for Linux) เป็นส่วนประกอบในตัวของ Windows 10 และ 11 ที่รัน Linux distro จริงได้โดยไม่ต้องใช้เครื่องเสมือนแยก ติดตั้งได้ด้วยคำสั่งเดียว wsl --install ใน PowerShell ที่รันในฐานะผู้ดูแลระบบ ค่าเริ่มต้นจะติดตั้ง WSL 2 พร้อม Ubuntu ซึ่งรันเคอร์เนล Linux จริงในเครื่องเสมือนขนาดเบา
WSL (Windows Subsystem for Linux) เป็นส่วนประกอบของ Windows 10 และ 11 ที่ช่วยให้รัน Linux distro ได้โดยตรงภายใน Windows ทั้ง bash, apt, ssh, grep, Docker และเครื่องมือบรรทัดคำสั่งทุกชนิดใช้งานได้ ไม่ต้องติดตั้ง VirtualBox หรือแบ่งฮาร์ดดิสก์สำหรับระบบที่สอง Ubuntu เปิดขึ้นเป็นหน้าต่างเทอร์มินัลปกติในเวลาไม่กี่วินาที บทความนี้จะอธิบายความต่างระหว่าง WSL 1 กับ WSL 2 ขั้นตอนการติดตั้ง การทำงานกับไฟล์ VS Code และโปรแกรมกราฟิก รวมถึงวิธีแก้ข้อผิดพลาดที่พบบ่อย
WSL คืออะไรใน Linux และ Windows
กล่าวสั้น ๆ WSL คือวิธีที่ทำให้ได้สภาพแวดล้อม Linux เต็มรูปแบบสำหรับการพัฒนาและการเรียนรู้ โดยไม่ต้องออกจาก Windows คุณติดตั้ง distro (Ubuntu, Debian, openSUSE, Kali, AlmaLinux และอื่น ๆ) จากบรรทัดคำสั่งหรือ Microsoft Store แล้วทำงานในนั้นเหมือนบนเซิร์ฟเวอร์ ทั้งผู้ใช้ สิทธิ์การเข้าถึง แพ็กเกจ และบริการ
สิ่งที่ WSL ไม่ได้ทำคือ มันไม่ใช่ตัวจำลองคำสั่งอย่าง Cygwin และไม่ใช่ชุดยูทิลิตี้ที่ถูกพอร์ตมาใหม่ ใน WSL 2 รันเคอร์เนล Linux จริงที่ Microsoft คอมไพล์ไว้ ดังนั้นไบนารี Linux รันได้โดยไม่ต้องคอมไพล์ใหม่ และทักษะที่ได้จาก WSL สามารถนำไปใช้กับเซิร์ฟเวอร์จริงได้โดยตรง
การใช้งานทั่วไปของระบบย่อยนี้ ได้แก่
- เรียนรู้ Linux และบรรทัดคำสั่งโดยไม่ต้องมีเครื่องแยก
- พัฒนาเว็บ เมื่อระบบจริงรันบน Linux (Python, Node.js, PHP, Go)
- Docker Desktop ซึ่งใช้ WSL 2 เป็นเอนจิน
- เชื่อมต่อเซิร์ฟเวอร์ผ่าน SSH เขียนสคริปต์ bash และใช้ git ในสภาพแวดล้อมที่คุ้นเคย
ความต่างระหว่าง WSL 1 และ WSL 2
มีสถาปัตยกรรมสองแบบ WSL 1 แปลงการเรียกระบบ (system call) ของ Linux ให้เป็นการเรียกเคอร์เนลของ Windows จึงไม่มีเคอร์เนล Linux แยกต่างหาก ส่วน WSL 2 รันเคอร์เนล Linux จริงในเครื่องเสมือนขนาดเบาบน Hyper-V ซึ่งเริ่มทำงานได้ในไม่กี่วินาทีและจัดการหน่วยความจำเองได้
| พารามิเตอร์ | WSL 1 | WSL 2 |
|---|---|---|
| เคอร์เนล | ไม่มี แปลงการเรียกระบบ | เคอร์เนล Linux จริง |
| ความเข้ากันได้ของการเรียกระบบ | บางส่วน | เต็มรูปแบบ |
| Docker, systemd | ไม่รองรับ | รองรับ |
ความเร็วในไฟล์ Linux (~/) | ช้ากว่า | เร็ว |
ความเร็วในไฟล์ Windows (/mnt/c) | เร็ว | ช้าลงอย่างเห็นได้ชัด |
| ต้องใช้การจำลองเสมือน (virtualization) | ไม่ต้อง | ต้อง |
| เครือข่าย | ใช้ร่วมกับ Windows | เครือข่ายเสมือนของตัวเอง (NAT เป็นค่าเริ่มต้น) |
สำหรับเกือบทุกสถานการณ์ให้เลือก WSL 2 ซึ่งเป็นค่าเริ่มต้นอยู่แล้ว WSL 1 มีประโยชน์เมื่อไม่สามารถเปิดการจำลองเสมือนได้ (เช่น Windows ทำงานอยู่ในเครื่องเสมือนที่ไม่รองรับการจำลองซ้อน) หรือโปรเจกต์ต้องอยู่บนดิสก์ของ Windows และถูกเข้าถึงบ่อย ๆ
วิธีติดตั้ง WSL บน Windows 10 และ 11
บน Windows 11 และ Windows 10 เวอร์ชัน 2004 ขึ้นไป (build 19041 ขึ้นไป) การติดตั้งทำได้ด้วยคำสั่งเดียว เปิด PowerShell หรือ “Terminal” ในฐานะผู้ดูแลระบบ แล้วรัน:
wsl --install
คำสั่งนี้เปิดใช้งานส่วนประกอบของ Windows ที่จำเป็น ดาวน์โหลดเคอร์เนล WSL 2 และติดตั้ง Ubuntu หลังรีบูต หน้าต่าง distro จะเปิดขึ้น ให้ตั้งชื่อผู้ใช้และรหัสผ่าน Linux ซึ่งไม่เกี่ยวข้องกับบัญชี Windows รหัสผ่านนี้จะใช้กับ sudo:
Enter new UNIX username: alex
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
หลังจากนั้นให้อัปเดตแพ็กเกจทันที เหมือนกับเซิร์ฟเวอร์ใหม่ทั่วไป:
sudo apt update && sudo apt upgrade -y
การเลือก distro
ค่าเริ่มต้นคือ Ubuntu แต่คุณเลือก distro อื่นได้ ดูรายการที่มีให้ใช้งาน:
wsl --list --online
ติดตั้ง distro ตามชื่อที่อยู่ในรายการ:
wsl --install -d Debian
หาก WSL ติดตั้งอยู่แล้ว คำสั่งนี้จะเพิ่มเฉพาะ distro ใหม่ คุณสามารถมีหลายระบบพร้อมกัน เช่น Ubuntu สำหรับงานและ Kali สำหรับการทดลอง
ตรวจสอบเวอร์ชัน: wsl -l -v
ดู distro ที่ติดตั้งแล้ว สถานะ และเวอร์ชันของ WSL:
wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
Debian Stopped 2
เครื่องหมายดอกจันแสดง distro เริ่มต้น ซึ่งจะถูกเปิดเมื่อพิมพ์ wsl โดยไม่มีพารามิเตอร์ เปลี่ยนค่าเริ่มต้นได้ด้วย wsl --set-default Debian
การเปลี่ยน WSL 1 เป็น WSL 2
กำหนดเวอร์ชันสำหรับการติดตั้งใหม่:
wsl --set-default-version 2
distro ที่ติดตั้งอยู่แล้วต้องแปลงแยก (ข้อมูลยังอยู่ครบ แต่อาจใช้เวลาหลายนาที):
wsl --set-version Ubuntu 2
การแปลงกลับทำได้ด้วย wsl --set-version Ubuntu 1
คำสั่งจัดการ WSL ที่มีประโยชน์
| คำสั่ง | ทำอะไร |
|---|---|
wsl | เปิด distro เริ่มต้น |
wsl -d Debian | เปิด distro ที่ระบุ |
wsl --shutdown | หยุด distro ทั้งหมดและเครื่องเสมือน WSL 2 |
wsl --terminate Ubuntu | หยุด distro หนึ่งตัว |
wsl --update | อัปเดต WSL และเคอร์เนล |
wsl --status | เวอร์ชันเริ่มต้นและสถานะโดยรวม |
wsl --export Ubuntu ubuntu.tar | สำรอง distro เป็นไฟล์ archive |
wsl --import Ubuntu2 D:\wsl\u2 ubuntu.tar | กู้คืนหรือคัดลอก distro |
wsl --unregister Ubuntu | ลบ distro พร้อมข้อมูลทั้งหมด |
ระวังคำสั่ง --unregister ให้มาก ไฟล์ทั้งหมดใน distro จะถูกลบโดยไม่ผ่านถังขยะ ก่อนรันคำสั่งนี้ให้ทำ --export สำรองไว้ก่อนเสมอ
การย้ายไฟล์ระหว่าง Windows และ Linux
ดิสก์ของ Windows จะถูกเมานต์ใน WSL อัตโนมัติที่โฟลเดอร์ /mnt ดิสก์ C: คือ /mnt/c และดิสก์ D: คือ /mnt/d
cd /mnt/c/Users/alex/Downloads
ls -l
cp report.csv ~/projects/
ในทิศทางกลับกัน ไฟล์ Linux มองเห็นได้ใน File Explorer ผ่านเส้นทางเครือข่าย \\wsl$\Ubuntu (ใน Windows 11 ใช้ \\wsl.localhost\Ubuntu ได้ด้วย) และในส่วน “Linux” ของแถบด้านข้าง หากต้องการเปิดโฟลเดอร์ Linux ปัจจุบันใน File Explorer อย่างรวดเร็ว:
explorer.exe .
จาก WSL สามารถเรียกโปรแกรม Windows ได้ (notepad.exe, code) และจาก PowerShell สามารถรันคำสั่ง Linux ได้โดยเพิ่มคำนำหน้า: wsl ls -la สำหรับแปลงเส้นทางระหว่างสองระบบ ใช้ยูทิลิตี้ wslpath:
wslpath 'C:\Users\alex'
/mnt/c/Users/alex
กฎสำคัญเรื่องประสิทธิภาพของ WSL 2 คือ ควรเก็บโปรเจกต์ไว้ในระบบไฟล์ Linux (~/projects) ไม่ใช่ใน /mnt/c การเข้าถึงดิสก์ Windows ผ่านโปรโตคอลเครือข่าย ทำให้คำสั่งอย่าง git status หรือ npm install ในโปรเจกต์ขนาดใหญ่ช้าลงหลายเท่า
VS Code และ WSL
Visual Studio Code ทำงานกับ WSL เหมือนเครื่องระยะไกล หน้าจอยังอยู่ใน Windows แต่เทอร์มินัล ส่วนขยาย อินเทอร์พรีเตอร์ และดีบักเกอร์ทำงานอยู่ใน Linux ต้องติดตั้งส่วนขยาย WSL ของ Microsoft จากนั้นในเทอร์มินัลของ distro ให้เข้าไปยังโฟลเดอร์โปรเจกต์แล้วรัน:
cd ~/projects/site
code .
ในการเปิดครั้งแรก VS Code จะติดตั้งส่วนประกอบฝั่งเซิร์ฟเวอร์ใน Linux ให้อัตโนมัติ มุมซ้ายล่างจะแสดงตัวบ่งชี้ “WSL: Ubuntu” ซึ่งหมายความว่าทุกอย่างที่คุณรันจากเทอร์มินัลในตัวจะทำงานใน Linux ส่วนขยายอย่าง Python หรือ ESLint ต้องติดตั้ง “ใน WSL” ซึ่ง VS Code จะแสดงปุ่มให้กดเพื่อติดตั้ง
แอปกราฟิกใน WSL (WSLg)
บน Windows 11 และ WSL เวอร์ชันล่าสุดใน Windows 10 มี WSLg ซึ่งรองรับแอป Linux ที่มีกราฟิกได้ทันที โดยไม่ต้องตั้งค่า X server ติดตั้งโปรแกรมตามปกติ หน้าต่างจะปรากฏควบคู่กับหน้าต่าง Windows และมีทางลัดในเมนู Start
sudo apt install gedit -y
gedit ~/.bashrc &
WSLg รองรับ X11 และ Wayland รวมถึงเสียงและคลิปบอร์ด อย่างไรก็ตาม สำหรับการทำงานประจำวันบนเดสก์ท็อป Linux เต็มรูปแบบ มันยังไม่ใช่ตัวแทน WSL เหมาะกับการรันแอปทีละตัว ไม่ใช่เดสก์ท็อป GNOME หรือ KDE ทั้งชุด
systemd และทรัพยากรของ WSL 2
WSL 2 เวอร์ชันล่าสุดรองรับ systemd และในการติดตั้ง Ubuntu ใหม่จะเปิดใช้งานไว้ให้แล้ว หากยังไม่เปิด ให้เพิ่มในไฟล์ /etc/wsl.conf ภายใน distro:
[boot]
systemd=true
จากนั้นรีสตาร์ตระบบย่อยจาก PowerShell ด้วย wsl --shutdown หลังจากนี้ systemctl และบริการอย่าง nginx หรือ PostgreSQL จะทำงานได้
คุณสามารถจำกัดหน่วยความจำและจำนวนโปรเซสเซอร์ของเครื่องเสมือน WSL 2 ได้ในไฟล์ %UserProfile%\.wslconfig บนฝั่ง Windows:
[wsl2]
memory=4GB
processors=2
การตั้งค่าจะมีผลหลังจากรัน wsl --shutdown
ข้อผิดพลาดที่พบบ่อยตอนติดตั้ง WSL
ข้อผิดพลาด 0x80370102
ข้อความเต็มคือ “ไม่สามารถเริ่มเครื่องเสมือนได้ เนื่องจากไม่มีส่วนประกอบที่จำเป็นติดตั้งอยู่” (WslRegisterDistribution failed with error: 0x80370102) สาเหตุเกือบทุกครั้งคือ WSL 2 ไม่สามารถเริ่มเครื่องเสมือนได้ ให้ตรวจสอบตามลำดับนี้
- เปิดการจำลองฮาร์ดแวร์ (virtualization) ใน BIOS/UEFI แล้วหรือยัง ได้แก่ Intel VT-x (Intel Virtualization Technology) หรือ AMD-V (SVM Mode) สถานะจะแสดงในตัวจัดการงาน → “ประสิทธิภาพ” → CPU → “การจำลองเสมือน: เปิดใช้งาน”
- เปิดใช้งานคอมโพเนนต์ “Virtual Machine Platform” แล้วหรือยัง
- ไม่ได้ปิด hypervisor ในตัวโหลดระบบ (bootloader) หรือไม่
เปิดใช้งานส่วนประกอบเหล่านี้จาก PowerShell ที่รันในฐานะผู้ดูแลระบบ:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto
จากนั้นรีบูตเครื่อง หากคุณทำงานอยู่ในเครื่องเสมือนอยู่แล้ว ต้องเปิดการจำลองซ้อน (nested virtualization) บนโฮสต์ หรือใช้ WSL 1 แทน
ปัญหาอื่นที่พบบ่อย
- 0x800701bc: เคอร์เนล WSL 2 ยังไม่ได้อัปเดต ให้รัน
wsl --update - รัน wsl --install แล้วแสดงแค่คู่มือ: WSL ติดตั้งอยู่แล้ว ให้เพิ่ม distro ด้วย
wsl --install -d Ubuntu - ใช้ VPN แล้ว WSL ไม่มีอินเทอร์เน็ต: ไคลเอนต์ VPN ดักเส้นทางของเครือข่ายเสมือน ใน Windows 11 ให้ตั้งค่า
networkingMode=mirroredในส่วน[wsl2]ของไฟล์.wslconfigจะช่วยแก้ปัญหาได้ - WSL กินพื้นที่มาก: ดิสก์เสมือน
ext4.vhdxจะโตขึ้นเรื่อย ๆ แต่ไม่หดเองหลังลบไฟล์ คุณลดขนาดด้วยตนเองได้ หรือย้าย distro ด้วย--export/--import - ลืมรหัสผ่าน Linux: เข้าสู่ระบบด้วยสิทธิ์ root จาก PowerShell ด้วย
wsl -u rootแล้วรันpasswd alex
WSL, เครื่องเสมือน หรือ dual boot
WSL ไม่ใช่วิธีเดียวในการใช้ Linux บนเครื่องที่มี Windows ทางเลือกขึ้นอยู่กับงานที่ทำ
| ทางเลือก | ข้อดี | ข้อเสีย | เมื่อไรควรเลือก |
|---|---|---|---|
| WSL 2 | เปิดใช้งานในไม่กี่วินาที ใช้ไฟล์ร่วมกันได้ รองรับ VS Code และ Docker | ไม่มีเดสก์ท็อปเต็มรูปแบบ มีข้อจำกัดด้านเครือข่ายและดิสก์ | การพัฒนา เรียนคำสั่ง สคริปต์ |
| เครื่องเสมือน (VirtualBox, Hyper-V, VMware) | แยกระบบอย่างสมบูรณ์ มี snapshot เลือก distro และเดสก์ท็อปได้ตามต้องการ มีการ์ดเครือข่ายของตัวเอง | หนักกว่า ทรัพยากรต้องจัดสรรล่วงหน้า | ฝึกซ้อมเซิร์ฟเวอร์ ทดลองเครือข่าย การบูต และการแบ่งพาร์ติชัน |
| Dual boot | ใช้ประสิทธิภาพฮาร์ดแวร์เต็มที่ กราฟิกและไดรเวอร์เป็นของแท้ | ต้องรีบูตเพื่อสลับระบบ และการแบ่งพาร์ติชันมีความเสี่ยง | ใช้ Linux เป็นระบบหลัก เล่นเกมและงานที่ใช้ GPU บน Linux |
หากต้องการเรียน Linux จากศูนย์ WSL มักเพียงพอ เพราะไฟล์ สิทธิ์ โปรเซส แพ็กเกจ สคริปต์ bash และ SSH ทำงานเหมือนกับบนเซิร์ฟเวอร์ เครื่องเสมือนจำเป็นเมื่อถึงส่วนที่ WSL ทำงานต่างออกไป เช่น ตัวโหลดระบบ การแบ่งพาร์ติชันของดิสก์จริง อินเทอร์เฟซเครือข่าย และไฟร์วอลล์ระดับโฮสต์
สรุป
Windows Subsystem for Linux ให้ Linux ของแท้ภายใน Windows ด้วยคำสั่งเดียว wsl --install เลือก WSL 2 ตรวจสอบเวอร์ชันด้วย wsl -l -v เก็บโปรเจกต์ไว้ใน ~/ ไม่ใช่ใน /mnt/c และเชื่อม VS Code ผ่านส่วนขยาย WSL หากติดตั้งแล้วเจอ 0x80370102 ให้เปิดการจำลองเสมือนใน BIOS และเปิดคอมโพเนนต์ “Virtual Machine Platform” เมื่อเตรียมสภาพแวดล้อมนี้เรียบร้อย การฝึกปฏิบัติในคอร์ส Linux ก็พร้อมเริ่มต้น
คำถามที่พบบ่อย
WSL ใช้ฟรีหรือไม่
ฟรี WSL มาพร้อมกับ Windows 10 และ 11 ทุกรุ่น รวมถึงรุ่น Home และ distro Linux ก็แจกจ่ายฟรีเช่นกัน
รัน Docker ใน WSL ได้หรือไม่
ได้ แต่ต้องเป็น WSL 2 คุณติดตั้ง Docker Desktop ที่ใช้เอนจิน WSL 2 หรือจะติดตั้ง Docker Engine ลงใน distro โดยตรงเหมือนบนเซิร์ฟเวอร์ Ubuntu ทั่วไปก็ได้
ไฟล์ของ distro WSL เก็บไว้ที่ไหนจริง ๆ
ใน WSL 2 ไฟล์จะอยู่ในดิสก์เสมือน ext4.vhdx ภายใต้โปรไฟล์ผู้ใช้ Windows ไม่จำเป็นต้องเปิดไฟล์นี้โดยตรง ให้ใช้เส้นทาง \\wsl$\ ใน File Explorer แทน
ถอนการติดตั้ง WSL ทั้งหมดได้อย่างไร
ลบ distro ด้วย <code>wsl --unregister <ชื่อ></code> จากนั้นถอนการติดตั้งแอป “Windows Subsystem for Linux” ในส่วน “Installed apps” และปิดคอมโพเนนต์ของ Windows หากต้องการ
ย้าย WSL ไปยังไดรฟ์อื่นได้หรือไม่
ได้ รัน <code>wsl --export Ubuntu ubuntu.tar</code> จากนั้น <code>wsl --unregister Ubuntu</code> แล้วรัน <code>wsl --import Ubuntu D:\wsl\ubuntu ubuntu.tar</code> เวอร์ชันใหม่ยังมีคำสั่ง <code>wsl --manage Ubuntu --move</code> ด้วย
หัวข้อนี้สอนอย่างละเอียดพร้อมฝึกปฏิบัติในคอร์ส “Linux: с нуля до уверенного администрирования”
ไปที่คอร์ส