Ubuntu Developer Week: Пакуем модули ядра с DKMS

    Краткая компиляция irc-чата в рамках Ubuntu Developer Week на тему «Packaging Kernel modules with DKMS»

    Пакуем модули ядра с DKMS. Докладчик: уже известный нам Ben Collins

    Смотрю я на список материалов январского Ubuntu Developer Week и глаз радуется. Много хорошего материала было рассмотрено в добровольно-принудительном общении разработчиков с комьюнити. Начнем сегодня с разговора о ядерных модулях и одном замечательном фреймворке для ухода за ними.

    DKMS — это, по мнению докладчика, программа, позволяющая легко управлять исходниками модулей и автоматически собирать их с требуемой версией ядра. В основном эту систему используют те, кто нуждается в сторонних модулях для дистрибутивного ядра. Еще DKMS используют с модулями от производителей железа, содержащих в себе бинарные или закрытые части (broadcom, fglrx, nvidia).

    Ну что сказать, казалось бы интересная тема абсолютно не вызвала ажиотажа у слушателей. Бен дал ссылку на свою презентацию, вкратце рассказал о 2х технических нюансах и на этом все закончилось.
    Ни единого вопроса.

    Ок, пока качается видео ролик презентации от Бена, рассмотрим тему сами. У меня как раз есть в системе подходящий модуль на роль подопытного. Ядро моей Убунты не содержит драйвера веб-камеры ноутбука, поэтому пройдем все этапы его сборки с применением DKMS.

    Устанавливаем сам фреймворк:
    sudo aptitude install dkms
    Смотрим что у нас есть:
    dkms status
    Получаем исходники драйвера прямо из апстрима:
    sudo git clone repo.or.cz/r/microdia.git /usr/src/microdia-v2009.01
    Создаем по шаблону конфигурацию:
    sudo cp /usr/share/doc/dkms/sample.conf /usr/src/microdia-v2009.01/dkms.conf
    Затем редактируем:
    sudo vim /usr/src/microdia-v2009.01/dkms.conf
    Приводим dkms.conf к следующему виду:
    PACKAGE_VERSION="v2009.01"
    PACKAGE_NAME="microdia"

    MAKE[0]="make -C ${kernel_source_dir} SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build modules"
    CLEAN="make -C ${kernel_source_dir} SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean"

    BUILT_MODULE_NAME[0]="sn9c20x"
    DEST_MODULE_LOCATION[0]="/kernel/drivers/media/video/usbvideo/"

    REMAKE_INITRD="no"
    AUTOINSTALL="yes"

    Делаем 1-2-3:
    sudo dkms add -m microdia -v v2009.01
    sudo dkms build -m microdia -v v2009.01
    sudo dkms install -m microdia -v v2009.01

    Смотрим на статус:
    dkms status
    Проверяем работоспособность:
    sudo ls /lib/modules/`uname -r`/updates/dkms
    sudo modprobe sn9c20x
    ls -l /dev/video0
    LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so mplayer tv:// -tv driver=v4l2:width=320:height=240:fps=25:device=/dev/video0 -vo xv


    Теперь ждем когда очередное обновление ядра Jaunty протестирует эту автосборку. А пока радуемся рабочей веб-камере и не забываем, что у Дебиана(а значит и Убунту) есть родной module-assistant для подобных целей.

    Начиная с этого поста, буду публиковать в Убунтариум, а то прошлые заметки об Open Week многие не увидели.

    Комментарии 3

      0
      Да, я тоже там не заметил… можешь переместить посты в убунтариум?
        0
        спасибо, как раз изучаю ядро
          0
          да, после апдейта ядра в Jaunty автоматически собрался модуль microdia. dkms работает.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое