Windows Developer

Hệ thống con Windows cho Linux hiện là nguồn mở Microsoft Build


Hôm nay, chúng tôi rất vui mừng thông báo bản phát hành nguồn mở của hệ thống con Windows cho Linux. Đây là kết quả của một nỗ lực nhiều năm để chuẩn bị cho việc này, và một sự đóng cửa tuyệt vời cho vấn đề đầu tiên được nêu trên Microsoft/WSL Repo: Đây có phải là nguồn mở không? · Vấn đề #1 · Microsoft/WSL.

Điều đó có nghĩa là mã mà Powers WSL hiện có sẵn trên GitHub tại Microsoft/WSL và mở có nguồn gốc cho cộng đồng! Bạn có thể tải xuống WSL và xây dựng nó từ nguồn, thêm các bản sửa lỗi và tính năng mới và tham gia vào sự phát triển tích cực của WSL.

Tổng quan thành phần WSL

WSL được làm từ một tập hợp các thành phần phân phối. Một số chạy trong Windows và một số chạy bên trong máy ảo WSL 2. Đây là tổng quan về kiến ​​trúc của WSL:

Mã của WSL có thể được chia thành các khu vực chính này:

  • Lòng lệnh thực thi là các điểm nhập để tương tác với WSL
    • wsl.exe, wslconfig.exe và wslg.exe
  • Dịch vụ WSL bắt đầu WSL VM, bắt đầu phân phối, gắn kết tệp truy cập tệp và hơn thế nữa
    • WSLService.exe
  • Các quy trình khởi động và daemon của Linux, các nhị phân chạy trong Linux để cung cấp chức năng WSL
    • init để khởi động, GNS cho mạng, localhost để chuyển tiếp cổng, v.v.
  • Tệp chia sẻ tệp Linux vào Windows với triển khai Máy chủ Plan9 của WSL
    • kế hoạch9

Truy cập https://wsl.dev để tìm hiểu thêm về từng thành phần.

Điều này xuất hiện như một bổ sung cho các thành phần WSL có nguồn gốc đã mở:

  • Microsoft/WSLG: Kích hoạt hệ thống con Windows để Linux bao gồm hỗ trợ cho các kịch bản liên quan đến Wayland và X Server
  • Microsoft/WSL2-Linux-Kernel: Nguồn cho hạt nhân Linux được sử dụng trong hệ thống con Windows cho Linux 2 (WSL2)

Các thành phần sau đây vẫn là một phần của hình ảnh Windows và không được mở có nguồn gốc tại thời điểm này:

  • Lxcore.sys, trình điều khiển bên kernel cung cấp năng lượng cho WSL 1
  • P9rdr.sys và p9np.dll, chạy chuyển hướng hệ thống tập tin của \ wsl.localhost (từ Windows sang Linux)

Tại sao nguồn mở bây giờ? Một chút lịch sử…

WSL lần đầu tiên được công bố tại Build Back vào năm 2016 và lần đầu tiên được vận chuyển với bản cập nhật Windows 10 Anniversary.

Vào thời điểm đó, WSL dựa trên nhà cung cấp quy trình PICO, lxcore.sys, cho phép Windows chạy các tệp thực thi ELF và triển khai các hệ thống Linux bên trong hạt nhân Windows. Điều này cuối cùng đã trở thành những gì chúng ta ngày nay biết là WSL WSL 1, mà WSL vẫn hỗ trợ.

Theo thời gian, rõ ràng rằng cách tốt nhất để cung cấp khả năng tương thích tối ưu với Linux bản địa là dựa vào chính hạt nhân Linux. WSL 2 ra đời và lần đầu tiên được công bố vào năm 2019.

Khi cộng đồng đằng sau WSL tăng trưởng, WSL đã đạt được nhiều tính năng hơn như hỗ trợ GPU, hỗ trợ ứng dụng đồ họa (thông qua WSLG) và hỗ trợ cho SystemD.

Cuối cùng, rõ ràng là theo kịp các yêu cầu tính năng và cộng đồng đang phát triển, WSL phải di chuyển nhanh hơn và giao hàng tách biệt với Windows. Đó là lý do tại sao vào năm 2021, chúng tôi đã tách WSL khỏi cơ sở mã Windows và chuyển nó sang cơ sở mã của riêng nó. WSL mới này lần đầu tiên được gửi dưới dạng phiên bản 0.47.1 cho Microsoft Store, vào tháng 7 năm 2021. Vào thời điểm đó, chỉ có Windows 11 được hỗ trợ và gói được đánh dấu là xem trước, chỉ được đề xuất cho người dùng muốn trải nghiệm WSL mới nhất và lớn nhất.

Chúng tôi tiếp tục phát triển gói WSL mới này cho đến khi nó sẵn sàng cho tính khả dụng chung. Điều đó đã xảy ra vào tháng 11 năm 2022, với WSL 1.0.0, đã thêm hỗ trợ cho Windows 10 và là bản phát hành đầu tiên của WSL của WSL này.

Từ đó, chúng tôi tiếp tục cải thiện WSL, với mục tiêu chuyển đổi hoàn toàn tất cả người dùng sang gói WSL mới này và tránh xa thành phần WSL được vận chuyển với Windows. Windows 11 24H2 là bản dựng Windows đầu tiên đã chuyển người dùng từ WSL tích hợp của WSL sang gói WSL mới. Chúng tôi đã giữ wsl.exe trong hình ảnh Windows, vì vậy nó có thể tải xuống gói mới nhất theo yêu cầu để làm cho quá trình chuyển đổi dễ dàng hơn.

Khi chúng tôi tiếp tục cải thiện WSL, cuối cùng chúng tôi đã đạt được một cột mốc khác: WSL 2.0.0 (ba vấn đề khó khăn nhất trong khoa học máy tính là gì? Tắt bởi một lỗi và đặt tên!).

WSL 2.0.0 đã giới thiệu các cải tiến lớn như mạng lưới nhân đôi, đường hầm DNS, hỗ trợ phiên 0, hỗ trợ proxy, hỗ trợ tường lửa và nhiều hơn nữa.

Và đó là cột mốc mà chúng ta vẫn đang xây dựng ngày hôm nay! Tại thời điểm viết bài viết này, WSL 2.5.7 là phiên bản mới nhất trong số chín trang phát hành GitHub của chúng tôi kể từ 0,47,1 4 năm trước!

Cộng đồng đằng sau WSL

Trong những năm qua, chúng tôi đã vô cùng may mắn khi có một cộng đồng mạnh mẽ hỗ trợ WSL từ ngày 1. Chúng tôi đã may mắn có những người chia sẻ kiến ​​thức của họ và dành vô số giờ để giúp theo dõi các lỗi, tìm những cách tốt nhất để thực hiện các tính năng mới và cải thiện WSL.

WSL không bao giờ có thể là như ngày nay nếu không có cộng đồng của nó. Ngay cả khi không có quyền truy cập vào mã nguồn của WSL, mọi người đã có thể đóng góp lớn dẫn đến WSL hiện nay.

Đây là lý do tại sao chúng tôi vô cùng phấn khích khi WSL nguồn mở ngày hôm nay. Chúng tôi đã thấy cộng đồng đã đóng góp bao nhiêu cho WSL mà không cần truy cập vào mã nguồn và chúng tôi không thể chờ đợi để xem WSL sẽ phát triển như thế nào khi cộng đồng có thể đóng góp mã trực tiếp cho dự án.

Đóng góp cho WSL

Bạn có quan tâm đến việc tìm hiểu cách thức hoạt động của WSL? Bạn có muốn xem làm thế nào một tính năng cụ thể hoạt động, hoặc thay đổi? Truy cập Microsoft/WSL để tìm hiểu thêm!