Apa yang dilakukan DKMS? Bagaimana saya menggunakannya?

23

Saya telah melihat beberapa menyebutkan tentang DKMS baru-baru ini tetapi tidak jelas apa yang sebenarnya dilakukan pada sistem saya.

Apa yang sebenarnya dilakukan DKMS dan bagaimana cara menggunakannya?

pengguna238204
sumber

Jawaban:

25

Paket DKMS (Dukungan Modul Kernel Dinamis) ( http://linux.dell.com/dkms/ ) menyediakan dukungan untuk menginstal versi tambahan dari modul kernel. Paket mengkompilasi dan menginstal ke pohon kernel. Menghapus instalasi mengembalikan modul sebelumnya. Secara default, instalasi adalah pohon kernel saat ini, tetapi pohon kernel apa saja dapat dipilih dengan opsi baris perintah. Selain itu, DKMS dipanggil secara otomatis saat instalasi paket kernel-image Ubuntu baru, dan oleh karena itu modul yang ditambahkan ke DKMS akan secara otomatis dilakukan di seluruh pembaruan.

Ikhtisar

Untuk menggunakan modul dengan DKMS, satu tempat file instalasi modul (bisa menjadi kode sumber atau biner) di / usr / src / -, bersama dengan file konfigurasi dkms.conf yang memberi tahu DKMS cara membangun / mengkonfigurasi modul dan apa nama adalah. Di bawah skenario yang lebih maju, instruksi pembangunan bersyarat dan penambalan dapat dilakukan oleh sistem dkms, tetapi mempertimbangkan pada kasus Anda ini mungkin tidak diperlukan.

Walk-through

Katakanlah Anda ingin memasang modul untuk "Adaptor Luar Biasa" mewah Anda. Anda diberi sumber tarball awesome-20091211-v1.1.tgz.

Dengan DKMS, kami memberi tahu DKMS cara melakukannya untuk Anda dengan membuat file dkms.conf dengan entri yang sesuai. Misalnya, setelah kami membongkar tarball:

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

Di dalam dkms.conf, kita dapat menambahkan baris:

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes

Semua direktori berkaitan dengan lokasi file dkms.conf. Ini memberitahu DKMS

  1. Perintah untuk membangun modul (jalankan make di direktori src /).
  2. Perintah untuk membersihkan source tree (jalankan make clean di direktori src /).
  3. Nama modul tanpa ekstensi .o atau .ko. Ini sebenarnya bisa menjadi array modul jika banyak modul dibangun, lihat man dkms.
  4. Di mana DKMS dapat menemukan modul yang dibangun.
  5. Nama dan versi DKMS harus dikaitkan dengan modul.
  6. Untuk membuat ulang gambar initrd setelah menginstal modul.

Anda juga dapat menambahkan opsi untuk memanggil skrip sebelum atau setelah membangun atau menginstal, memberikan perintah tambahan (bersyarat), perintah tambalan, dll. Dkms.conf sebenarnya bersumber ke skrip shell, sehingga cukup banyak tipu daya dapat dilakukan jika diperlukan. Opsi-opsi ini dan lainnya dijelaskan di bagian dkms.conf di man dkms.

Selanjutnya, kita menginstal modul ke DKMS dengan menyalin file instalasi modul ke pohon sumber kernel / usr / src / - dan memberi tahu DKMS tentang modul baru:

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...

Itu dia! DKMS sekarang telah menambahkan modul kami ke dalam daftar modul yang akan dibangun untuk instalasi kernel di masa depan. Untuk memastikan itu berfungsi dan untuk menginstal modul ke dalam kernel kami saat ini, kami dapat menginstruksikan dkms untuk membangun dan menginstal modul:

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree

Dengan sedikit keberuntungan, modul Anda akan diinstal dan diinstal ulang ke dalam pembaruan kernel di masa depan.

Contohnya

The man page DKMS memiliki informasi yang berguna tentang pengaturan modul kernel favorit Anda untuk digunakan dengan DKMS. Ini bukan dokumentasi yang komprehensif, tetapi akan menjawab banyak pertanyaan. Ini dapat membantu Anda untuk mencatat contoh-contoh berikut, bahkan jika modul yang digunakan bukan yang ingin Anda siapkan:

  • RocketRaid - Dua contoh tentang cara mengatur driver Highpoint RocketRaid RR26xx dan RR62x dengan DKMS.

Dari: help.ubuntu.com

Informasi lebih lanjut dapat ditemukan di sini:

Rinzwind
sumber
2
FWIW, proyek DKMS memiliki rumah baru di Github github.com/dell/dkms
DDay