Giới thiệu về Lệnh Linux / Unix: modprobe
Nhân Linux đã phát triển thành một phần mềm lớn. Theo một số cách, đó là một điều tốt. Ở những người khác, nó làm cho nó hơi không linh hoạt. Giải pháp là chia nhỏ các phần của hạt nhân thành các mô-đun. Các mô-đun này có thể được tải hoặc không, tùy thuộc vào cấu hình của máy tính và nhu cầu của bạn. Lệnh modprobe tải các mô-đun hạt nhân mới trên hệ thống Linux, cho phép bạn kích hoạt các tính năng và hỗ trợ mới mà không cần khởi động lại.
Mục Lục
Sử dụng Modprobe
Modprobe thường sử dụng đơn giản. Khi bạn biết mô-đun nhân mà bạn muốn tải, hãy chuyển nó vào lệnh modprobe.
sudo modprobe rtl8723de
Thats tất cả để có nó. Mô-đun được tải cho đến khi bạn khởi động lại hệ thống của mình.
Nếu bạn muốn xóa một mô-đun mà không cần khởi động lại, hãy chạy lại lệnh với -NS lá cờ.
sudo modprobe -r rtl8723de
Đối với hầu hết các phần, đây là cách bạn sẽ làm việc với modprobe. Để tìm hiểu thêm, hãy xem tài liệu kỹ thuật bên dưới.
Tài liệu Kỹ thuật Modprobe
Lệnh modprobe thực hiện xử lý mức cao đối với các mô-đun có thể tải được.
Tóm tắc
modprobe [-adnqv] [-C config] mô-đun [symbol=value …] modprobe [-adnqv] [-C config] [-t type] mẫu modprobe -l [-C config] [-t type] mẫu modprobe -C [-C config] modprobe -NS [-dnv] [-C config] [module …] modprobe -Vh
Tùy chọn
-một, –tất cả các
Tải tất cả các mô-đun phù hợp thay vì dừng sau lần tải thành công đầu tiên.
-C, –showconfig
Hiển thị cấu hình hiện đang sử dụng.
-C, –config cấu hình
Sử dụng tệp cấu hình thay vì (tùy chọn) /etc/modules.conf để chỉ định cấu hình. Biến môi trường MODULECONF cũng có thể được sử dụng để chọn (và ghi đè) một tệp cấu hình khác với tệp mặc định /etc/modules.conf (hoặc /etc/conf.modules không được dùng nữa).
Khi môi trường biến UNAME_MACHINE được đặt, modutils sử dụng giá trị của nó thay vì trường máy từ cuộc gọi tổng hợp uname (). Điều này chủ yếu được sử dụng khi biên dịch các mô-đun 64-bit trong không gian người dùng 32-bit hoặc ngược lại, đặt UNAME_MACHINE đối với loại mô-đun. Các modutils hiện tại không hỗ trợ chế độ xây dựng chéo đầy đủ cho các mô-đun, nó bị giới hạn trong việc lựa chọn giữa các phiên bản 32-bit và 64-bit của kiến trúc máy chủ.
-NS, –debug
Hiển thị thông tin về đại diện bên trong của ngăn xếp mô-đun.
-NS, –Cứu giúp
Hiển thị tóm tắt các tùy chọn và thoát ngay lập tức.
-k, –tự động làm sạch
Đặt autoclean trên các mô-đun đã tải. Được kernel sử dụng khi nó gọi modprobe để đáp ứng một tính năng còn thiếu (được cung cấp dưới dạng mô-đun). Các -NS tùy chọn được ngụ ý bởi -k. Các tùy chọn này được tự động gửi đến insmod.
-NS, –chỉ
Không thực hiện hành động, chỉ hiển thị những gì sẽ được thực hiện.
-NS, –im lặng
Đừng phàn nàn về việc insmod không cài đặt được mô-đun. Tiếp tục như bình thường, nhưng âm thầm, với các khả năng khác để modprobe kiểm tra. Tùy chọn này được tự động gửi đến insmod.
-NS, –tẩy
Loại bỏ mô-đun (ngăn xếp) hoặc thực hiện tự động quét, tùy thuộc vào việc có bất kỳ mô-đun nào được đề cập trên dòng lệnh hay không.
-NS, –syslog
Báo cáo qua nhật ký hệ thống thay vì stderr. Tùy chọn này được tự động gửi đến insmod.
-NS kiểu mô-đun; –thể loại kiểu mô-đun
Chỉ xem xét các mô-đun thuộc loại này. modprobe chỉ xem xét các mô-đun có đường dẫn thư mục bao gồm chính xác / moduletype /. kiểu mô-đun có thể bao gồm nhiều hơn một tên thư mục, ví dụ: -NS trình điều khiển / net liệt kê các mô-đun trong xxx / trình điều khiển / net / và các thư mục con của nó.
-v, –verbose
In tất cả các lệnh khi chúng được thực thi.
-V, – phiên bản
Hiển thị phiên bản của modprobe.
Tên mô-đun không được chứa đường dẫn (không /), tên cũng không được chứa dấu .o. Ví dụ, trượt là một tên mô-đun hợp lệ cho modprobe, /lib/modules/2.2.19/net/slip và trượt.o không hợp lệ. Điều này áp dụng cho dòng lệnh và các mục trong cấu hình.
Mô tả của Lệnh
Các tiện ích modprobe và depmod nhằm mục đích làm cho nhân mô-đun Linux dễ quản lý hơn cho người dùng, quản trị viên và người bảo trì phân phối.
Modprobe sử dụng tệp phụ thuộc giống Makefile, được tạo bởi depmod, để tự động tải các mô-đun có liên quan từ tập hợp các mô-đun có sẵn trong cây thư mục được xác định trước.
Modprobe được sử dụng để tải một mô-đun đơn lẻ, một chồng các mô-đun phụ thuộc hoặc tất cả các mô-đun được đánh dấu bằng một thẻ cụ thể.
Modprobe tự động tải tất cả các mô-đun cơ sở cần thiết trong một ngăn xếp mô-đun, như được mô tả bởi tệp phụ thuộc modules.dep. Nếu việc tải một trong các mô-đun này không thành công, thì toàn bộ ngăn xếp mô-đun hiện tại được tải trong phiên hiện tại sẽ tự động được tải xuống.
Modprobe có hai cách tải mô-đun. Một cách (chế độ thăm dò) sẽ cố gắng tải một mô-đun ra khỏi danh sách (được xác định bởi mẫu). Modprobe ngừng tải ngay sau khi một mô-đun tải thành công. Điều này có thể được sử dụng để tự động tải một trình điều khiển Ethernet ra khỏi danh sách. Một cách khác mà modprobe có thể được sử dụng là tải tất cả các mô-đun từ một danh sách.
Với tùy chọn -NS, modprobe tự động dỡ bỏ một chồng các mô-đun, tương tự như cách rmmod -r làm. Chỉ sử dụng modprobe -r dọn dẹp các mô-đun tự động nạp không sử dụng và cũng thực hiện các lệnh xóa trước và sau trong tệp cấu hình /etc/modules.conf.
Kết hợp các tùy chọn -l và -NS liệt kê tất cả các mô-đun có sẵn của một loại nhất định.
Lựa chọn -C in cấu hình đang sử dụng (mặc định + tệp cấu hình).
Cấu hình
Hành vi của modprobe (và depmod) có thể được sửa đổi bởi tệp cấu hình (tùy chọn) /etc/modules.conf. Để biết mô tả chi tiết về những gì tệp này có thể chứa, cũng như cấu hình mặc định được sử dụng bởi depmod và modprobe, hãy xem modules.conf(5).
Các lệnh xóa trước và sau không được thực thi nếu một mô-đun được kerneld tự động nhận. Thay vào đó, hãy tìm kiếm sự hỗ trợ sắp tới để lưu trữ mô-đun liên tục. Nếu bạn muốn sử dụng các tính năng trước và sau khi cài đặt, hãy tắt autoclean cho kerneld và thay vào đó đặt một cái gì đó giống như dòng sau trong crontab (điều này cũng được sử dụng cho hệ thống kmod) để thực hiện autoclean 2 phút một lần:
*/2 * * * * test -f /proc/modules && /sbin/modprobe -r
Chiến lược
Ý tưởng là modprobe sẽ tìm kiếm đầu tiên trong thư mục chứa các mô-đun được biên dịch cho bản phát hành hiện tại của hạt nhân. Nếu không tìm thấy mô-đun ở đó, modprobe sẽ tìm trong thư mục chung cho phiên bản hạt nhân (ví dụ: 2.0, 2.2). Nếu vẫn không tìm thấy mô-đun, modprobe sẽ tìm trong thư mục chứa mô-đun cho bản phát hành mặc định, v.v.
Khi bạn cài đặt một Linux mới, các mô-đun phải được chuyển đến một thư mục liên quan đến bản phát hành (và phiên bản) của hạt nhân bạn đang cài đặt. Sau đó, thực hiện một liên kết biểu tượng từ thư mục này đến thư mục mặc định.
Mỗi khi bạn biên dịch một nhân mới, lệnh làm cho module_install tạo một thư mục mới, nhưng sẽ không thay đổi liên kết mặc định.
Khi bạn nhận được một mô-đun không liên quan đến phân phối hạt nhân, hãy đặt nó vào một trong các thư mục độc lập với phiên bản trong / lib / mô-đun.
Đây là chiến lược mặc định, có thể được ghi đè trong /etc/modules.conf.
Các ví dụ
modprobe -t net
Tải một trong các mô-đun được lưu trữ trong thư mục được gắn thẻ lưới. Mỗi mô-đun được thử cho đến khi một mô-đun thành công.
modprobe -a -t khởi động
Tất cả các mô-đun được lưu trữ trong các thư mục được gắn thẻ khởi động được tải.
phiếu modprobe
Điều này cố gắng tải mô-đun slhc.o nếu nó chưa được tải trước đó vì mô-đun trượt cần chức năng trong mô-đun slhc. Sự phụ thuộc này được mô tả trong tệp modules.dep được tạo tự động bởi depmod.
modprobe -r trượt
Thao tác này sẽ dỡ bỏ mô-đun trượt. Nó cũng tự động dỡ bỏ mô-đun slhc, trừ khi nó cũng được sử dụng bởi một số mô-đun khác (ví dụ: ppp).
Xem thêm: depmod (8), lsmod (8), kerneld (8), ksyms (8), rmmod (8).
Chế độ an toàn
Nếu uid hiệu dụng không bằng uid thực, thì modprobe sẽ xử lý đầu vào của nó một cách cực kỳ nghi ngờ. Tham số cuối cùng luôn được coi là tên mô-đun, ngay cả khi nó bắt đầu bằng –. Chỉ có thể có một tên mô-đun và các tùy chọn của biểu mẫu biến = giá trị bị cấm. Tên mô-đun luôn được coi là một chuỗi, không có mở rộng meta nào được thực hiện ở chế độ an toàn. Tuy nhiên, mở rộng meta được áp dụng cho dữ liệu đọc từ tệp cấu hình.
euid có thể không bằng uid khi modprobe được gọi từ kernel, điều này đúng với kernel 2.4.0-test11 trở lên. Trong một thế giới lý tưởng, modprobe có thể tin tưởng hạt nhân chỉ chuyển các tham số hợp lệ cho modprobe. Tuy nhiên, ít nhất một lần khai thác root cục bộ đã xảy ra do mã hạt nhân cấp cao chuyển trực tiếp các tham số chưa được xác minh từ người dùng tới modprobe. Vì vậy, modprobe không còn tin tưởng đầu vào hạt nhân nữa.
modprobe tự động đặt chế độ an toàn khi môi trường chỉ bao gồm các chuỗi này
HOME=/
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
Điều này phát hiện việc thực thi modprobe từ hạt nhân trên các hạt nhân 2.2 mặc dù 2.4.0-test11, ngay cả khi uid == euid, điều này thực hiện trên các hạt nhân trước đó.
Lệnh ghi nhật ký
Nếu thư mục / var / log / ksymoops tồn tại và modprobe được chạy với một tùy chọn có thể tải hoặc xóa một mô-đun, modprobe ghi lại lệnh của nó và trả về trạng thái trong / var / log / ksymoops / ‘date +% Y% m% d.log’. Không có công tắc nào để tắt tính năng ghi nhật ký tự động này, nếu bạn không muốn nó xảy ra, đừng tạo / var / log / ksymoops. Nếu thư mục đó tồn tại, nó phải được sở hữu bởi root và ở chế độ 644 hoặc 600 và bạn nên chạy script insmod_ksymoops_clean mỗi ngày hoặc lâu hơn.
Các tiện ích bắt buộc
depmod (8), insmod (8).
Sử dụng Đàn ông yêu cầu (% Đàn ông) để xem cách một lệnh được sử dụng trên máy tính của bạn.
Cảm ơn vì đã cho chúng tôi biết!
Nói cho chúng tôi tại sao!
Khác
Không đủ chi tiết
Khó hiểu