- 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
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
Có vẻ lần này đội WSL cũng bị cắt giảm khá nhiều…
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..
Chỉ là đem đi xử lý phần thừa thôi.
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.
Ý 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
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ơnThự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
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 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