Làm thế nào để liệt kê tất cả các mô-đun hạt nhân có thể tải?


65

Tôi đang tìm kiếm một vài mô-đun hạt nhân để tải i2c-devi2c-bcm2708. Nhưng modprobelệnh trả về:

sudo modprobe i2c-dev
modprobe: module i2c-dev not found in modules.dep

Làm thế nào tôi có thể liệt kê tất cả các mô-đun có sẵn trong hệ thống? Chúng nằm ở thư mục nào?


1
Hạt nhân không biên dịch i2c-dev này. Bạn không tìm thấy mô-đun này. Các mô-đun hạt nhân nằm / lib / mô-đun / 'phiên bản kernel' / trình điều khiển. Khi bạn đang tìm kiếm trình điều khiển linux.
tối

Bạn có thể kiểm tra trên / boot / config-'kernel-version 'và đọc tệp cấu hình này. Bạn nên biết mô-đun linux nào được tải hoặc sửa đổi hoặc trong quá trình biên dịch kernel không kích hoạt mô-đun i2c-dev.
tối

Câu trả lời:


76
  • Theo mặc định modprobetải các mô-đun từ thư mục con nằm trong /lib/modules/$(uname -r)thư mục. Thông thường tất cả các tệp đều có phần mở rộng .ko, vì vậy bạn có thể liệt kê chúng với

    find /lib/modules/$(uname -r) -type f -name '*.ko'
    

    hoặc, có tính đến các tệp nén:

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • Tuy nhiên, để tải mô-đun thành công modprobecần có các phụ thuộc được liệt kê trong tệp /lib/modules/$(uname -r)/modules.dep(và phiên bản nhị phân tương ứng modules.dep.bin). Nếu một số mô-đun có mặt trên hệ thống, nhưng không có trong danh sách, thì bạn nên chạy một lệnh depmodsẽ tạo ra các phụ thuộc như vậy và tự động bao gồm mô-đun của bạn đến modules.depmodules.dep.bin.

  • Ngoài ra, nếu mô-đun được tải thành công, nó sẽ được liệt kê trong tệp /proc/modules(cũng được truy cập thông qua lệnh lsmod).


3
Redhat 7 tệp mô-đun được nén trong .xz (không chắc là do phiên bản kernel hay phiên bản HĐH .. nếu ai đó có thể làm rõ nó với tôi?) Vì vậy tôi nghĩ bạn có thể không tìm thấy chúng bằng lệnh find của jimmij. Sử dụng thay thế find /lib/modules/$(uname -r) -type f -name *.ko*
Pozinux

1
@Pozinux Đã phát hiện điều tương tự ở đây trên Arch linux vào lúc 4.13.10, có kết thúc.gz
Johann

1
@posinux: hãy cẩn thận: trình bao có thể mở rộng *.ko*nếu bạn tình cờ có trong thư mục hiện tại của bạn một số tệp phù hợp với nó. tốt hơn để thoát khỏi nó giữa các trích dẫn duy nhất: find /lib/modules/$(uname -r) -type f -name '*.ko*'
Olivier Dulac

10

Nhập modprobevà nhấn tab, danh sách tự động hoàn thành phải chứa tất cả các mô-đun có thể tải


11
nó không hoạt động đối với một số hệ thống
avtomaton 17/2/2016

5

lsmodlệnh của kmodgói trong Arch Linux gì liệt kê và hiển thị tình trạng của Linux kernel module chứa các lệnh hữu ích khác như modinfo, rmmod modprobequá.

Để l ist tất cả các mã nhị phân được cung cấp bởi các gói bạn có thể gõ:

pacman -Ql kmod | grep /bin/ --color=always

và bạn cũng có thể kiểm tra gói o wner của nhị phân với pacman -Qo lsmod.


Qswitch là q uery gói cài đặt cục bộ (không giống như Sđể s ynchronize, tức là. để kiểm tra từ xa).


2
Trường hợp quan trọng là làm nổi bật rằng lsmodchỉ hiển thị các mô-đun đã được tải. Tác giả của luồng này đã gặp sự cố khi tải một mô-đun không có trong bản đồ của các mô-đun hạt nhân có thể tải. Bên cạnh đó, giải pháp này chỉ áp dụng cho archlinux. Đó có thể không phải là bản phân phối của Tác giả và có thể không giải quyết vấn đề cho người khác.
Akendo

@Akendo lsmodcũng có sẵn trên Ubuntu, ít nhất. Tuy nhiên, tôi đồng ý rằng điều này không giải quyết được vấn đề của OP.
Melebius

2

Tôi thích sử dụng depmod. Với lệnh : depmod -av|grep MOD_NAME, hệ thống của bạn sẽ tạo các tệp mô-đun.dep / map và grep thông qua nó. Các -vthông số quan trọng đối với cách rườm rà và -ađể đảm bảo rằng tất cả các module có thể từ /lib/modules/được sử dụng cho các tập tin modules.dep.

Bằng cách này, có thể đảm bảo rằng mô-đun hạt nhân được yêu cầu được ánh xạ tới hạt nhân là có thể tải. Khi mô-đun kernel mong muốn không được liệt kê trong đầu ra, bạn biết rằng kernel sẽ không tìm thấy nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.