LINUX.ORG.RU

Syntek webcam и ядро 2.6.38


0

1

Есть ноутбук с вебкамерой из сабжа, к вебкамере есть свободный драйвер. И все было хорошо, пока в сабжевом ядре что-то не выпилили, и драйвер перестал собираться. На SourceForge в обсуждении какой-то добрый человек выложил решение и оно даже помогло следующему комментатору, но я в нем ничего не понял - начиная с diff --git.. Подскажите, как его собрать ?

PS Решение по второй ссылке (для тру :))

I made the following changes to trunk (r101) and I got the driver to compile, load and work fine. It's not an elegant patch, but it worked:

 
diff --git a/driver/Makefile.standalone b/driver/Makefile.standalone 
index ff375b1..bf1041e 100644 
--- a/driver/Makefile.standalone 
+++ b/driver/Makefile.standalone 
@@ -1,5 +1,5 @@ 
-KVER=2.6.36.2 
-#KVER=$(shell uname -r) 
+#KVER=2.6.36.2 
+KVER=$(shell uname -r)
 KSRC=/lib/modules/$(KVER)/build 


diff --git a/driver/stk11xx-sysfs.c b/driver/stk11xx-sysfs.c 
index a9779c9..0b1ba81 100644 
--- a/driver/stk11xx-sysfs.c 
+++ b/driver/stk11xx-sysfs.c 
@@ -40,7 +40,7 @@
 #include <linux/kref.h> 
 #include <linux/device.h> 
 #include <linux/mm.h> 
-#include <linux/videodev.h> 
+//#include <linux/videodev.h> 


  #include <linux/usb.h> 
diff --git a/driver/stk11xx-v4l.c b/driver/stk11xx-v4l.c 
index 8ed04d7..b2c1033 100644 
--- a/driver/stk11xx-v4l.c 
+++ b/driver/stk11xx-v4l.c 
@@ -40,7 +40,7 @@ 
#include <linux/kref.h> 
#include <linux/vmalloc.h> 
#include <linux/mm.h> 
-#include <linux/videodev.h> 
+//#include <linux/videodev.h> 



#include <linux/usb.h> 
@@ -663,8 +663,8 @@ static long v4l_stk11xx_do_ioctl(struct file *fp, 
#endif 
switch (cmd) { 
+/* 
// Video 4 Linux v1 
- 
case VIDIOCGCAP: 
{
 struct video_capability *cap = arg; 
@@ -1004,7 +1004,7 @@ static long v4l_stk11xx_do_ioctl(struct file *fp,
 vu->teletext = -1; 
} 
break; 
- 
+*/ 
// Video 4 Linux v2

★★

Последнее исправление: psh (всего исправлений: 1)

тебе проще будет откатиться на .37
а вообще в .38 много чего переломали, оно довольно глючное
вчера с удивлением словил одно из редких проявлений 12309 (ступор при копировании на флэшку), чего не видел уже ооочень давно

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

Вариант конечно, но у меня на 38м ядре ноут начал нормально выходить из ждущего режима - поэтому хочу завести на нем.

psh ★★
() автор топика

Скажу сразу, что я в этом деле вовсе не специалист и такое ни разу не делал, но, как мне кажется, вот здесь, например:

diff --git a/driver/stk11xx-sysfs.c b/driver/stk11xx-sysfs.c
index a9779c9..0b1ba81 100644
--- a/driver/stk11xx-sysfs.c
+++ b/driver/stk11xx-sysfs.c
@@ -40,7 +40,7 @@
#include <linux/kref.h>
#include <linux/device.h>
#include <linux/mm.h>
-#include <linux/videodev.h>
+//#include <linux/videodev.h>

имеется ввиду, что в файле driver/stk11xx-sysfs.c закомментировали строчку #include <linux/videodev.h>.

xoomer
()

Каааажется понял...
Берете копируете этот код, сохраняете его под именем, например, patch-syntek-2.6.38
Потом копируете этот файл к исходникам 2.6.38. Когда скопируете, в каталоге же исходников, патчите исходники:
cat patch-syntek-2.6.38 | patch -p1

Кстати, последнее 38-е ядро 2.6.38.4.
Ну и соберите это ядро:
make mrproper
make xconfig - здесь включите модулем драйвер stk11xx (как я понял - это он?)
make -j? bzImage
make -j? modules
make modules_install
make install
update-unitramfs -c -k 2.6.38.4-your-suffix
update-grub

//-j? - вместо ? поставьте во сколько потоков считает Ваш процессор. Чтобы быстрее компилировалось.

Я бы делал так. Только я могу ошибиться в чём-то, учтите, пожалуйста.

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

опечатка, правильно:
update-initramfs -c -k 2.6.38.4-your-suffix

xoomer
()
Ответ на: комментарий от pekmop1024

Ничего не проще. Я это освоил ещё до того как поставил Linux, потому что мой ITE Raid отсутствовал среди драйверов Linux. Всё просто.

Парень, качаешь исходный код драйвера. В консоли напиши:

git clone адрес каталог_для_сохранения

Заходишь в каталог для сохранения, сохраняешь туда diff-файл. Например под именем 1.patch. Пишешь:

patch -p1 < 1.diff

-p1 это означает первый уровень. Нулевой - это когда в файле патча driver/Makefile.standalone, но у тебя a/driver/Makefile.standalone. А если бы было a/a/driver/Makefile.standalone то надо бы было -p2.

< это не знаю что, но без него не работает.

Ну вот и всё, дальше сам знаешь, make и готово. Всё это потому что иногда API ядра меняется, но это не сказывается на работоспособности запускаемых тобой программ. Только на драйверах.

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

А ну да, извините, не сообразил. Этого драйвера в ядре нет, видимо, нужно патч на исходник драйвера, а не ядра Linux налаживать.

xoomer
()
Ответ на: комментарий от ZenitharChampion

Как вручную пропатчить в случае если строк для пропатчивания немного. Берёшь файл патча, смотришь что нужно добавить, начинается с +. А что удалить с минус. Остальное - номера строк даны всякий случай, при незначительном смещении строк чтобы отыскать куда делось нужное место. Редактируешь указанные файлы любимым текстовым редактором.

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

Да, при этом должно быть в /usr/src либо исходники ядра, либо linux-headers. Это правда немного информации, я освоил перед тем как поставить первый дистрибутив Mandriva.

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

Попробовал пропатчить командой - ругнулось на что-то. Руками - пропатчилось и собралось. Еще раз спасибо.

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