8 điểm bởi GN⁺ 2025-03-31 | 10 bình luận | Chia sẻ qua WhatsApp

> "Chúng ta nên làm cho một bản phân phối Linux hoạt động như Windows."

  • Bài viết này đề xuất tạo ra một bản phân phối Linux có thể chạy tệp thực thi Windows qua Wine theo mặc định để giải quyết các vấn đề về tính di động và cách phân phối của Linux hiện nay
  • Nhờ đó, người dùng Windows có thể chuyển sang Linux một cách dễ dàng mà hầu như không cần đào tạo, đồng thời cũng có thể giải quyết luôn các vấn đề tương thích tồn tại lâu nay của Linux

Sự bất ổn của môi trường Linux

  • Trong khi trên Windows, ngay cả tệp .exe 20 năm tuổi vẫn có thể chạy được, thì trên Linux, ngay cả binary từ 1 năm trước cũng có thể không chạy nổi
  • Nguyên nhân là do sự khác biệt về phiên bản thư viện và các bản cập nhật trên Linux khiến cùng một tệp thực thi không thể hoạt động trên nhiều bản phân phối khác nhau
  • System call của Linux thì ổn định, nhưng thư viện C (libc) nằm phía trên lại không ổn định, và phần lớn không gian người dùng phụ thuộc vào nó

Vấn đề phân phối binary trên Linux

  • Trên Linux hiện tồn tại tới bốn cách chính để phân phối tệp thực thi, và cách nào cũng có vấn đề riêng
    • Binary thô: không chạy được trong phần lớn môi trường
    • AppImage: bao gồm mọi phụ thuộc, nhưng khả năng bảo tồn lâu dài hoàn hảo vẫn chưa rõ
    • Flatpak: cung cấp sandbox cho từng ứng dụng
    • Snap: một trình quản lý gói khác dựa trên sandbox
  • Tất cả chúng đều có cách cài đặt, cập nhật và gỡ bỏ khác nhau, và còn có thể cùng tồn tại đồng thời
  • Phần lớn đều không phù hợp cho việc bảo tồn ứng dụng dài hạn và chạy lại trong tương lai, và khả năng còn chạy được sau 20 năm là gần như không có

Vì sao Win32 là lời giải

  • Win32 API của Windows được đánh giá là ABI (Application Binary Interface) ổn định duy nhất trên Linux
  • Windows không gọi system call trực tiếp mà gọi thông qua thư viện động, nhờ đó duy trì được tính ổn định của API
  • Nhờ cấu trúc này, Microsoft có thể thay đổi kernel bên trong mà vẫn cung cấp cùng một giao diện cho người dùng
  • Ngược lại, Linux gọi system call trực tiếp, còn thư viện lại không ổn định nên vấn đề tương thích vẫn tiếp diễn
  • Wine hiện thực cấu trúc Win32 này, nhờ đó có thể chạy cả ứng dụng từ thời Windows 95 trong thập niên 1990
  • Đặc biệt, nếu chỉ dùng các ứng dụng dựa trên Win32 thì hầu như không có khác biệt về tương thích giữa Wine và Windows

Hình dung về một bản phân phối Linux mới

  • Đây là đề xuất tạo ra một bản phân phối Linux có môi trường desktop tương tự Windows
  • Bản phân phối này sẽ cài sẵn Wine theo mặc định, đồng thời dùng một bản vá kernel nhỏ để tự động nhận diện và chạy các tệp thực thi Windows
  • Thiết lập môi trường Wine (prefix) theo từng người dùng, đồng thời cung cấp hệ thống tệp và GUI theo phong cách Windows
  • Môi trường Linux hiện có vẫn được giữ lại ở hậu trường để người dùng nâng cao có thể truy cập

Hỗ trợ đa nền tảng thực sự

  • Wine không chỉ chạy trên Linux mà còn trên nhiều OS khác như FreeBSD, macOS, Android
  • Nếu mọi ứng dụng đều chỉ được phân phối dưới dạng ứng dụng Win32, thì có thể chạy trên nhiều nền tảng mà không cần port riêng
  • Đây là một cấu trúc cho phép một ứng dụng duy nhất tương thích với nhiều hệ điều hành

Những mối đe dọa trong tương lai

  • macOS và Windows đang ngày càng phát triển theo hướng khép kín hơn, tước đi quyền kiểm soát của người dùng
    • Windows đang bổ sung tính năng chụp ảnh màn hình tự động và phân tích bằng AI
    • macOS giới hạn chỉ cho phép chạy các ứng dụng đã được phê duyệt thông qua Gatekeeper
  • Cả hai OS đều đang giám sát hoạt động của người dùng và thậm chí còn chuẩn bị cả tính năng dò tìm, báo cáo các tệp bị coi là bất hợp pháp
  • Microsoft đang khiến việc dùng Windows mà không có tài khoản trực tuyến ngày càng khó hơn
  • Điều này có thể dẫn tới tình huống khi tài khoản bị khóa thì ngay cả chiếc máy tính cũng không thể sử dụng được

> Xu hướng này được lý giải là không hẳn do ác ý, mà là hệ quả của áp lực kinh tế và chính trị

Vì sao phải đóng gói Linux thành Windows

  • Bản phân phối Linux mới này giải quyết vấn đề tính di động và mang lại một môi trường chuyển đổi quen thuộc cho người dùng Windows
  • Trong thời điểm việc nâng cấp lên Windows 11 bị thúc ép, nó có thể trở thành một lựa chọn thay thế dễ chuyển sang
  • Bài viết cho rằng đây chính là thời điểm thích hợp để hình dung một bản phân phối Linux có thể khôi phục chủ quyền cho người dùng

10 bình luận

 
roxie 2025-04-02

Một hệ sinh thái trụ vững suốt 20 năm thì đúng là khiến người ta phải gật gù, nhưng tại sao kết cục lại là wine..

 
yfkim97 2025-04-02

Có lẽ không thể dùng macOS được nữa.

 
labeldock 2025-04-01

Tôi không muốn nhìn nhận theo hướng chỉ trích, nhưng với tư cách là người đã dùng qua nhiều hệ điều hành thì tôi thấy khá khó đồng cảm. Giờ đây hầu hết các công cụ GUI đều có thể dùng trên web, và nếu cần một desktop tốt thì làm trên Windows với giao diện đẹp sẽ tốt hơn, hơn nữa khả năng hỗ trợ driver của Windows cũng vượt trội hơn nhiều.

 
alucardkang 2025-03-31

Đáng lẽ phải là Steam mới đúng...

 
prunusnira 2025-03-31

TMax Windows... Lindows/Linspire... ReactOS... ôi đau cả đầu...
Có vẻ như Valve Proton thực sự đang làm được việc lớn

 
aer0700 2025-03-31

Đây đúng là một đề xuất khá mới lạ.

 
kwj9211 2025-03-31

Có phải cứ nghĩ rằng chỉ cần tinh chỉnh để chạy tốt các game/phần mềm top-tier là được rồi... thì không ổn nhỉ? haha

 
kandk 2025-03-31

Mong là sẽ đến thời có thể chơi game mà không cần PC chạy Windows 11 trở lên hu hu

 
GN⁺ 2025-03-31
Ý kiến trên Hacker News
  • Có ý kiến cho rằng nên tạo một bản phân phối Linux sử dụng Wine để mặc định chạy các tệp nhị phân Windows

    • Trên Debian có thể cài rất dễ bằng lệnh sudo apt install wine-binfmt
    • Cũng có thể dùng bằng cách khác thông qua việc chỉnh sửa tệp cấu hình
  • Trên Windows, ngay cả tệp exe đã 20 năm tuổi vẫn thường chạy được, nhưng trên Linux thì ngay cả tệp nhị phân mới 1 năm tuổi cũng có thể không chạy được do cập nhật

    • Windows đóng gói toàn bộ phụ thuộc động cùng ứng dụng khi cài đặt, trong khi Linux chia sẻ các phụ thuộc động giữa nhiều ứng dụng
    • Khi phụ thuộc thay đổi, ứng dụng có thể ngừng hoạt động
    • Để giải quyết, có thể phân phối theo kiểu Windows hoặc liên kết tĩnh
  • Không nghĩ rằng cần một bản phân phối mới

    • Phần lớn ứng dụng Windows có thể chạy qua Wine, nhưng các thủ thuật để làm một ứng dụng hoạt động có thể làm hỏng ứng dụng khác
    • Mỗi người dùng phải tự điều chỉnh cấu hình riêng, và thứ chạy được trên máy người này có thể không chạy trên máy người khác
    • Giải pháp đơn giản nhất là phân phối container có kèm Wine để mọi người dùng đều nhận cùng một artifact và luôn hoạt động
    • Dù tốn dung lượng, vẫn cần cách tinh gọn Wine để dùng trong container
    • Giấy phép và các phản mẫu phần mềm là rào cản duy nhất của hệ thống này
  • Zorin OS gần như cung cấp sẵn hỗ trợ Wine cho tệp .exe, còn Steam OS/Proton có hướng dẫn chính thức rằng thay vì làm bản port Linux cho game mới thì hãy tối ưu cho Proton

  • Các bản phân phối Linux thường liên kết động các tệp thực thi và không giữ lại các phiên bản thư viện cũ

    • Windows giữ các bản thực thi cũ vì không có trình quản lý gói
    • Có Windows Store và các công cụ CLI mới hơn, nhưng theo truyền thống thì ứng dụng Windows được cài bằng cách tải xuống và cài đặt thủ công
    • Trên Linux cũng có thể làm theo cách đó, nhưng trình quản lý gói của các bản phân phối Linux nhìn chung rất tốt
  • System call của Linux rất ổn định, nhưng thư viện C ở phía trên thì không như vậy

    • Windows cũng có cùng vấn đề và phân phối libc như một phần của Visual C++ runtime
    • Windows duy trì khả năng tương thích ngược của libc cho đến khi phát hành phiên bản mới của Visual Studio
  • Nghe giống như kiểu người muốn có Lindows/Linspire

  • Nếu ABI của Windows thực sự rất ổn định, thì cũng đáng thắc mắc vì sao những máy dùng Win95 hay NT lại thường không ai dám đụng vào vì sợ một số phần mềm nào đó sẽ ngừng chạy

    • Có thể thấy nhiều máy như vậy trong môi trường công nghiệp, thư viện công cộng, cơ sở dữ liệu doanh nghiệp, v.v.
  • Không cần vá kernel để chạy tệp exe, vì binfmt_misc có thể xử lý việc đó

    • wine-binfmt sẽ tự động chạy các tệp PE thông qua Wine