17 điểm bởi GN⁺ 2025-05-20 | 6 bình luận | Chia sẻ qua WhatsApp
  • Microsoft đã công bố chuyển toàn bộ WSL sang mã nguồn mở, đồng thời đây cũng là câu trả lời cho issue đầu tiên của kho lưu trữ Microsoft/WSL: “Nó có trở thành mã nguồn mở không?”
  • Có thể tải mã nguồn từ Microsoft/WSL trên GitHub, tự build, thêm tính năng hoặc sửa lỗi trực tiếp
  • Phần mã được công khai bao gồm công cụ dòng lệnh, dịch vụ, daemon cho Linux, cho đến cả máy chủ chia sẻ tệp dựa trên Plan9
  • WSL được cấu thành từ phần thực thi trên Windows và nhiều thành phần chạy bên trong máy ảo Linux (VM)
    • Công cụ CLI: wsl.exe, wslconfig.exe, wslg.exe
    • Dịch vụ WSL: wslservice.exe, phụ trách khởi động VM, chạy distro, chia sẻ tệp, v.v.
    • Daemon Linux: init, gns, localhost, đảm nhiệm các chức năng mạng và chuyển tiếp cổng
    • Máy chủ Plan9: đóng vai trò chia sẻ tệp giữa Windows và Linux
  • Các thành phần trước đây đã được công khai mã nguồn
    • WSLg: các thành phần liên quan đến môi trường đồ họa hỗ trợ Wayland và máy chủ X
    • WSL2-Linux-Kernel: mã nguồn kernel Linux
  • Các thành phần vẫn chưa được mở
    • Lxcore.sys: driver cốt lõi của WSL1
    • P9rdr.sys, p9np.dll: hệ thống chuyển hướng tệp hỗ trợ đường dẫn \\wsl.localhost trên Windows

Bối cảnh chuyển sang mã nguồn mở và lịch sử của WSL

  • WSL lần đầu được công bố tại BUILD 2016 và được đưa vào Windows 10 Anniversary Update
  • WSL1 là kiến trúc dựa trên lxcore.sys, xử lý Linux syscalls bên trong kernel Windows
  • WSL2 được công bố lần đầu vào năm 2019, cải thiện khả năng tương thích và tính năng bằng cách sử dụng kernel Linux thực sự
  • Sau đó, WSL tiếp tục phát triển với các tính năng như hỗ trợ GPU, chạy ứng dụng GUI (wslg), hỗ trợ systemd
  • Từ năm 2021, WSL được cung cấp dưới dạng gói độc lập tách khỏi Windows thông qua Microsoft Store
    • Bản phát hành đầu tiên là 0.47.1 (preview), sau đó mở rộng hỗ trợ tới cả Windows 10 trong bản 1.0.0 vào năm 2022
  • Từ Windows 11 24H2, WSL tích hợp sẵn trước đây được chuyển sang WSL mới dựa trên gói
    • wsl.exe vẫn được giữ nguyên để hỗ trợ người dùng chuyển đổi

Phiên bản mới nhất và các tính năng

  • Bản phát hành mới nhất là WSL 2.5.7, đã được cải tiến trong suốt 4 năm qua thông qua các ghi chú phát hành trên GitHub dài khoảng 9 trang
  • Các cải tiến chính bao gồm mirrored networking, DNS tunneling, Session 0, hỗ trợ proxy/tường lửa

Đóng góp của cộng đồng

  • Trong nhiều năm, cộng đồng đã góp phần cải thiện WSL thông qua báo lỗi, đề xuất tính năng và các phân tích không chính thức
  • Ngay cả trước khi mã nguồn được công khai, các đóng góp thực chất vẫn đã rất sôi nổi, và giờ đây việc đóng góp mã trực tiếp đã trở nên khả thi
  • Microsoft bày tỏ sự cảm ơn trước sự hỗ trợ của cộng đồng này, đồng thời kỳ vọng sẽ có sức cộng hưởng lớn hơn nữa cho sự phát triển của WSL trong tương lai

Cách đóng góp

  • Nếu bạn muốn tìm hiểu cấu trúc mã nguồn hay cách triển khai tính năng, hoặc có điểm nào muốn cải thiện
    • Có thể tham gia tại kho lưu trữ microsoft/WSL
    • Có thể đóng góp theo nhiều cách như tự build, gửi PR, báo issue, v.v.

6 bình luận

 
ing03201 2025-05-27

Từ góc độ một người dùng Endeavour +lustre / windows11 + wsl + wsa
thì vế sau tiện hơn
nhưng về hiệu năng thì vế trước tốt hơn

 
iolothebard 2025-05-21

Có vẻ lần này đội WSL cũng bị cắt giảm khá nhiều…

 
forgotdonkey456 2025-05-21

Dạo này hướng đi của MS kiểu là nếu không có nhân lực thì cứ lấy danh nghĩa “community-driven” rồi open-source hóa luôn thôi haha..

 
zihado 2025-05-21

Chỉ là đem đi xử lý phần thừa thôi.

 
ksb9770 2025-05-20

WSL1 là môi trường máy tốt nhất cho phát triển đa nền tảng. IO cũng nhanh và có thể thực thi ngay các lệnh dựa trên Linux. WSL2 biên dịch chéo chậm hơn WSL1.

 
GN⁺ 2025-05-20
Ý kiến trên Hacker News
  • Mỗi khi tôi để lại bình luận khen WSL trên Hacker News, tôi có cảm giác như đang phải nộp “thuế karma”. WSL tạo cho tôi ấn tượng là còn mạnh hơn cả Linux, vì nó cho phép chạy đồng thời nhiều phiên bản Linux khác nhau trên cùng một máy tính một cách cực kỳ dễ dàng. Tôi thật sự thấy rất hấp dẫn ở chỗ có thể dùng ngay trên desktop hay laptop mà không cần thiết lập thêm, kể cả hỗ trợ thiết bị như docker, lưu trữ cục bộ, ánh xạ mạng và các thứ tương tự, tất cả đều không cần script đặc biệt. Ví dụ, nếu một dự án cần Ubuntu22 còn dự án khác cần Ubuntu24, thì thật tuyệt khi không phải bận tâm mỗi tháng về chuyện cập nhật hệ điều hành

    • Câu “mạnh hơn Linux” là nói quá, vì thực chất WSL là máy ảo. Điểm mạnh chính của WSL là nó tự động hóa đủ loại tiện ích. Nhưng có thể lập luận rằng môi trường tiện hơn thật sự là môi trường không cần máy ảo ngay từ đầu. Các công cụ như Distrobox và toolbx cũng cung cấp tính năng tương tự, còn trên NixOS cũng có thể thử nghiệm môi trường Linux thông thường rất dễ dàng. Thêm nữa, bạn có tăng tốc phần cứng, ứng dụng đồ họa chạy trực tiếp, không có vấn đề cầu nối 9p chậm chạp, và cũng không gặp các vấn đề như “bong bóng” bộ nhớ của VM. WSL đúng là một cuộc cách mạng đối với người dùng Windows, nhưng người dùng Linux thì không cần kiểu VM như vậy

    • Trên Linux cũng có thể làm điều tương tự bằng Distrobox, nhưng tôi thừa nhận việc có thể vận hành Windows + WSL cùng nhau rõ ràng rất hấp dẫn. Nếu Microsoft phát hành một bản Dev edition cắt giảm phần mềm rác, quảng cáo, Copilot, telemetry quá mức và những thứ không cần thiết khác, đồng thời cung cấp phần cứng kiểu như MacBook, thì tôi nghĩ họ hoàn toàn có thể kéo lại các lập trình viên rời Apple. Cá nhân tôi đi qua lại giữa Mac và Linux, và về mặt độ tiện dụng thì có những điểm tôi còn thích tổ hợp Windows + WSL hơn. PowerToys, WSL, PowerShell, cùng việc tự động hóa thiết lập PC bằng PowerShell + Winget DSC đều rất xuất sắc, nhưng sự thiếu thân thiện với người dùng của Windows và thời gian cập nhật quá dài thì tôi thật sự không chịu nổi. Sẽ tốt hơn nếu họ áp dụng nền tảng bất biến như macOS và cập nhật dựa trên image. Việc phía Windows không có hiệu năng laptop tầm M4 Pro cũng là một điểm đáng tiếc

    • Tôi nghĩ tuyên bố “WSL mạnh hơn Linux” đúng là kiểu phát biểu dễ bị trừ karma. WSL tốt, tôi dùng hằng ngày, nhưng nếu chạy Linux trên phần cứng được hỗ trợ thì trải nghiệm đó thực sự tốt hơn. Cũng như VM không thể tốt bằng native, phần mềm Windows cũng chạy tốt hơn trên Windows. So ra thì WSL có I/O chậm hơn, đồ họa có độ trễ và lỗi, đôi khi còn crash, quản lý bộ nhớ kém hiệu quả, lỗi mạng và nhiều vấn đề khác. Nếu dùng chủ yếu CLI trên một cỗ máy rất mạnh thì WSL có thể tiện, nhưng thực tế còn tùy môi trường mỗi người cần

    • WSL thực ra chính là Linux. Đặc biệt từ WSL2 thì nó đi hẳn theo cấu trúc VM, còn WSL1 chạy trên kernel Windows nên tôi thấy rất ngầu. Tuy nhiên, hệ thống tệp NTFS chậm và việc phải đụng tới chính Windows là điều khiến tôi rất khó chịu. Còn con số karma thì chỉ là con số thôi, không đáng bận tâm

    • Với tôi, WSL khá bất ổn, và mỗi lần máy tính thức dậy từ chế độ sleep thì tôi bắt buộc phải khởi động lại vì vấn đề mạng giữa VM và host. Nếu làm việc trong thư mục người dùng của Windows, các lệnh git mất vài giây chỉ vì driver hệ thống tệp quá chậm, thành ra tôi phải quản lý tới hai thư mục home. Trong quá trình thiết lập cũng có rất nhiều vấn đề bí hiểm phải xử lý như DNS, VPN, lỗi ưu tiên mạng, lệch đồng bộ thời gian. Cuối cùng thì ngày nào tôi cũng phải reboot Windows. Tôi không cần dùng nhiều hệ điều hành, và ở công ty thì hầu hết công cụ đều chạy trong Linux VM; đó là cách duy nhất hợp lý. Hệ điều hành bề ngoài ngược lại chỉ gây thêm vấn đề, và sự tương tác giữa hai hệ điều hành khiến công việc trở nên phức tạp hơn mức cần thiết

  • Khi WSL mới ra mắt, tôi đã rất vui. Nó cho cảm giác như giấc mơ gom chơi game và làm việc phát triển trên một PC Windows cuối cùng cũng thành hiện thực. Nhưng theo thời gian, các vấn đề lặt vặt như cài gói, ranh giới giữa các hệ điều hành và nhiều chuyện tương tự cứ tăng lên, khiến mọi thứ ngày càng gồ ghề. Khi Proton của Valve và hỗ trợ chơi game trên Linux hiện đại được cải thiện, tôi đã chuyển hẳn sang Ubuntu và NixOS. Giờ tôi có hơi bất tiện ở mảng game, nhưng môi trường phát triển thì ngược lại dễ chịu hơn rất nhiều. Ngoài việc một số game AAA không chạy, tôi thấy đây là trải nghiệm tốt hơn Windows + WSL

    • Tôi cũng có trải nghiệm tương tự, và giờ thì cài Linux thậm chí còn dễ hơn đối với tôi. Các tính năng kiểu spyware của Windows càng khiến tôi ít có lý do để dùng nó hơn

    • Tuy nhiên, tôi cho rằng trường hợp dùng card đồ họa Nvidia là ngoại lệ

    • Tôi tò mò không biết bạn đã gặp vấn đề với những game nào

    • Tôi nghĩ hầu hết mọi người đều từng trải qua chuyện này. Nếu Windows hiện giờ không phải là nền tảng game (GPU), thì có lẽ nó đã không còn nhiều hiện diện. Tôi cũng nhớ lại thời trước ở các dự án cũ, khi phải đổi qua lại giữa msvc, cygwin, msys2 và đủ kiểu môi trường build khác nhau trong hỗn loạn. Giờ đây WSL cũng giúp build được phần nào dễ hơn, nhưng chỉ cần phải đổi một biến môi trường thôi là tôi đã thấy mệt mỏi, và không muốn lặp lại cách làm này thêm lần nào nữa

  • Tôi lại khuyên nên dùng Windows như một máy ảo trên Linux. Nếu đến mức muốn dùng Linux trên Windows, thì tốt nhất cứ chuyển hẳn sang Linux rồi đừng nhìn lại nữa. Trong 15 năm qua tôi chưa từng quay về Windows. Nhìn vào tình trạng Windows hiện tại, tôi thậm chí còn ngần ngại dùng nó cả trong VM

    • Với các tác vụ liên quan đến GPU như game hay Adobe suite, nếu chạy Windows trong VM thì phải passthrough riêng GPU cho VM, còn ai không có điều kiện đó thì phải chấp nhận môi trường không có tăng tốc, nên cách VM không hề dễ. Chạy Photoshop bằng driver QEMU QXL thì hiệu năng rất tệ, VirGL thì hoàn toàn không hỗ trợ guest Windows. VMWare và VirtualBox có khá hơn đôi chút, nhưng vẫn không thể bằng native

    • Tôi nghĩ trong hầu hết các thread về Windows đều có một ranh giới rất rõ giữa những người bắt buộc phải dùng Windows vì ứng dụng năng suất và những người không cần. Với những người như tôi, dùng ứng dụng năng suất liên quan đến GPU thì VM là không khả thi, cuối cùng vẫn phải dùng Windows native. Nếu chỉ dùng ứng dụng nhẹ thì máy ảo là đủ, nhưng với công việc nghiêm túc như CAD hay game thì tôi không thấy phù hợp

    • Tôi từng chỉ dùng Linux trong nhiều năm, rồi quay về Windows, sau đó lại chuyển sang Mac. Các vấn đề tương thích của wine, những phần mềm thay thế còn dang dở như GIMP không thể thay Photoshop, hay việc trộn lẫn ứng dụng Qt và GTK làm giao diện desktop trở nên chắp vá, đều cho thấy Linux không phải là lời giải vạn năng

    • Phản biện lại, theo kinh nghiệm thực tế của tôi thì thiết bị VR như Valve Index hoàn toàn không hoạt động ra hồn trong kiểu môi trường này, tức là chạy Windows VM trên Linux. Tôi là người dùng Linux hardcore từ nhỏ, nhưng những ngoại lệ đặc thù như vậy vẫn tồn tại, nên khó mà khái quát tuyệt đối

    • Nhân tiện, đây là thông tin liên quan: có một liên kết chính thức phân phối image VM bản dùng thử của Windows; khi hết hạn thì desktop sẽ chuyển thành màu đen và PC sẽ tự tắt mỗi giờ. Image bản dùng thử mới nhất cũng đã hơn 6 tháng chưa được cập nhật, nhưng nếu đăng ký thì vẫn có ISO

  • Cái tên Windows subsystem for Linux lúc nào cũng làm tôi bối rối. Nhìn qua thì rất dễ hiểu lầm đây là một kiểu phiên bản chính thức của Wine, nhưng thực ra lại là subsystem của Windows dành cho Linux. Nó nghe như thể Microsoft đang ban chức năng cho Linux vậy, nên tôi thấy khó chịu

    • Microsoft không thể đặt tên dự án bắt đầu bằng “Linux”, nên cuối cùng họ dùng cái tên WSL

    • Cách đặt tên này bắt nguồn từ dự án Windows Subsystem for Unix trước đây. Và cái tên đó từ trước đến nay lúc nào cũng vận hành khác với điều người ta kỳ vọng

    • Một đề xuất cải tiến đầy dí dỏm là gọi nó là subsystem của Windows dành cho Linux

    • Tôi đồng ý rằng đây là subsystem để chạy Linux trên Windows, nhưng cách đặt tên thì đúng là gây bối rối

  • Trong vài năm gần đây tôi thỉnh thoảng phát triển bằng WSL. Khi nó hoạt động tốt thì cực kỳ tuyệt, nhưng một khi đã trục trặc thì thật sự là ác mộng. Tôi liên tục gặp vấn đề với mạng, VPN, XServer, scaling của Windows, đồ họa tăng tốc phần cứng và nhiều thứ khác. Tôi có cảm giác thời gian sửa lỗi còn nhiều hơn thời gian thực sự phát triển, mà cũng chẳng thấy cải thiện gì. WSL nhanh và mạnh, nhưng với tôi thì nó là môi trường quá vất vả để dùng hằng ngày. Thay vào đó tôi dùng MSYS2 làm chính; tuy chậm hơn nhưng ít nhất ổn định, và đó là ưu điểm lớn nhất

    • Tôi vẫn đang dùng bản beta của WSL, và đến giờ còn không dám nâng cấp vì sợ cập nhật xong sẽ phá hỏng môi trường hiện tại đang chạy ổn
  • Tuần trước Microsoft vừa có thành tích kỷ lục mà vẫn sa thải quy mô lớn, nên tôi tự hỏi hiện tượng này có phải là tác dụng phụ của chuyện đó không

    • Tôi nghĩ với các tập đoàn lớn, cắt giảm 3% nhân sự về cơ bản là không ảnh hưởng gì, trừ khi họ xóa hẳn một dự án hay một bộ phận nào đó. Thậm chí ở công ty lớn, dư người còn là chuyện phổ biến, nên mức này thực sự chẳng đáng kể

    • Những quyết định open source, công tác chuẩn bị và triển khai ở các tập đoàn lớn tuyệt đối không thể là dự án diễn ra chỉ trong 1-2 tuần

    • Tôi bày tỏ lo ngại rằng với bầu không khí chung hiện tại, thật khó chỉ nhìn Build lần này cùng các tin liên quan theo hướng tích cực

    • Nếu đúng như công bố thì đây là kết quả đã được chuẩn bị trong thời gian dài, nên tôi đồng ý rằng không liên quan tới đợt sa thải gần đây

  • Xin lưu ý rằng lxcore.sys, kernel side driver vận hành WSL 1, không nằm trong phạm vi được open source lần này. Và tôi ngạc nhiên khi WSL 1 vẫn còn được hỗ trợ; tôi đoán nó đang ở chế độ bảo trì

    • Phần tôi thực sự quan tâm chính là lxcore.sys. Tôi vẫn chỉ dùng WSL1, thậm chí còn từng thử các kiểu hack lạ như đi xuyên ABI hoặc tunnel Windows vào user space của Linux. Tôi hy vọng open source sẽ giúp việc nghịch ngợm với nó dễ hơn

    • Thực ra tôi nghe nói cả WSL1 lẫn WSL2 đều vẫn được hỗ trợ đầy đủ. Không hẳn giống như khác biệt về con số gợi ra

  • Cần kiểm tra giấy phép và chi tiết cụ thể. Đây có thể là tín hiệu tích cực, nhưng tôi cũng nghi ngờ rằng đây là cái cớ để MS xin trợ giúp miễn phí sau khi sa thải lập trình viên

    • Giấy phép là MIT
  • Tôi không phải người dùng Windows, nhưng đánh giá WSL là rất xuất sắc. Tuy nhiên, lý do lớn nhất khiến nhiều người dùng Windows chỉ trích Linux là vì “nó không trông giống Windows”, còn từ góc nhìn người dùng Linux thì Linux lại càng tốt vì nó không giống Windows. Tôi hy vọng người dùng Windows đừng cố “Windows hóa” Linux chỉ vì muốn có một Windows miễn phí không quảng cáo. Nếu WSL giúp giữ người dùng Windows ở lại với Windows thì tôi thậm chí còn hoan nghênh hơn

    • Tôi không phải người dùng Windows, nhưng lại ghét chính WSL. Có vẻ đây là chiến lược của Microsoft nhằm ngăn cả một thế hệ lập trình viên bị mất sang Linux, nên họ đưa luôn Linux vào trong hệ điều hành. Tôi thấy tiếc vì điều đó làm lập trình viên mất đi niềm vui tự tay biên dịch lại kernel và trực tiếp trải nghiệm
  • Tôi chỉ mong những lỗi phát sinh khi thao tác với hệ thống tệp Windows bên trong WSL sớm được sửa cho xong

    • Tôi nghĩ Microsoft cũng mong điều đó như vậy