โปรเจกต์นี้รวบรวม Script สำหรับการติดตั้งและจำลองระบบปฏิบัติการ (OS) ทั้ง Windows และ Linux ผ่าน Docker Container บน GitHub Codespaces ช่วยให้คุณสามารถเรียกใช้งาน OS ผ่านเว็บเบราว์เซอร์ได้จากทุกที่ ไม่ว่าจะเป็นบนคอมพิวเตอร์หรือโทรศัพท์มือถือ
ก่อนเริ่มใช้งาน แนะนำให้ตั้งค่า Github Codespaces ดังนี้เพื่อให้ระบบทำงานได้อย่างเสถียร:
- สร้าง Repository
- Machine Type: แนะนำให้เลือกสเปกขั้นต่ำ 4 Core, 16 GB RAM (สูงสุด 32 GB)
- เหตุผล: เพื่อความลื่นไหลในการใช้งาน OS และไม่กินโควต้า CPU มากเกินความจำเป็น
เลือกคำสั่งตามระบบปฏิบัติการที่คุณต้องการติดตั้ง:
mkdir user && cd user
wget -O windows.yml https://raw.githubusercontent.com/MCFirsting/OS-Docker-Install-TH/refs/heads/main/windows.yml
sudo docker-compose -f windows.yml upmkdir user && cd user
wget -O linux.yml https://raw.githubusercontent.com/MCFirsting/OS-Docker-Install-TH/refs/heads/main/linux.yml
sudo docker-compose -f linux.yml upNote: เมื่อรันคำสั่งเสร็จสิ้น ให้ไปที่แท็บ Ports แล้วเลือกพอร์ต 8006 เพื่อเปิดหน้าจอ Desktop ผ่านเบราว์เซอร์
- Web Browser: เข้าผ่านพอร์ต 8006 (แนะนำสำหรับการตั้งค่าเบื้องต้น)
- Remote Desktop (RDP): หากต้องการประสิทธิภาพที่ดีขึ้น (โดยเฉพาะบนมือถือ) แนะนำให้ใช้แอปพลิเคชัน Remote Desktop เชื่อมต่อเข้ามายัง Codespace
หากต้องการหยุดพักหรือเริ่มใช้งานใหม่ ให้ใช้คำสั่งดังนี้ (รันในโฟลเดอร์ user):
| การทำงาน | คำสั่ง Windows (Bash) | คำสั่ง Linux (Bash) |
|---|---|---|
| 🟢 เริ่ม (Start) | cd user && sudo docker-compose -f windows.yml start | cd user && sudo docker-compose -f linux.yml start |
| 🔴 หยุด (Stop) | cd user && sudo docker-compose -f windows.yml stop | cd user && sudo docker-compose -f linux.yml stop |
| 🔄 รีสตาร์ท (Restart) | cd user && sudo docker-compose -f windows.yml restart | cd user && sudo docker-compose -f linux.yml restart |
คุณสามารถแก้ไขไฟล์ .yml เพื่อปรับแต่งการใช้งานได้ ดังนี้:
หลังจากการติดตั้งเสร็จสิ้น จะมีโฟลเดอร์ชื่อ Shared ปรากฏบนหน้าจอ Desktop ของคุณ ซึ่งสามารถใช้สำหรับแลกเปลี่ยนไฟล์กับเครื่อง Host ได้
หากต้องการกำหนดโฟลเดอร์บนเครื่อง Host เพื่อใช้งานในส่วนนี้ ให้เพิ่ม bind mount ต่อไปนี้ลงในไฟล์ compose ของคุณ:
volumes:
- ./example:/sharedให้เปลี่ยน path ตัวอย่าง ./example เป็น path ของโฟลเดอร์ที่คุณต้องการแชร์ ซึ่งโฟลเดอร์นั้นจะไปปรากฏให้เห็นในชื่อ Shared
โดยค่าเริ่มต้น ระบบจะสร้างผู้ใช้ชื่อ Docker และรหัสผ่าน admin มาให้
หากคุณต้องการเปลี่ยนชื่อผู้ใช้และรหัสผ่านระหว่างการติดตั้ง สามารถกำหนดค่าในไฟล์ compose ได้ดังนี้:
environment:
USERNAME: "bill"
PASSWORD: "gates"โดยค่าเริ่มต้น ระบบจะดาวน์โหลด Windows เวอร์ชันภาษาอังกฤษ
แต่คุณสามารถระบุภาษาอื่นที่ต้องการดาวน์โหลดได้ โดยเพิ่มตัวแปร environment ชื่อ LANGUAGE ลงในไฟล์ compose ของคุณ:
environment:
LANGUAGE: "French"หากคุณต้องการใช้รูปแบบแป้นพิมพ์ (Keyboard Layout) หรือการตั้งค่าท้องถิ่น (Locale) ที่ไม่ใช่ค่าเริ่มต้นของภาษาที่คุณเลือก คุณสามารถเพิ่มตัวแปร KEYBOARD และ REGION ได้ดังนี้:
environment:
REGION: "en-US"
KEYBOARD: "en-US"หากต้องการดาวน์โหลดไฟล์ ISO Image นอกเหนือจากที่มีให้ (Unsupported) ให้ระบุ URL ของไฟล์นั้นลงในตัวแปร environment ที่ชื่อ VERSION
environment:
VERSION: "https://example.com/win.iso"สามารถระบุ URL ของไฟล์ ISO ได้ (เช่นจาก Internet Archive)
หากต้องการรันสคริปต์ของคุณเองหลังจากติดตั้งเสร็จสิ้น ให้สร้างไฟล์ชื่อ install.bat และนำไปวางไว้ในโฟลเดอร์รวมกับไฟล์อื่นๆ ที่จำเป็น (เช่น โปรแกรมที่ต้องการติดตั้งเพิ่มเติม)
จากนั้นให้ทำการ Bind mount โฟลเดอร์ดังกล่าวลงในไฟล์ compose ดังนี้:
volumes:
- ./example:/oemโฟลเดอร์ตัวอย่าง ./example จะถูกคัดลอกไปยัง C:\OEM และไฟล์ install.bat ที่อยู่ภายในจะถูกเรียกใช้งาน (Execute) ในขั้นตอนสุดท้ายของการติดตั้งอัตโนมัติ
ถาม: สามารถเล่นเกมหรือลงโปรแกรมหนักๆได้ไหม?
- ตอบ: ได้เฉพาะบางโปรแกรมที่ไม่กินทรัพยากรมาก เนื่องจากไม่มี GPU แยก หากต้องการเล่นเกมแนะนำให้ใช้แอปพลิเคชันช่วย เช่น Winlator (สำหรับบางอุปกรณ์) แต่ประสิทธิภาพอาจไม่สูงมาก
ถาม: ติดตั้ง Windows แล้วทำไมไม่มีเสียง?
- ตอบ: การเชื่อมต่อแบบ RDP มักไม่มี Driver เสียงติดมาด้วย แนะนำให้ติดตั้ง VB-Cable และ Restart เครื่อง 1 ครั้ง ส่วนใหญ่เสียงจะทำงานผ่าน RDP ได้เลยโดยไม่ต้องติดตั้งเพิ่ม
ถาม: ระยะเวลาการใช้งานจำกัดหรือไม่?
- ตอบ: Codespaces มีโควต้าจำกัด (ปกติประมาณ 120 Core-hours หรือ 60 ชม. สำหรับเครื่อง 2 Core) ควรใช้งานประมาณวันละ 2 ชั่วโมง
- ข้อควรจำ: ต้องหยุดการทำงาน Codespace ทุกครั้งหลังเลิกใช้งาน หากโควต้าหมดจะต้องรอรอบบิลเดือนถัดไปจึงจะใช้งานได้อีกครั้ง
ข้อมูลใน Container อาจสูญหายได้หากเกิดข้อผิดพลาดหรือ Codespace ถูกลบ (Codespace ที่ไม่ได้ใช้งานนาน 30 วันจะถูกลบอัตโนมัติ)
- ห้าม เก็บข้อมูลสำคัญ รูปภาพ หรือวิดีโอส่วนตัวไว้ใน Container เพียงอย่างเดียว
- แนะนำ ให้สำรองข้อมูลผ่าน Cloud Storage สม่ำเสมอ
ใช่ครับ โปรเจกต์ต้นฉบับประกอบด้วยโค้ดที่เป็น Open Source ทั้งหมด และไม่มีการแจกจ่ายเนื้อหาที่มีลิขสิทธิ์ใดๆ ดังนั้นภายใต้ข้อกฎหมายที่เกี่ยวข้องทั้งหมด โปรเจกต์ต้นฉบับจึงถือว่าถูกกฎหมาย และทางเรานำมาเผยแพร่บทความจากโปรเจกต์ต้นฉบับเป็นภาษาไทยเท่านั้น ไม่มีส่วนเกี่ยวข้องในการทำงานของระบบปฏิบัติการต่างๆ