Điểm:0

lệnh lsmod không hoạt động trong hệ thống con windows cho linux

lá cờ ro

Tôi đã cài đặt hệ thống con windows cho linux với ubunut phiên bản 20.04 trong windows 10 từ microsoft store. Tôi đã cố cài đặt phần mềm netexender trong hệ thống con đó thông qua thiết bị đầu cuối. Nhưng tôi nhận được thông báo lỗi bên dưới.

libkmod: LỖI ../libkmod/libkmod-module.c:1668 kmod_module_new_from_loaded: không thể mở /proc/modules: Không có tệp hoặc thư mục như vậy

Tôi đã kiểm tra với máy tính xách tay hệ điều hành Ubuntu bằng cách nhập lệnh lsmod nhưng điều đó đưa ra danh sách các mô-đun, nhưng điều đó không có sẵn trong hệ thống con windows cho linux. Khi tôi tìm kiếm về vấn đề này, nó hiển thị một số vấn đề kernel trong windows như thế. Nhưng tôi không thể hiểu và tại sao điều này không hoạt động. ?

Điểm:0
lá cờ vn

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 ở đó 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 GithubTà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.

user3157334 avatar
lá cờ ro
khi tôi chạy lệnh này wsl -l -v, nó hiển thị - Không tìm thấy lệnh 'wsl', nhưng có thể được cài đặt bằng: Sudo apt install wsl. Tôi có nên chạy lệnh này và cài đặt wsl không?
NotTheDr01ds avatar
lá cờ vn
@ user3157334 (Lưu ý bên lề: Đúng thời điểm) Chạy lệnh `wsl` từ PowerShell hoặc CMD. Tôi sẽ chỉnh sửa câu trả lời để làm rõ.
user3157334 avatar
lá cờ ro
khi chạy wsl trong powershell, phản hồi tương tự ở trên xuất hiện.
NotTheDr01ds avatar
lá cờ vn
@ user3157334 Kiểm tra kỹ xem. Thông báo lỗi *"Không tìm thấy lệnh xxx, nhưng có thể được cài đặt"* là một thông báo bash shell. Tôi không thể nghĩ ra bất kỳ cách nào bạn có thể thấy phản hồi đó trong PowerShell. Nếu lệnh không được tìm thấy trong PowerShell, bạn sẽ nhận được thông báo: *"Thuật ngữ 'xxxxx' không được công nhận là tên của lệnh ghép ngắn, hàm, tệp tập lệnh,..."* Bạn có thể đã *nhập* WSL từ PowerShell chỉ bằng một lệnh `wsl`. Trong trường hợp đó, chỉ cần nhập `exit` (hoặc Ctrl+D) để thoát WSL trở lại PowerShell.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.