The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Использование DKMS для перестроения драйверов без их пересборки при обновлении Linux ядра
В Ubuntu 8.10 интегрирована технология DKMS (Dynamic Kernel Module Support, http://linux.dell.com/dkms),
позволяющая автоматически перестраивать текущие модули ядра с драйверами
устройств после обновления версии ядра.

Пример 1. Драйвер mad-wifi на ноутбуке Samsung R25 с wifi-картой на чипсете Atheros AR242x.
Оригинал заметки: http://blog.antage.name/2008/11/atheros-wifi-dkms.html

1. Ставим DKMS:

      sudo apt-get install dkms

2. Качаем и распаковываем исходники драйвера:

      cd
      wget http://snapshots.madwifi-project.org/madwifi-hal-0.10.5.6/madwifi-hal-0.10.5.6-r3875-20081105.tar.gz
      sudo tar xzf madwifi-hal-0.10.5.6-r3875-20081105.tar.gz -C /usr/src/

3. Создаем конфиг модуля в файле /usr/src/madwifi-hal-0.10.5.6-r3875-20081105/dkms.conf:

      PACKAGE_NAME="madwifi-hal"
      PACKAGE_VERSION="0.10.5.6-r3875-20081105"

      AUTOINSTALL="yes"

      BUILT_MODULE_NAME[0]="ath_pci"
      BUILT_MODULE_LOCATION[0]="ath/"
      DEST_MODULE_LOCATION[0]="/kernel/net/"

      BUILT_MODULE_NAME[1]="ath_hal"
      BUILT_MODULE_LOCATION[1]="ath_hal/"
      DEST_MODULE_LOCATION[1]="/kernel/net/"

      BUILT_MODULE_NAME[2]="ath_rate_sample"
      BUILT_MODULE_LOCATION[2]="ath_rate/sample/"
      DEST_MODULE_LOCATION[2]="/kernel/net/"

      BUILT_MODULE_NAME[3]="ath_rate_minstrel"
      BUILT_MODULE_LOCATION[3]="ath_rate/minstrel/"
      DEST_MODULE_LOCATION[3]="/kernel/net/"

      BUILT_MODULE_NAME[4]="ath_rate_amrr"
      BUILT_MODULE_LOCATION[4]="ath_rate/amrr/"
      DEST_MODULE_LOCATION[4]="/kernel/net/"

      BUILT_MODULE_NAME[5]="ath_rate_onoe"
      BUILT_MODULE_LOCATION[5]="ath_rate/onoe/"
      DEST_MODULE_LOCATION[5]="/kernel/net/"

      BUILT_MODULE_NAME[6]="wlan"
      BUILT_MODULE_LOCATION[6]="net80211/"
      DEST_MODULE_LOCATION[6]="/kernel/net/"

      BUILT_MODULE_NAME[7]="wlan_scan_ap"
      BUILT_MODULE_LOCATION[7]="net80211/"
      DEST_MODULE_LOCATION[7]="/kernel/net/"

      BUILT_MODULE_NAME[8]="wlan_scan_sta"
      BUILT_MODULE_LOCATION[8]="net80211/"
      DEST_MODULE_LOCATION[8]="/kernel/net/"

      BUILT_MODULE_NAME[9]="wlan_tkip"
      BUILT_MODULE_LOCATION[9]="net80211/"
      DEST_MODULE_LOCATION[9]="/kernel/net/"

      BUILT_MODULE_NAME[10]="wlan_xauth"
      BUILT_MODULE_LOCATION[10]="net80211/"
      DEST_MODULE_LOCATION[10]="/kernel/net/"

      BUILT_MODULE_NAME[11]="wlan_wep"
      BUILT_MODULE_LOCATION[11]="net80211/"
      DEST_MODULE_LOCATION[11]="/kernel/net/"

      BUILT_MODULE_NAME[12]="wlan_ccmp"
      BUILT_MODULE_LOCATION[12]="net80211/"
      DEST_MODULE_LOCATION[12]="/kernel/net/"

      BUILT_MODULE_NAME[13]="wlan_acl"
      BUILT_MODULE_LOCATION[13]="net80211/"
      DEST_MODULE_LOCATION[13]="/kernel/net/"

4. Добавлем драйвер в DKMS:

      sudo dkms add -m madwifi-hal -v 0.10.5.6-r3875-20081105

5. Собираем и инсталлируем:

      sudo dkms build -m madwifi-hal -v 0.10.5.6-r3875-20081105
      sudo dkms install -m madwifi-hal -v 0.10.5.6-r3875-20081105


Пример 2. Автосборка модуля файловой системы BTRFS при обновлении ядра.
Оригинал заметки: http://deepwalker.blogspot.com/2008/11/810-dkms-nvidia-btrfs.html

Загружаем исходники модуля ядра и кладем их в /usr/src/btrfs-0.16. 
В том же каталоге создаем dkms.conf следующего содержания:

      MAKE[0]=make
      BUILT_MODULE_NAME[0]=btrfs
      DEST_MODULE_LOCATION[0]="/kernel/fs/btrfs"
      PACKAGE_NAME="btrfs"
      PACKAGE_VERSION="0.16"
      CLEAN="make clean"
      AUTOINSTALL="yes"


Далее следует серия команд для запуска модуля в работу:

      # dkms add -m btrfs -v 0.16
      # dkms add -m btrfs -v 0.16

      Creating symlink /var/lib/dkms/btrfs/0.16/source -> /usr/src/btrfs-0.16

      DKMS: add Completed.
      
      # dkms build -m btrfs -v 0.16

      Kernel preparation unnecessary for this kernel. Skipping...

      Building module:
      cleaning build area....
      make KERNELRELEASE=2.6.27-7-generic............
      cleaning build area....

      DKMS: build Completed.

      # dkms install -m btrfs -v 0.16

      Running module version sanity check.

      btrfs.ko:
      - Original module
      - No original module exists within this kernel
      - Installation
      - Installing to /lib/modules/2.6.27-7-generic/updates/dkms/

      depmod........

      DKMS: install Completed.

      modprobe btrfs
 
12.11.2008
Ключи: btrfs, dkms, linux, kernel, module, build / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, pavlinux (ok), 17:46, 12/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Создаем и копируем все дриверы в одну папку!

    # mkdir /usr/src/drivers
    # cp -a btrfs-0.16.tar.bz2 madwifi.tar.bz2 ipw3945-1.0.2.tar.bz2 /usr/src/drivers

    for i in /usr/src/drivers
       do
          cd $i;
          make clean; make; make install;
          cd -
    done

     
     
  • 2.2, User294 (ok), 17:51, 12/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    А при выходе нового ядра я так понимаю Павлин предлагает в i-й раз перекомпиливать все самостоятельно, так? =)
     
     
  • 3.3, pavlinux (ok), 20:39, 12/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Как же эта хрень определяет что появилось новое ядро?


    Так и мы, попишемся в /etc/cron.daily, со словами


    #!/bin/sh

    VER="/etc/kernel.version"


    function recompile(){

        for i in /usr/src/drivers
           do
             pushd
                  cd $i;
                    make clean && make && make install
                    if [ $? != 0]
                      then
                           exit 1;
                    fi
             popd
       done
    uname -r > $VER;
    }


    main() {

         if [ 'md5sum $VER' -ne 'uname -r | md5sum' ]
           then
               recompile;
           else
               exit 0;
         fi
    }

    main;

      
    Причёсывайте сами...

     
     
  • 4.7, User294 (ok), 21:30, 14/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Причёсывайте сами...

    Юзайте это сами, thanks :).Так сходу - а что будет если апдейт ядра случится до того как это daily отстреляется? =)

     
     
  • 5.11, pavlinux (ok), 23:40, 15/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Ну блин, ты Unix_oid или откуда

    Говорю же
    > Причёсывайте сами...

    cat >> /etc/crontab << EOF
    1 * * * *  root /etc/cron.dayly/update_modules.sh
    EOF


      

     

  • 1.4, Аноним (-), 21:32, 12/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Причёсывайте сами...

    Рассмешил.

     
     
  • 2.5, pavlinux (ok), 03:04, 13/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >> Причёсывайте сами...
    >
    >Рассмешил.

    А такой монстроподобный dkms.conf для каждого драйвера, это смешно? :)

     
     
  • 3.8, User294 (ok), 22:28, 14/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А такой монстроподобный dkms.conf для каждого драйвера, это смешно? :)

    Смотрим текст новости еще раз, для btrfs =)
    ======================
          MAKE[0]=make
          BUILT_MODULE_NAME[0]=btrfs
          DEST_MODULE_LOCATION[0]="/kernel/fs/btrfs"
          PACKAGE_NAME="btrfs"
          PACKAGE_VERSION="0.16"
          CLEAN="make clean"
          AUTOINSTALL="yes"
    ======================

    И вот это теперь называется монструозным конфигом?Ну тогда наверное пора начинать считать в стиле 1, 2, много... если 7 строчек - монструозно =)

    Первый конфиг в примере - для большой *кучки* модулей.Вы что, десятками добавляется собственные модули в ядро? =)

     

  • 1.9, Valentin (??), 22:31, 14/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Аффигеть. А теперь расскажите мне, чем оно лучше module-assistant Debian'а!
    Пример:
    установка дров nvidia (ядерного модуля и только):

    m-a prepare #подготовка ядра к сборке модулей
    m-a a-i nvidia # _загрузка_, сборка и установка модуля
    modprobe nvidia #profit

     
     
  • 2.10, Zulu (?), 14:35, 15/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Мало чем, но DKMS более распространен и стало быть для совместимости его надо поддерживать.
     

  • 1.12, pavlinux (ok), 00:39, 22/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А я Вам даже объясню почему подобные вещи - зло для Unix.

      Вся прелесть открытых Unix_ов - полный контроль над системой.
    Данные скриптовые комплексы - разрушают эту гармонию, когда рушатся
    такие системы, вам приходиться изучать, чужие методы и способы работы
    со скриптовыми языками!
      Время которое уйдёт на создание и эксплуатацию Вашей системы, намного
    меньше, чем изучение и ремонт чужой.
    Особенное зло - это использование чужих фаирволов на базе iptables/xtables/iproute2.

     
     
  • 2.13, User294 (ok), 22:51, 22/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А я Вам даже объясню почему подобные вещи - зло для Unix.

    А при чем тут вообще юниксы?Разговор про лоадабельные модули ядра в линуксах.Вы хотите рулить модулями ядра во всех *никсоподобных одинаково?Жаль но боюсь что с этой мечтой придется умереть.А так по вашей логике cron тоже зло.

    >  Вся прелесть открытых Unix_ов - полный контроль над системой.

    Поэтому давайте выкинем крон нафиг.Будем сами вместо него принимать решения когда надо модули сбилдить или там процесс запустить.

    >Данные скриптовые комплексы - разрушают эту гармонию, когда рушатся
    >такие системы, вам приходиться изучать, чужие методы и способы работы
    >со скриптовыми языками!

    А почему вас не коробит изучать "чужие" скриптовые конструкции скажем для управления старичком init?Собссно по вашей логике дебиановские средства для упрощения настройки стартовых скриптов надо выбросить.В редхатоподобных - аналогично.И айда педалить с десяток симлинков в разных дирах руками!Ибо нефиг автоматизировать этот процесс.А то отличия между *никсами получаются, мать-мать-мать...

    >Особенное зло - это использование чужих фаирволов на базе iptables/xtables/iproute2.

    Какой же ты зануда, Павлин =).Скажи, а при нужде доехать из точки А в точку Б ты сперва тоже озадачиваешься вопросами угла опережения зажигания и нытьем про то что автоматические коробки передач - для лохов, а система микроклимата в салоне автоматически удерживающая заданную температуру а также бортовой компьютер с нафигацией - ненужная блажь, да? =)

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру