Skip to main content

Windows Subsystem for Linux (WSL)

คำอธิบายต่อไปนี้ สำหรับ WSL 2.0 บน Windows 11 ขึ้นไป

ติดตั้ง/เปิดใช้งาน WSL

รันคำสั่งต่อไปนี้ใน PowerShell ด้วยสิทธิของ Administrator

PS> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
PS> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
PS> wsl.exe --update
PS> wsl.exe --set-default-version 2

เวอร์ชั่นของ Linux ที่แต่ละค่าย (เช่น Red Hat, Ubuntu) แจกจ่ายนั้นเรียกว่า ดิสโทร (Distro) ลองดูว่า WSL มีดิสโทรอะไรให้เลือกบ้าง ตัวอย่างนี้จะใช้ Ubuntu 22.04

C:\> wsl.exe --list --online
C:\> wsl.exe --install Ubuntu-22.04

คำสั่งทั่วไปในการจัดการกับ

How WSLdo และI Linux Distro

...?

ดูว่ามีดิสโทรอะไรติดตั้งไปแล้ว wsl.exe -l -v
ถ้าลงไว้หลายดิสโทร, เลือกตัวที่จะเป็นดีฟอลต์ wsl --setdefault Ubuntu-22.04
ปิดการทำงานของดิสโทร (เหมือน shutdown) wsl --terminate Ubuntu-22.04
ลบดิสโทรนั้นออก (ซึ่งจะลบดิสก์ vhdx ด้วย) wsl --unregister Ubuntu-22.04
อยากรู้ path ของดิสโทรที่ติดตั้งไว้แล้ว

PS1> Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object { Get-ItemProperty $_.PSPath } | Select-Object DistributionName, BasePath

ใน WSL, อยากรู้ว่า ip address ของ Windows host$ ping "$(hostname).local"
ใน Windows host อยากรู้ ip address ของ WSLC:\> wsl hostname -I
ไฟล์ virtual disk (*.vhdx) ของดิสโทรอยู่ที่ไหน

ไปที่ %LOCALAPPDATA%\Packages\  มองหาโฟลเดอร์ที่ขึ้นต้นด้วย CanonicalGroupLimited  แล้วเข้าไปในนั้น

ไฟล์จะอยู่ที่ LocalState\ext4.vhdx

 

ต้องการลดขนาดไฟล์ vhdx (เคลมเนื้อที่คืนเมื่อลบไฟล์ใหญ่ๆ ในดิสโทรไปแล้ว)

รันคำสั่ง wsl --shutdown จากนั้นเรียกโปรแกรม diskpart

 

> select vdisk file="<PATH>\ext4.vhdx"
> attach vdisk readonly
> compact vdisk
> detach vdisk
> exit
ต้องการเข้าถึงไฟล์ในไดรฟ์ C:\

cd /mnt/c





สิ่งที่ควรทำเหมือนติดตั้งดิสโทร Ubuntu ใหม่

ไม่ให้ Ubuntu เห็น path ของ Windows

sudo nano /etc/wsl.conf แก้ไขดังนี้ 

[interop] appendWindowsPath=false

เปลี่ยนไปใช้ mirror site ในประเทศไทย

sudo nano /etc/apt/sources.list

เปลี่ยนจาก archive.ubuntu.com ไปเป็น mirror1.totbb.net

ตัวเลือก mirror site อื่นๆ ในไทย ดูได้ที่นี่ 

ตั้งเขตเวลาให้ถูกต้องdate
sudo timedatectl set-timezone "Asia/Bangkok"
ติดตั้งแพกเกจที่จำเป็นต้องใช้
แพกเกจพื้นฐาน
Java development
ติดตั้ง NodeJS และเครื่องมือที่เกี่ยวข้อง (npm, pnpm, yarn)

ห้ามใช้ apt install nodejs เพราะมันเก่ามาก ให้ติดตั้งจาก nvm (ดูหมายเลขเวอร์ชั่นล่าสุดในเว็บไซต์)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

จากนั้น exit จาก Shell แล้วเข้าใหม่

nvm install 24
node -v
nvm current
npm -v
npm uninstall -g yarn pnpm
npm install -g corepack
pnpm -v
yarn -v

 

 

 

ติตดั้ง Bleachbit เพื่อลบไฟล์ไม่จำเป็น
ติดตั้งฟอนต์ภาษาไทย (จากโครงการ Thai Linux)sudo apt install xfonts-thai






สิ่งที่ควรทำเหมือนติดตั้งดิสโทร Ubuntu ใหม่

ไม่ให้ Ubuntu เห็น path ของ Windows

เปลี่ยน root ของ mount drive

เปลี่ยนไปใช้ mirror site ใน apt

ตั้งเขตเวลาให้ถูกต้อง

ติดตั้งแพกเกจที่จำเป็น

แพกเกจพื้นฐาน

Java development

Javascript Development

ติตดั้ง bleachbit (เพื่อลบไฟล์ไม่จำเป็น)

ติดตั้งฟอนต์ภาษาไทย