คู่มือ

WSL (Windows Subsystem for Linux) คืออะไร: ติดตั้งและตั้งค่า Linux บน Windows

อัปเดต: · Skillaria.Top

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 1WSL 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 ไม่สามารถเริ่มเครื่องเสมือนได้ ให้ตรวจสอบตามลำดับนี้

  1. เปิดการจำลองฮาร์ดแวร์ (virtualization) ใน BIOS/UEFI แล้วหรือยัง ได้แก่ Intel VT-x (Intel Virtualization Technology) หรือ AMD-V (SVM Mode) สถานะจะแสดงในตัวจัดการงาน → “ประสิทธิภาพ” → CPU → “การจำลองเสมือน: เปิดใช้งาน”
  2. เปิดใช้งานคอมโพเนนต์ “Virtual Machine Platform” แล้วหรือยัง
  3. ไม่ได้ปิด 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: с нуля до уверенного администрирования”

ไปที่คอร์ส