LINUX.ORG.RU

Как скомпилировать модуль vloopback на ядре 3.2.x ?


0

1

Debian Testing, ядро 3.2.0-4-686-pae #1 SMP Debian 3.2.32-1 i686.

Есть такой ядерный модуль vloopback, который превращает DV-камеру в обычную WEB-камеру. Он создает файл устройства /dev/video0, с которым могут работать такие программы как kopete или там skype.

Официальная страница vloopback: http://www.lavrsen.dk/foswiki/bin/view/Motion/VideoFourLinuxLoopbackDevice

В поставке Debian Testing его нет (точнее, на debian.org даже создана для него страница в репозитории Debian Sid, причем почему-то только с сырцом, но самого файла сырца нет: http://packages.debian.org/sid/vloopback-source). Поэтому нужно компилировать руками.

Самые свежие исходники за 2011 год можно взять здесь:

svn co http://www.lavrsen.dk/svn/vloopback/trunk/ vloopback

Модуль микроскопический, из одного *.c файла. Но сборка не идет. Консольный вывод следующий:

=> make
make -C /lib/modules/3.2.0-4-686-pae/source SUBDIRS=/media/mx_120_part_2/home/xi/work/compilpro/compilpro_debian_5_0_4/vloopback-rev-24 modules
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-4-common'

  ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.


  WARNING: Symbol version dump /usr/src/linux-headers-3.2.0-4-common/Module.symvers
           is missing; modules will have no dependencies and modversions.

  Building modules, stage 2.
/usr/src/linux-headers-3.2.0-4-common/scripts/Makefile.modpost:42: include/config/auto.conf: Нет такого файла или каталога
make[2]: *** Нет правила для сборки цели `include/config/auto.conf'.  Останов.
make[1]: *** [modules] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-4-common'
make: *** [all] Ошибка 2

В системе установлены пакеты с заголовками и сырцами ядра:

  • linux-headers-3.2.0-4-686-pae (3.2.32-1)
  • linux-headers-3.2.0-4-common (3.2.32-1)
  • linux-kbuild-3.2 (3.2.17-1)
  • linux-source (3.2+46)
  • linux-source-3.2 (3.2.32-1)

(сырцы почему-то ставятся в виде tar.bz2 файла, а не в развернутом виде)

Согласно рекомендации в ошибке, я распаковал исходники в каталог /usr/src/linux-source-3.2 (нигде не сказано, как должен называться каталог с сырцами ядра) и выполнил там команды:

make oldconfig && make prepare

Это не помогло, ошибка как была, так и осталась.

Вопрос. Как скомпилировать этот проект?

★★★★★

Ответ на: комментарий от tailgunner

Нет. Каталога config в include нетути.

Зато существует файл: /usr/src/linux-headers-3.2.0-4-686-pae/include/config/auto.conf

Каталог /usr/src/linux-headers-3.2.0-4-common создается из пакета linux-headers-3.2.0-4-common.

Каталог /usr/src/linux-headers-3.2.0-4-686-pae создается из пакета linux-headers-3.2.0-4-686-pae

Чтобы небыло путаницы, я пытался удалить пакет linux-headers-3.2.0-4-common, но он удаляет вместе с собой пакет linux-headers-3.2.0-4-686-pae (в котором как раз таки есть файл auto.conf).

Xintrea ★★★★★ ()
Ответ на: комментарий от anonymous

В zeitgeist-i386.deb попробуй, например.

Чаго? Ты к чему это вообще?

Zeitgeist is a service which logs the user's activities and events (files opened, websites visited, conversations held with other people, etc.) and makes the relevant information available to other applications.

Xintrea ★★★★★ ()
Ответ на: комментарий от tailgunner

Ну заменил в общем в Makefile

KLINK := $(shell test -e /lib/modules/${KVER}/source/ && echo source || echo "build")

на

KLINK := build

Ошибка стала другой:

make -C /lib/modules/3.2.0-4-686-pae/build SUBDIRS=/media/mx_120_part_2/home/xi/work/compilpro/compilpro_debian_5_0_4/vloopback-rev-24 modules
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-4-686-pae'
  CC [M]  /media/mx_120_part_2/home/xi/work/compilpro/compilpro_debian_5_0_4/vloopback-rev-24/vloopback.o
/media/mx_120_part_2/home/xi/work/compilpro/compilpro_debian_5_0_4/vloopback-rev-24/vloopback.c:196:2: error: #error "need CONFIG_VIDEO_V4L1_COMPAT"
/media/mx_120_part_2/home/xi/work/compilpro/compilpro_debian_5_0_4/vloopback-rev-24/vloopback.c:220:28: fatal error: linux/videodev.h: Нет такого файла или каталога
compilation terminated.
make[4]: *** [/media/mx_120_part_2/home/xi/work/compilpro/compilpro_debian_5_0_4/vloopback-rev-24/vloopback.o] Ошибка 1
make[3]: *** [_module_/media/mx_120_part_2/home/xi/work/compilpro/compilpro_debian_5_0_4/vloopback-rev-24] Ошибка 2
make[2]: *** [sub-make] Ошибка 2
make[1]: *** [all] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-4-686-pae'
make: *** [all] Ошибка 2

Видимо, где-то в заголовках ядра должен быть файл linux/videodev.h, а его нет.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Это нужно в самом начале Makefile поставить, или в каком-то определенном месте?

Надеюсь, ты троллишь. Впрочем, уже пофиг.

tailgunner ★★★★★ ()

Из вики дебиана:

Does Debian have /proc/config.gz? /proc/config.gz isn't available in Debian, because the config is provided in /boot/config-*, no need for the in-memory variant (Kernel configuration CONFIG_IKCONFIG and CONFIG_IKCONFIG_PROC). See 541489 The following bash command match the current configuration file (on standard kernel):

ls /boot/config-$(uname -r)

А вот, что нашлось в багтрекере убунты

vloopback supports only v4l1, and latest kernel does not suport v4l1.

Упоминание о втором встречается и в последней ошибке.

silw ★★★★★ ()
Ответ на: комментарий от Xintrea

Точно, файл videodev.h был как минимум в ядре 2.6.32, а в 3.2.x его нет.

И что теперь делать? Не будет vloopback под третьим ядром?

Xintrea ★★★★★ ()
Ответ на: комментарий от silw

Блин, кругом одна деградация. То Firewire разломают, теперь latest kernel does not suport v4l1. Нахрена так делать?

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Заменять на v4l2, причём очень давно. Но API разный, нужно перписывать код.

mky ★★★★★ ()
Ответ на: комментарий от Xintrea

прекрасно, будем знать.
P.S. когда то сам баловался с этим моделем, вот и заинтересовало текущее положение дел

Atlant ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.