Як переконатися, що драйвер Wi-Fi (встановлений як об’єкт ядра) все ще працює після оновлення ядра?


1

Я встановив драйвер як * .ko (побудував його з джерела) і помістив його /etc/modules

Після перезавантаження драйвер не вдалося завантажити, і я помітив, що я фактично запускаю нове ядро ​​(можливо, змінилося під час останнього оновлення з програмного центру).

Я якось відчуваю, що існує спосіб змусити драйвер встановлювати щоразу, коли ядро ​​оновлюється, не роблячи це вручну.

Отже, як це зробити?

Відповіді:


1

Якщо у вас є джерело для драйвера (те, що ви прямо не повідомляєте у своєму дописі), вам знадобиться його перекомпілювати. Існує програма, яка може подбати про це для вас, яка називається dkms for Dynamic Kernel Module Support.

В основному те, що вам потрібно зробити, це створити dkms.confфайл у каталозі, створеному за допомогою un'tarring пакета, а потім помістіть ці рядки у dkms.confфайл:

  PACKAGE_NAME=r8168
  PACKAGE_VERSION=8.032.00
  MAKE[0]="'make'"
  BUILT_MODULE_NAME[0]=r8168
  BUILT_MODULE_LOCATION[0]="./"
  DEST_MODULE_LOCATION[0]="/kernel/updates/dkms"
  AUTOINSTALL="YES"

Каталоги ідентифікуються за їх відносними шляхами; джерелом цього відносного шляху є каталог, де знаходиться dkms.confфайл. Не забудьте перевірити правильність команд make, вам доведеться перевірити їх у відповідності зі звичайним файлом README.txt, що міститься у кожному пакеті.

Тепер, завжди з цього каталогу, ми копіюємо все в його цільовий каталог:

  sudo cp -R . /usr/src/r8168-8.032.00/

Нарешті, ви скажете dkmsзробити своє:

  dkms add -m r8168 -v 8.032.00
  dkms build -m r8168 -v 8.032.00
  dkms install -m r8168 -v 8.032.00

і ви закінчили.

Редагувати:

Вибачте, я забув, що вам потрібно встановити заголовки ядра та зробити / config / gcc, ... які в дистрибутивах сімейства Debian (Debian, Ubuntu, Mint ... aptosid ...) можна завантажити за допомогою:

   sudo apt-get install linux-headers-generic build-essential

Інші дистрибутиви мають еквівалентні команди.


Так, у мене є джерело для водія. Мій драйвер має файл Makefile у своїй кореневій папці та не має жодної srcпапки. Крім того , при установці його я просто втік make && make installбез вказівки KERNELDIRзмінної, тому я повинен просто працювати make && make installв MAKEзмінної? куди вказати BUILT_MODULE_LOCATION?
Ордахан

@ordahan Я змінив свою відповідь, щоб відобразити ваш коментар. Що стосується BUILT_MODULE_LOCATION, то це повинен бути каталог, де залишився файл .ko. У публікації вище, я припускав, що він залишився в каталозі, з якого ви видаєте свої команди. Вам доведеться перевірити, що це так, адже це залежить від вашого makefile.
MariusMatutiae

Я отримую цю помилку при спробі додати до dkms:dkms.conf: Error! No 'DEST_MODULE_LOCATION' directive specified for record #0. dkms.conf: Error! Directive 'DEST_MODULE_LOCATION' does not begin with '/kernel', '/updates', or '/extra' in record #0. Error! Bad conf file.
ordahan

@ordahan Я дав у відповідь приклад робочого dkms.conf. Цим я користуюся. Дай мені знати.
MariusMatutiae

Так, THX, мені просто потрібно було встановитиDEST_MODULE_LOCATION
Ордахан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.