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 do I ...?

ดูว่ามีดิสโทรอะไรติดตั้งไปแล้ว 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 ของ WSL C:\> 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"
ติดตั้งแพกเกจที่จำเป็นต้องใช้ sudo apt install build-essential lsb-release
Python development

Ubuntu 22.04 ใช้ Python 3.10  แนะนำให้ติดตั้งใหม่ๆ ด้วย uv

 

curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
uv self update
uv python list
uv python install 3.9 3.11
uv python pin 3.11
uv python dir
Java development sudo apt install openjdk-8-jdk-headless
sudo apt install openjdk-11-jdk-headless
ติดตั้ง 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 เพื่อลบไฟล์ไม่จำเป็น

sudo apt install bleachbit
bleachbit --list

รายการสิ่งที่ลบได้อย่างปลอดภัย เช่น แคช, ไฟล์ภาษาอื่นๆ ที่ไม่ใช่อังกฤษ ฯลฯ

เราควรลบทั้งไฟล์ของยูสเซอร์และของ root

bleachbit --preview system.cache
bleachbit --clean system.cache
bleachbit --clean system.localizations

sudo bleachbit --preview system.cache
sudo bleachbit --clean system.cache

ติดตั้งฟอนต์ภาษาไทย (จากโครงการ Thai Linux) sudo apt install xfonts-thai