systemd: mengotomatiskan perintah modprobe pada saat boot

20

Distribusi saya adalah Fedora 17 Gnome. Setiap kali saya reboot / restart komputer saya, saya perlu menjalankan perintah ini sebagai root:

modprobe rt2800usb

Bagaimana saya bisa membuatnya permanen?

sesuatu Sesuatu
sumber
1
Hai, terima kasih untuk pertanyaan pertama Anda. Akan lebih baik jika Anda bisa menyebutkan distribusi linux yang Anda maksudkan :)
Bonsi Scott
1
@BonsiScott Distribusi mungkin harus ditambahkan ke teks pertanyaan, juga, tetapi tag itu mengatakan Fedora.
depquid
(Juga, hapus jawaban saya sendiri karena tidak khusus fedora)
Bonsi Scott
@BonsiScott, jawaban Anda mungkin bermanfaat bagi orang lain ...
vonbrand

Jawaban:

34

Pada setiap distro yang menggunakan systemdAnda dapat memuat modul secara otomatis melalui modules-load.d:

  • buat file config:

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

  • buka dan edit seperti ini (tambahkan nama modul):

    rt2800usb

  • lain kali Anda me-reboot modul akan dimuat secara otomatis


Penyelesaian masalah:

Periksa apakah systemdlayanan memuat modul:

systemctl status systemd-modules-load.service

Outputnya akan terlihat seperti ini:

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)

Baris terakhir berisi PID(id proses) dan kode keluar. status=0/SUCCESSberarti modul berhasil dimasukkan, dikonfirmasi oleh:

journalctl -b _PID=260

output menjadi:

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

Dalam hal kegagalan, systemctloutput terlihat seperti ini:

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)

dengan journalctl -bpelaporan:

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

Ketika kode keluar 0/SUCCESSitu berarti modul Anda telah berhasil dimasukkan; berlari

lsmod | grep rt2800

harus mengkonfirmasi bahwa:

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

Jika lsmodoutput tidak mengkonfirmasi (meskipun kode keluar layanan 0/SUCCESS) itu berarti ada sesuatu yang dihapus modul setelah diambil oleh modules-load.service. Salah satu penyebab yang mungkin adalah *.conffile lain yang masuk daftar hitam modul. Cari garis seperti:

blacklist rt2800usb

di /etc/modprobe.d/*.conf, /usr/lib/modprobe.d/*.confatau /run/modprobe.d/*.confdan komentari / hapus itu.

don_crissti
sumber
Saya sudah melakukan ini, tetapi modul tidak memuat saat reboot.
somethingSomething
Apakah karena root adalah pemilik file?
somethingSomething
Ketika saya reboot, saya masih harus melakukan perintah modprbe. Bukankah itu terdaftar karena daftar itu setelah saya menjalankan perintah modprobe?
somethingSomething
5

Untuk memuat modul saat boot, Anda membuat file di /etc/modules-load.d/; file ini dapat memiliki nama apa saja, tetapi harus diakhiri dengan .conf. Dalam hal driver wifi Anda, Anda bisa misalnya membuat file /etc/modules-load.d/rt2800.conf.

Dalam file tersebut, tambahkan satu baris dengan nama modul yang ingin Anda muat seperti:

rt2800usb

Halaman Arch Wiki pada modul Kernel memiliki informasi lebih lanjut.

jasonwryan
sumber