Форум Зейского сообщества любителей ОС Linux и Unix
Тематические обсуждения *nix => Общие вопросы => Тема начата: Vena от Пятница, 16 Сентября, 2011, 05:27:19
-
Привет!
Есть такая проблема. Debian lenny с ядром 2.6.30. Установлены "дрова" на карточку захвата изображения tw6815.
Мне нужно поменять при настройке некоторые параметры. Для этого пытаюсь выгрузить модуль
$ sudo rmmod tw68в ответ получаю
ERROR: Module tw68 is in useникак не найду, кто его держит? Как выяснить или принудительно выгрузить модуль?
$ lsmod |grep tw68
tw68 39484 1
v4l2_common 14116 1 tw68
videodev 31844 4 uvcvideo,tw68,v4l2_common
videobuf_dma_sg 11104 1 tw68
videobuf_core 16064 2 tw68,videobuf_dma_sg
btcx_risc 4420 1 tw68
-
$ sudo rmmod tw68Что по этому поводу пишет syslog ?
Какие зависимости есть у модуля?
modinfo tw68
На выводе:
$ lsmod |grep tw68
tw68 39484 1
v4l2_common 14116 1 tw68
videodev 31844 4 uvcvideo,tw68,v4l2_common
videobuf_dma_sg 11104 1 tw68
videobuf_core 16064 2 tw68,videobuf_dma_sg
btcx_risc 4420 1 tw68
модуль tw68 используется другими модулями: videodev, videobuf_dma_sg, videobuf_core, btcx_risc - их все нужно выгрузить перед тем как выгружать основной tw68.
Можно зависимые модули выгружать вручную, а можно попробовать применить команду:
# modprobe -r -v tw68
,где ключ -r (от англ. "remove") старается выгрузить зависимости, а потом и сам модуль; -v - нужно для вывода отладочной информации.
-
$ sudo rmmod tw68Что по этому поводу пишет syslog ?
сислог ничего нового не пишет :(
Sep 17 13:29:27 video kernel: [ 9683.807193] tw68_qbuf()
Sep 17 13:29:27 video kernel: [ 9683.807205] buffer_queue(0)
Sep 17 13:29:27 video kernel: [ 9683.807216] tw68_dqbuf()
Sep 17 13:29:27 video kernel: [ 9683.870066] tw68_wakeup()
Sep 17 13:29:28 video kernel: [ 9684.307219] tw68_qbuf()
Sep 17 13:29:28 video kernel: [ 9684.307230] buffer_queue(1)
Sep 17 13:29:28 video kernel: [ 9684.307241] tw68_dqbuf()
Sep 17 13:29:28 video kernel: [ 9684.350106] tw68_wakeup()
Sep 17 13:29:28 video kernel: [ 9684.807256] tw68_qbuf()
Sep 17 13:29:28 video kernel: [ 9684.807266] buffer_queue(2)
Sep 17 13:29:28 video kernel: [ 9684.807278] tw68_dqbuf()
Sep 17 13:29:28 video kernel: [ 9684.870145] tw68_wakeup()
Sep 17 13:29:29 video kernel: [ 9685.307488] tw68_qbuf()
Sep 17 13:29:29 video kernel: [ 9685.307499] buffer_queue(3)
Sep 17 13:29:29 video kernel: [ 9685.307511] tw68_dqbuf()
Sep 17 13:29:29 video kernel: [ 9685.350179] tw68_wakeup()
Какие зависимости есть у модуля?
modinfo tw68
Вот:
$ sudo modinfo tw68
filename: /lib/modules/2.6.30/kernel/drivers/media/video/tw68.ko
license: GPL
author: William M. Brack <wbrack@mmm.com.hk>
description: v4l2 driver module for tw6800 based video capture cards
alias: pci:v00001797d00006810sv*sd*bc*sc*i*
alias: pci:v00001797d00006804sv*sd*bc*sc*i*
alias: pci:v00001797d00006801sv*sd*bc*sc*i*
alias: pci:v00001797d00006800sv*sd*bc*sc*i*
depends: videobuf-core,videobuf-dma-sg,videodev,v4l2-common,btcx-risc
vermagic: 2.6.30 SMP mod_unload modversions 686
parm: video_debug:enable debug messages [video] (int)
parm: gbuffers:number of capture buffers, range 2-32 (int)
parm: noninterlaced:capture non interlaced video (int)
parm: secam:force SECAM variant, either DK,L or Lc (string)
parm: core_debug:enable debug messages [core] (int)
parm: gpio_tracking:enable debug messages [gpio] (int)
parm: alsa:enable/disable ALSA DMA sound [dmasound] (int)
parm: latency:pci latency timer (int)
parm: nocomb:disable comb filter (int)
parm: video_nr:video device number (array of int)
parm: vbi_nr:vbi device number (array of int)
parm: radio_nr:radio device number (array of int)
parm: tuner:tuner type (array of int)
parm: card:card type (array of int)
а можно попробовать применить команду:
# modprobe -r -v tw68
ни хрен по деревне :(
# modprobe -r -v tw68
FATAL: Module tw68 is in use.
-
Возможные причины: 1) "кривой" модуль, 2) не выгружены зависимости верхнего уровня - собственно программы, эксплуатирующие железку.
Есть несколько способов решения:
1. Проверить зависимости верхнего уровня на предмет занятия аппаратуры.
2. Поступить брутально:
# modprobe -r -f -v tw68
3. Если выгружать\загружать нужно только для отладки - методом перезагрузок определяем параметры, с которыми нужно чтобы грузились модули, а затем создаём конфиг или скрипт, куда прописываем нужные параметры, чтобы они применялись автоматом.