Самый быстрый способ перезагрузить модуль графического драйвера?

Я пытаюсь разобраться в разработке графического драйвера, в данном случае для модификаций модуля ядра DRM, называемого gma500_gfx.

Каждый раз, когда я вносил изменения в этот драйвер, я запускаю скрипт, который компилирует и заменяет предыдущий модуль ядра (командой cp) и перезапускает дистрибутив Linux (Lubuntu).

Я не могу перезагрузить этот модуль графического драйвера без перезапуска Linux (пока). Команды modprobe и rmmod всегда выдают ошибку «используется модуль».

modprobe gma500_gfx -r
modprobe: FATAL: Module gma500_gfx is in use.

Когда я смотрю на зависимости, я получаю следующий список.

gma500_gfx            185579  2 
drm_kms_helper         48716  1 gma500_gfx
drm                   298219  3 drm_kms_helper,gma500_gfx
video                  19370  2 acer_wmi,gma500_gfx
i2c_algo_bit           13413  1 gma500_gfx

Я также не могу выгрузить любую из этих зависимостей, которые дают ту же ошибку. Другие вещи, которые я пробовал до modprobe, но которые безуспешны:

  • Перейти к однопользовательской среде с помощью "init 1"
  • Shutdown lightdm с помощью "/ etc / init. d / lightdm stop "(который уменьшает количество ссылок на 1 к 1)

Кто-нибудь знает более быстрый способ перезагрузить модуль графического драйвера, чем перезапуск дистрибутива Linux?

6
задан 10 February 2014 в 01:11

1 ответ

После долгих исследований я обнаружил две ссылки, которые удерживают модуль от выгрузки и как перезагрузить модуль. Две вещи, удерживающие блокировку:

  1. LightDM, легкий менеджер дисплеев X
  2. Базовая структура фреймбуфера

Чтобы снять блокировки соответственно:

  1. sudo /etc/init.d/lightdm stop
  2. echo 0 > /sys/class/vtconsole/vtcon1/bind

Однако второй вариант отсоединяет фрейм-буфер от драйвера gma500_gfx, который останавливает вывод на экран. Итак, лучше объединить нр. 2 со сценарием, чтобы отсоединить, выгрузить модуль, сбросить экран и загрузить модуль снова. AFAIK, я должен запустить это с консоли.

#!/bin/bash
echo 0 > /sys/class/vtconsole/vtcon1/bind
modprobe -r gma500_gfx
modprobe gma500_gfx
/etc/init.d/lightdm start

Желательно, чтобы у меня был 1 скрипт перезапуска, который я могу запустить непосредственно из LightDM, который перезагружает драйвер и восстанавливает сеанс. Я пока не смог этого сделать, однако это другая тема, чем вопрос выше. Любые предложения для этого сделают меня счастливым. :)

0
ответ дан 10 February 2014 в 01:11

Другие вопросы по тегам:

Похожие вопросы: