- Вопрос или проблема
- Ответ или решение
- Как выгрузить модуль saa7164 для Hauppauge 2250 и остановить tvheadend для приостановки в Ubuntu 15.04
- Введение
- Шаг 1: Остановка tvheadend
- Шаг 2: Проверка используемых модулей
- Шаг 3: Попытка выгрузки модуля
- Шаг 4: Поэтапная выгрузка зависимых модулей
- Шаг 5: Принудительная выгрузка модулей
- Шаг 6: Аварийная блокировка модулей
- Заключение
Вопрос или проблема
Я новичок в использовании systemd. Я запускаю Ubuntu 15.04 с ТВ-тюнером Hauppauge 2250. К сожалению, драйвер/модуль для 2250, “saa7164”, несовместим с режимом ожидания/возобновления, поэтому прямое телевидение не будет работать после возобновления. Поэтому я использую следующий файл для остановки/возобновления tvheadend и saa7164:
sudo gedit /lib/systemd/system-sleep/50_tvheadend
В котором содержится следующий скрипт:
#!/bin/sh
case "$1" in
pre/*)
echo "Entering sleep..." > /tmp/sleep.log
echo "Entering sleep"
cat /proc/acpi/wakeup >> /tmp/sleep.log
service tvheadend stop
sleep 1
modprobe -r tveeprom
modprobe -r dvb_core
modprobe -r v4l2_common
modprobe -r videodev
modprobe -r saa7164
sleep 3
echo "After modprobe..." >> /tmp/sleep.log
cat /proc/acpi/wakeup >> /tmp/sleep.log
;;
post/*)
echo "Awaking from sleep..." >> /tmp/sleep.log
echo "Waking up"
modprobe saa7164
modprobe videodev
modprobe v4l2_common
modprobe dvb_core
modprobe tveeprom
sleep 3
echo "After modprobe..." >> /tmp/sleep.log
service tvheadend start
sleep 1
\cat /proc/acpi/wakeup >> /tmp/sleep.log
;;
esac
Для подстраховки, я сделал файл исполняемым для всех:
sudo chmod 755 /lib/systemd/system-sleep/50_tvheadend
Но это не сработало. Поэтому я запустил команды для остановки и запуска tvheadend в терминале, что сработало. Но когда я попытался остановить драйвер saa7164 в терминале, используя “modprobe -r saa7164”, возникла ошибка. Поэтому я следовал этим инструкциям на как выгрузить модуль ядра, который используется, но мой скрипт попытался выгрузить все модули, перечисленные в “lsmod | grep saa7164”, и не смог. Поэтому я попытался запустить команды в терминале, как показано ниже:
htpc@htpc-desktop:~$ sudo modprobe -r saa7164
modprobe: FATAL: Module saa7164 is in use
htpc@htpc-desktop:~$ lsmod | grep saa7164
saa7164 131072 -1
tveeprom 24576 1 saa7164
dvb_core 126976 1 saa7164
v4l2_common 16384 1 saa7164
videodev 159744 2 saa7164,v4l2_common
htpc@htpc-desktop:~$ sudo modprobe -r tveeprom
modprobe: FATAL: Module tveeprom is in use.
htpc@htpc-desktop:~$ lsmod | grep tveeprom
tveeprom 24576 1 saa7164
Как мне выгрузить драйвер/модуль saa7164?
Я думаю, вам также нужно остановить любую программу, которая использует модуль, прежде чем вы его удалите. Вы случайно не запускаете MythTV?
Вы можете попробовать выгрузить драйвер, остановив службу, которая его использует, или отключив использование драйвера в системных настройках. Для этого попробуйте запустить следующие команды:
sudo rmmod saa7164
sudo rmmod tveeprom
Если вышеуказанная команда не сработает, попробуйте использовать опцию принудительного удаления:
sudo rmmod -f saa7164
sudo rmmod -f tveeprom
Если вышеуказанная команда тоже не сработает, вы можете попробовать запретить загрузку драйвера при загрузке системы. Вы можете сделать это, добавив следующие строки в /etc/modprobe.d/blacklist.conf:
blacklist saa7164
blacklist tveeprom
Сохраните и закройте файл, затем перезагрузите систему. Драйвер не должен загружаться при загрузке, и вы сможете его выгрузить.
Ответ или решение
Как выгрузить модуль saa7164 для Hauppauge 2250 и остановить tvheadend для приостановки в Ubuntu 15.04
Введение
Управление модулями ядра и службами в системе Ubuntu 15.04 может вызывать сложности, особенно когда речь идет о совместимости драйверов с функциями спящего режима. Это руководство поможет вам поэтапно выгрузить модуль saa7164
, который используется ТВ-тюнером Hauppauge 2250, и остановить сервис tvheadend перед переходом в спящий режим.
Шаг 1: Остановка tvheadend
Перед выгрузкой модуля необходимо остановить службу tvheadend, так как она может использовать данный модуль. Примените следующую команду в terminal:
sudo systemctl stop tvheadend
Шаг 2: Проверка используемых модулей
Перед попыткой выгрузки модуля важно убедиться, какие модули зависят от saa7164
. Используйте эксперимент команду:
lsmod | grep saa7164
Результат покажет список модулей, которые загружены и могут блокировать выгрузку saa7164
.
Шаг 3: Попытка выгрузки модуля
Теперь можно попробовать выгрузить модуль saa7164
и все связанные с ним модули. Начнем с базовой попытки:
sudo modprobe -r saa7164
Если у вас возникнет ошибка, как в вашем случае: FATAL: Module saa7164 is in use
, вам нужно будет сначала выгрузить модули, которые зависят от saa7164
.
Шаг 4: Поэтапная выгрузка зависимых модулей
Попробуйте выгрузить модули в обратном порядке их загрузки:
sudo modprobe -r tveeprom
sudo modprobe -r dvb_core
sudo modprobe -r v4l2_common
sudo modprobe -r videodev
sudo modprobe -r saa7164
Если какая-либо из вышеуказанных команд завершится ошибкой, это означает, что один из модулей продолжает быть в использовании. Убедитесь, что все службы и приложения, использующие эти модули, были остановлены.
Шаг 5: Принудительная выгрузка модулей
Если стандартные команды не работают, вы можете принудительно выгрузить модули:
sudo rmmod -f saa7164
sudo rmmod -f tveeprom
Внимание: Использование принудительной выгрузки модулей может привести к нестабильности системы. Следует использовать этот метод с осторожностью.
Шаг 6: Аварийная блокировка модулей
Если модули продолжают загружаться при перезагрузке, вы можете заблокировать их. Для этого откройте файл blacklist.conf:
sudo gedit /etc/modprobe.d/blacklist.conf
Добавьте в конец файла следующие строки:
blacklist saa7164
blacklist tveeprom
Сохраните файл и закройте редактор. После перезагрузки система не будет загружать эти модули.
Заключение
Теперь, когда вы остановили сервис tvheadend и выгрузили модуль saa7164
, вы сможете ставить ваш компьютер в спящий режим с минимальным риском возникновения проблем с совместимостью. Если у вас возникают дополнительные проблемы, обязательно проверьте журналы (/tmp/sleep.log
), которые вы создавали в процессе.
Следуя этим шагам, вы сможете эффективно управлять модулями системы и максимально использовать ваше оборудование.