Câu trả lời ngắn
Bạn có thể đang chạy WSL1. lsmod
yêu cầu WSL2.
Giải trình
Bắt đầu với wsl -l -v
(từ PowerShell hoặc CMD) để xác nhận phiên bản WSL của bạn. Bạn có thể sẽ thấy một cái gì đó như:
TÊN TIỂU BANG PHIÊN BẢN
* Ubuntu đang chạy 1
Một trong những điểm khác biệt chính giữa WSL1 và WSL2:
- WSL1 là một "lớp dịch thuật" cố gắng chuyển đổi các tòa nhà chọc trời của Linux thành API của nhân Windows.
- WSL2 là một môi trường "ảo hóa" chạy dưới nhân Linux thực.
Vì vậy, ví dụ, khi ls
lệnh nhận danh sách các tệp:
- Trong WSL1, Windows cung cấp danh sách các tệp đó bằng API Windows để lấy các tệp trong rootfs WSL.
- Trong WSL2, nhân Linux đang sử dụng hệ thống tệp ext4 trong đĩa ảo để truy xuất danh sách tệp. Đối với các tệp trên ổ đĩa Windows (ví dụ:
/mnc/c
), nó sử dụng giao thức mạng 9P để lấy tệp.
Nó thực sự khá tuyệt vời khi WSL1 có thể làm được bao nhiêu với điều này. Nhưng ở đó là hạn chế. lsmod
là một trong số họ. Trong khi WSL1 cung cấp một số /proc
ánh xạ (chẳng hạn như các quy trình), khái niệm "mô-đun hạt nhân" không có nhiều ý nghĩa đối với ánh xạ Windows.
Có thể liệt kê các trình điều khiển Windows, nhưng điều đó sẽ không thực sự mang lại bất kỳ lợi ích nào.
Chuyển đổi sang WSL2
Giả sử bạn đã có WSL2 kích hoạt trên Windows, bạn có thể chuyển đổi phiên bản Ubuntu của mình sang WSL2 bằng cách sử dụng:
wsl --set-phiên bản Ubuntu 2
Mặc dù lệnh này khá an toàn nhưng tôi vẫn khuyên bạn nên sao lưu phiên bản của mình trước bằng:
wsl --export Ubuntu backup.tar
Như với ban đầu wsl
lệnh, đây là lệnh của Windows, vì vậy lệnh này sẽ cần được chạy từ PowerShell hoặc CMD.
Cài đặt/Kích hoạt WSL2
Nếu bạn chưa bật WSL2, bạn có thể thực hiện bằng cách làm theo Bước 2-5 của tài liệu này.
Kích hoạt WSL2 không không phải cập nhật các phiên bản đã được cài đặt, vì vậy bạn vẫn cần thực hiện bước chuyển đổi (wsl --set-phiên bản
) ở trên.
Hạn chế
Nhưng lưu ý rằng nhân được cung cấp cùng với WSL đã có sẵn tất cả các mô-đun được biên dịch, vì vậy kết quả của lsmod
sẽ chỉ là một danh sách trống.
Bạn có thể biên dịch hạt nhân của riêng bạn với các mô-đun có thể tải nếu bạn muốn. xin vui lòng xem Hạt nhân WSL Linux Github và Tài liệu WSL để biết cách tải WSL bằng hạt nhân tùy chỉnh của bạn.
Nhưng hy vọng rằng điều đó sẽ không cần thiết đối với Netextender.