systemd: tự động hóa lệnh modprobe khi khởi động


20

Phân phối của tôi là Fedora 17 Gnome. Mỗi lần tôi khởi động lại / khởi động lại máy tính, tôi cần chạy lệnh này với quyền root:

modprobe rt2800usb

Làm thế nào tôi có thể làm cho nó vĩnh viễn?


1
Xin chào, cảm ơn bạn cho câu hỏi đầu tiên. Sẽ thật tuyệt nếu bạn có thể đề cập đến bản phân phối linux mà bạn đang đề cập đến :)
Bonsi Scott

1
@BonsiScott Phân phối có lẽ cũng nên được thêm vào văn bản câu hỏi, nhưng thẻ nói Fedora.
depquid

(Ngoài ra, đã xóa câu trả lời của riêng tôi vì nó không dành riêng cho fedora)
Bonsi Scott

@BonsiScott, câu trả lời của bạn có thể hữu ích cho những người khác ...
vonbrand

Câu trả lời:


34

Trên bất kỳ bản phân phối nào, systemdbạn có thể tự động tải mô-đun qua modules-load.d:

  • tạo tập tin cấu hình:

    /etc/modules-load.d/rt2800usb.conf

  • mở nó và chỉnh sửa như thế này (thêm tên mô-đun):

    rt2800usb

  • lần sau bạn khởi động lại mô-đun sẽ được tự động tải


Xử lý sự cố:

Kiểm tra xem systemddịch vụ có tải mô-đun không:

systemctl status systemd-modules-load.service

Đầu ra sẽ trông như thế này:

systemd-modules-load.service - Load Kernel Modules
  Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
  Active: active (exited) since Wed, 03 Apr 2013 22:50:57 +0000; 46s ago
        Docs: man:systemd-modules-load.service(8)
              man:modules-load.d(5)
 Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)

Dòng cuối cùng chứa PID(id quá trình) và mã thoát. status=0/SUCCESScó nghĩa là mô-đun đã được chèn thành công, được xác nhận bởi:

journalctl -b _PID=260

đầu ra là:

Apr 03 22:50:57 mxhst systemd-modules-load[260]: Inserted module 'rt2800usb'

Trong trường hợp thất bại, systemctlđầu ra trông như thế này:

systemd-modules-load.service - Load Kernel Modules
  Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
  Active: failed (Result: exit-code) since Wed, 03 Apr 2013 22:50:59 +0000; 43s ago
        Docs: man:systemd-modules-load.service(8)
              man:modules-load.d(5)
 Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)

journalctl -bbáo cáo:

Apr 03 22:50:59 mxhst systemd-modules-load[260]: Failed to find module 'fakert2800usb'

Khi mã thoát là 0/SUCCESSnó có nghĩa là mô-đun của bạn đã được chèn thành công; đang chạy

lsmod | grep rt2800

cần xác nhận rằng:

rt2800usb              26854  0 
rt2x00usb              19757  1 rt2800usb
rt2800lib              64762  1 rt2800usb
rt2x00lib              66520  3 rt2x00usb,rt2800lib,rt2800usb
mac80211              578735  3 rt2x00lib,rt2x00usb,rt2800lib

Nếu lsmodđầu ra không xác nhận (mặc dù mã thoát dịch vụ đang tồn tại 0/SUCCESS), điều đó có nghĩa là một cái gì đó đã loại bỏ mô-đun sau khi được tải bởi modules-load.service. Một nguyên nhân có thể là một *.conftập tin khác nằm trong danh sách đen của mô-đun. Tìm một dòng như:

blacklist rt2800usb

trong /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.confhoặc /run/modprobe.d/*.confvà nhận xét nó ra / xóa nó.


Tôi đã làm điều này, nhưng mô-đun không tải khi khởi động lại.
một cái gì đó

Có phải vì root là chủ sở hữu của tập tin?
vài thứ gì đó

Khi tôi khởi động lại, tôi vẫn phải thực hiện lệnh modprbe. Nó không được liệt kê vì danh sách là sau khi tôi chạy lệnh modprobe?
một cái gì đó

5

Để tải một mô-đun khi khởi động, bạn tạo một tệp trong /etc/modules-load.d/; tập tin này có thể có bất kỳ tên nào, nhưng phải kết thúc bằng .conf. Trong trường hợp trình điều khiển wifi của bạn, ví dụ bạn có thể tạo tệp /etc/modules-load.d/rt2800.conf.

Trong tệp, thêm một dòng với tên của mô-đun bạn muốn tải như vậy:

rt2800usb

Trang Arch Wiki trên các mô-đun Kernel có nhiều thông tin hơ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.