8 คะแนน โดย GN⁺ 2025-03-31 | 10 ความคิดเห็น | แชร์ทาง WhatsApp

> "เราต้องทำให้ลินุกซ์ดิสทริบิวชันกลายเป็นเหมือน Windows"

  • บทความนี้เสนอให้สร้าง ลินุกซ์ดิสทริบิวชันที่สามารถรันไฟล์ปฏิบัติการของ Windows ได้ผ่าน Wine เป็นค่าเริ่มต้น เพื่อแก้ปัญหาด้านการพกพาและวิธีการแจกจ่ายซอฟต์แวร์ของ Linux แบบเดิม
  • ด้วยแนวทางนี้ ผู้ใช้ Windows จะสามารถย้ายมาใช้ Linux ได้อย่างง่ายดายแทบไม่ต้องฝึกใหม่ และยังช่วยแก้ปัญหาความเข้ากันได้ที่เรื้อรังของ Linux ไปพร้อมกัน

ความไม่เสถียรของสภาพแวดล้อม Linux

  • บน Windows ไฟล์ .exe ที่มีอายุ 20 ปียังรันได้ แต่บน Linux ไบนารีที่สร้างไว้เมื่อปีที่แล้วก็อาจรันไม่ได้แล้ว
  • สาเหตุคือความต่างของเวอร์ชันไลบรารีและการอัปเดตใน Linux ทำให้ไฟล์ปฏิบัติการเดียวกันไม่สามารถทำงานได้บนดิสทริบิวชันที่หลากหลาย
  • system call ของ Linux มีความเสถียร แต่ C library (libc) ที่อยู่ชั้นบนกลับไม่เสถียร และพื้นที่ผู้ใช้ส่วนใหญ่ก็พึ่งพาสิ่งนี้

ปัญหาการแจกจ่ายไบนารีบน Linux

  • บน Linux มีวิธีหลักในการแจกจ่ายไฟล์ปฏิบัติการอยู่ มากถึง 4 แบบ และแต่ละแบบก็มีปัญหาของตัวเอง
    • ไบนารีดิบ: ใช้งานไม่ได้ในสภาพแวดล้อมส่วนใหญ่
    • AppImage: รวม dependency ทั้งหมดไว้ แต่ก็ยังไม่แน่ชัดว่าจะเก็บรักษาให้รันได้สมบูรณ์ในระยะยาวหรือไม่
    • Flatpak: ให้ sandbox แยกสำหรับแต่ละแอป
    • Snap: ตัวจัดการแพ็กเกจแบบ sandbox อีกแบบหนึ่ง
  • ทั้งหมดนี้มีวิธีติดตั้ง อัปเดต และลบที่แตกต่างกัน และยังสามารถอยู่ร่วมกันได้พร้อมกัน
  • ส่วนใหญ่ไม่เหมาะกับการเก็บรักษาแอปในระยะยาวและการนำกลับมารันซ้ำ โดย โอกาสที่จะยังรันได้ในอีก 20 ปีแทบไม่มี

ทำไม Win32 จึงเป็นคำตอบ

  • Win32 API ของ Windows ถูกมองว่าเป็น ABI (Application Binary Interface) ที่เสถียรเพียงหนึ่งเดียวบน Linux
  • Windows รักษาเสถียรภาพของ API ไว้ได้ด้วยการเรียกผ่าน dynamic library แทนการเรียก system call โดยตรง
  • ด้วยโครงสร้างนี้ Microsoft จึงสามารถเปลี่ยนแปลงเคอร์เนลภายในได้โดยที่ผู้ใช้ยังคงเห็นอินเทอร์เฟซแบบเดิม
  • ในทางกลับกัน Linux เรียก system call โดยตรง และไลบรารีก็ไม่เสถียร ทำให้ปัญหาความเข้ากันได้ยังคงอยู่
  • Wine นำโครงสร้างแบบ Win32 นี้มาใช้งาน ทำให้สามารถรันแอปได้แม้กระทั่งจากยุค Windows 95 ในทศวรรษ 1990
  • โดยเฉพาะเมื่อใช้เฉพาะแอปที่พัฒนาบนพื้นฐาน Win32 ความต่างด้านความเข้ากันได้ระหว่าง Wine กับ Windows ก็แทบไม่มี

แนวคิดลินุกซ์ดิสทริบิวชันแบบใหม่

  • มีข้อเสนอให้สร้างลินุกซ์ดิสทริบิวชันที่มีเดสก์ท็อปสภาพแวดล้อมคล้าย Windows
  • ดิสทริบิวชันนี้จะติดตั้ง Wine มาเป็นค่าเริ่มต้น และเพิ่ม kernel patch ขนาดเล็กเพื่อให้ตรวจจับและรันไฟล์ปฏิบัติการของ Windows ได้อัตโนมัติ
  • ตั้งค่า Wine environment (prefix) แยกตามผู้ใช้ พร้อมระบบไฟล์และ GUI ในสไตล์ Windows
  • สภาพแวดล้อม Linux เดิมยังคงอยู่เบื้องหลัง และผู้ใช้ขั้นสูงยังสามารถเข้าถึงได้

การรองรับหลายแพลตฟอร์มอย่างแท้จริง

  • Wine ไม่ได้รันได้แค่บน Linux แต่ยังรวมถึง FreeBSD, macOS, Android และ OS อื่น ๆ
  • หากแจกจ่ายทุกแอปเป็นแอป Win32 เพียงรูปแบบเดียว ก็จะสามารถรันได้บนหลายแพลตฟอร์มโดยไม่ต้องพอร์ตแยก
  • เป็นโครงสร้างที่ทำให้แอปเดียวรองรับระบบปฏิบัติการหลายแบบได้

ภัยคุกคามในอนาคต

  • macOS และ Windows กำลังพัฒนาไปในทิศทางที่ปิดมากขึ้นเรื่อย ๆ และกำลังพรากการควบคุมออกจากมือผู้ใช้
    • Windows กำลังเพิ่มฟีเจอร์แคปหน้าจออัตโนมัติและการวิเคราะห์ด้วย AI
    • macOS จำกัดให้รันได้เฉพาะแอปที่ได้รับอนุมัติผ่าน Gatekeeper
  • ทั้งสอง OS กำลังเฝ้าติดตามกิจกรรมของผู้ใช้ และถึงขั้นเตรียมฟังก์ชันค้นหาไฟล์ผิดกฎหมายและรายงานได้ด้วย
  • Microsoft กำลังทำให้การใช้ Windows โดยไม่มีบัญชีออนไลน์ยากขึ้นเรื่อย ๆ
  • ด้วยเหตุนี้ หากบัญชีถูกระงับ ก็อาจเกิดสถานการณ์ที่ไม่สามารถใช้คอมพิวเตอร์ได้เลย

> กระแสเหล่านี้ถูกตีความว่าไม่ได้เกิดจากเจตนาร้ายโดยตรง แต่เป็นปัญหาที่เกิดจากแรงกดดันทางเศรษฐกิจและการเมือง

เหตุผลที่ต้องห่อหุ้ม Linux ให้เป็น Windows

  • ลินุกซ์ดิสทริบิวชันรูปแบบใหม่นี้ช่วยแก้ปัญหาด้านการพกพา และมอบสภาพแวดล้อมการย้ายระบบที่คุ้นเคยสำหรับผู้ใช้ Windows
  • ในช่วงเวลาที่การอัปเกรดไป Windows 11 กำลังถูกบังคับ ก็สามารถนำเสนอทางเลือกที่ย้ายมาใช้ได้ง่าย
  • ผู้เขียนมองว่านี่คือจังหวะเหมาะสมในการออกแบบลินุกซ์ดิสทริบิวชันที่ช่วยทวงคืนอธิปไตยของผู้ใช้

10 ความคิดเห็น

 
roxie 2025-04-02

ระบบนิเวศที่อยู่ยืนยงมา 20 ปีนั้นชวนให้พยักหน้าเห็นด้วย แต่ทำไมปลายทางถึงเป็น wine ล่ะ..

 
yfkim97 2025-04-02

ดูเหมือนว่าจะใช้ Mac OS ต่อไปไม่ไหวแล้ว

 
labeldock 2025-04-01

ไม่ได้อยากมองแบบวิจารณ์หรอกนะ แต่ในฐานะคนที่เคยใช้หลายระบบปฏิบัติการแล้ว รู้สึกไม่ค่อยเห็นด้วยเท่าไร ตอนนี้เครื่องมือ GUI ทั่วไปส่วนใหญ่ก็ทำผ่านเว็บได้ และถ้าต้องการเดสก์ท็อปดี ๆ ก็คงไปใช้บน Windows ที่ UI สวยงามจะดีกว่า แถมการรองรับไดรเวอร์ก็ยังดีกว่า Linux มากด้วย

 
alucardkang 2025-03-31

มันควรจะเป็น Steam สิ...

 
prunusnira 2025-03-31

Tmax Window... Lindows/Linspire... ReactOS... อึก ปวดหัว...
ดูเหมือนว่า Valve Proton จะทำเรื่องใหญ่ได้จริง ๆ นะ

 
aer0700 2025-03-31

เป็นข้อเสนอที่แปลกใหม่ดีนะ

 
kwj9211 2025-03-31

แค่ปรับแต่งให้รันเกม / ซอฟต์แวร์ระดับท็อปได้ดี ๆ น่าจะดีกว่าไม่ใช่เหรอ

...ถ้าคิดแบบนั้นก็คงไม่ได้นะครับ 555

 
kandk 2025-03-31

หวังว่ายุคที่เล่นเกมได้โดยไม่ต้องมีพีซี Windows 11 ขึ้นไปจะมาถึงสักทีนะ T_T

 
GN⁺ 2025-03-31
ความเห็นจาก Hacker News
  • มีความเห็นว่าควรสร้างดิสโทร Linux ที่ใช้ Wine เพื่อรันไบนารีของ Windows ได้เป็นค่าเริ่มต้น

    • บน Debian สามารถติดตั้งได้ง่ายด้วยคำสั่ง sudo apt install wine-binfmt
    • ยังสามารถใช้งานได้ด้วยการแก้ไขไฟล์คอนฟิกด้วยวิธีอื่นเช่นกัน
  • บน Windows ไฟล์ exe ที่มีอายุ 20 ปีก็ยังรันได้อยู่ แต่บน Linux แม้แต่ไบนารีที่มีอายุ 1 ปีก็อาจรันไม่ได้เพราะการอัปเดต

    • Windows จะแพ็ก dynamic dependency ทั้งหมดมาพร้อมกันตอนติดตั้งแอป ขณะที่ Linux แชร์ dynamic dependency ระหว่างแอปต่าง ๆ
    • หาก dependency เปลี่ยน แอปอาจใช้งานไม่ได้
    • วิธีแก้คือแจกจ่ายแบบเดียวกับ Windows หรือลิงก์แบบสแตติก
  • ไม่คิดว่าจำเป็นต้องมีดิสโทรใหม่

    • แอป Windows ส่วนใหญ่ทำงานผ่าน Wine ได้ แต่การแฮ็กเพื่อให้แอปหนึ่งทำงาน อาจทำให้อีกแอปพังได้
    • ผู้ใช้แต่ละคนต้องปรับแต่งค่าด้วยตัวเอง และสิ่งที่ทำงานบนคอมพิวเตอร์ของคนหนึ่งอาจไม่ทำงานบนเครื่องของอีกคน
    • วิธีแก้ที่ง่ายที่สุดคือแจกจ่ายคอนเทนเนอร์ที่มี Wine รวมอยู่แล้ว เพื่อให้ทุกคนได้รับอาร์ติแฟกต์เดียวกันและทำงานได้เสมอ
    • แม้จะเปลืองพื้นที่ แต่จำเป็นต้องมีวิธีทำให้ Wine เบาลงเพื่อใช้กับคอนเทนเนอร์
    • ใบอนุญาตและซอฟต์แวร์แอนติแพตเทิร์นคืออุปสรรคเดียวของระบบนี้
  • Zorin OS รองรับ Wine สำหรับไฟล์ .exe แทบจะเป็นค่าเริ่มต้นอยู่แล้ว และ Steam OS/Proton ก็มีแนวทางอย่างเป็นทางการว่าไม่ต้องทำ Linux port สำหรับเกมใหม่ แต่ให้ปรับแต่งให้เหมาะกับ Proton แทน

  • โดยทั่วไปดิสโทร Linux จะลิงก์ไฟล์ปฏิบัติการแบบไดนามิกและไม่เก็บไลบรารีเวอร์ชันเก่าไว้

    • Windows เก็บไฟล์ปฏิบัติการเวอร์ชันเก่าไว้เพราะไม่มี package manager
    • แม้จะมี Windows Store และเครื่องมือ CLI รุ่นใหม่ แต่ตามธรรมเนียมแล้วการติดตั้งแอปพลิเคชันบน Windows ทำผ่านการดาวน์โหลดและติดตั้งด้วยตนเอง
    • บน Linux ก็ทำแบบเดียวกันได้ แต่ package manager ของดิสโทร Linux โดยทั่วไปมักยอดเยี่ยมมาก
  • system call ของ Linux มีความเสถียรมาก แต่ C library ที่อยู่เหนือขึ้นไปไม่เป็นเช่นนั้น

    • Windows ก็มีปัญหาเดียวกัน และแจกจ่าย libc เป็นส่วนหนึ่งของ Visual C++ runtime
    • Windows จะคงความเข้ากันได้ย้อนหลังของ libc ไว้จนกว่าจะออก Visual Studio เวอร์ชันใหม่
  • ฟังดูเหมือนคนที่ต้องการ Lindows/Linspire

  • ถ้า Windows ABI เสถียรมากจริง ทำไมถึงมีคอมพิวเตอร์ที่ใช้ Win95 หรือ NT ซึ่งไม่มีใครกล้าแตะเพราะกลัวว่าซอฟต์แวร์บางตัวจะหยุดทำงาน

    • พบคอมพิวเตอร์แบบนี้ได้มากในสภาพแวดล้อมอุตสาหกรรม ห้องสมุดสาธารณะ ฐานข้อมูลขององค์กร เป็นต้น
  • ไม่จำเป็นต้องแพตช์เคอร์เนลเพื่อรันไฟล์ exe เพราะ binfmt_misc จัดการเรื่องนี้ได้

    • wine-binfmt จะรันไฟล์ PE ผ่าน Wine โดยอัตโนมัติ