Я занимаюсь разработкой модуля ядра графического процессора. Он компилируется только на «make modules», а не на «make», поэтому я могу сказать, что это динамически загруженный модуль, загружающий загрузку Linux. Я бы хотел быстро перекомпилировать и переустановить модуль без установки всего нового ядра. Можно ли просто «сделать модули», а затем заменить существующий файл .ko в/lib/modules/... и перезагрузить? Если нет (возможно, он используется), я могу загрузиться в другое ядро, выполнить замену и перезагрузить? Можно ли даже просто вставить его?Linux: перезагрузка модулей ядра
ответ
Он компилируется только на 'make modules', а не на 'make', поэтому я могу сказать, что это динамически загруженный модуль, загружающий загрузку Linux.
Вы должны проверить, где находится модуль. Он может храниться только в /lib/modules/...kernel-version../ или в/lib/modules и внутри initramfs (initrd). Во втором случае вам нужно восстановить изображение initramfs после обновления ko в/lib/modules.
Я хотел бы быстро перекомпилировать и переустановить модуль без установки совершенно нового ядра. Можно ли просто «сделать модули», а затем заменить существующий файл .ko в/lib/modules/... и перезагрузить?
Да, это разрешено изменять .ko-файл, даже если модуль загружен. (Загрузка модуля с помощью init_module
осуществляется из копии in-memory файла .ko ELF, поэтому используемая версия модуля по-прежнему будет использовать старые данные).
При перезагрузке вы также не будете использовать все модули и их файлы.
Возможно ли это просто включить его?
Не допускается делать insmod
модуля, который уже загружен (по сравнению с именем - проверить ошибки EEXIST в man finit_module
). Вы можете попробовать загрузить его с другим именем, но старый модуль имеет право собственности на аппаратное обеспечение, а новый модуль не будет иметь доступа к устройству PCI/PCIe.
Итак, перед вставкой более новой версии вы должны выгрузить старый модуль на rmmod modulename
. Разгрузка возможна только для неиспользуемых модулей (man delete_module
, проверка счетчика использования в выводе lsmod
) - в зависимости от вашего не должно быть других модулей, никакие процессы не должны его использовать. После выгрузки вы можете сделать insmod modulename.ko
или modprobe modulename.ko
.
Reboot выгрузит старый модуль и загрузит новый модуль.
В случае использования драйвера GPU вы должны остановить сервер X.org и остановить консоль системы, которая также использует графику (так что вы не можете переключиться на текстовую консоль и перезагрузить модуль gpu в интерактивном режиме, это можно сделать удаленно с помощью ssh или с помощью сценария оболочки с UNBIND/разгрузки/нагрузки), проверьте этот вопрос https://askubuntu.com/questions/418296/fastest-way-to-reload-graphics-driver-module
sudo /etc/init.d/lightdm stop echo 0 > /sys/class/vtconsole/vtcon1/bind
- 1. Установка модулей ядра Linux
- 2. модулей ядра Linux - избыточный включает
- 3. Создание модулей ядра из дерева, depmod - и, почему перезагрузка?
- 4. : = или + = при компиляции модулей ядра Linux?
- 5. Компиляция модулей ядра Linux изначально на ARM
- 6. Создание модулей ядра для разных версий Linux
- 7. Что вызывает повторную компиляцию модулей ядра linux
- 8. Настройки настройки процессора для модулей ядра Linux?
- 9. расширение модулей ядра iptables
- 10. Проблема компиляции модулей ядра
- 11. Создание tarball модулей Linux?
- 12. Модули ядра Linux
- 13. Перезагрузка модулей и переопределение подпрограмм в Perl
- 14. Недостатки модуля ядра linux?
- 15. перезагрузка зависимых модулей в Python
- 16. Разработка ядра Linux
- 17. Число скомпилированных модулей, влияющих на размер ядра Linux в ОЗУ?
- 18. Тестирование модулей/драйверов ядра Linux, работающих на любой целевой плате
- 19. Подготовка компьютера к изучению системных вызовов и модулей ядра Linux
- 20. перезагрузка обработки в linux
- 21. перезагрузка Linux из программы
- 22. Точный список модулей ядра Node
- 23. Установка модулей ядра в ядре Android
- 24. Существует ли минимальный набор файлов для компиляции ядра Linux для компиляции модулей ядра позже, если необходимо?
- 25. Программирование модуля ядра Linux: makefile
- 26. Последовательность выключения ядра Linux Linux
- 27. Linux модуль компиляции ядра предпосылками
- 28. Перезагрузка модулей в приложении режима модема mod_wsgi
- 29. Перезагрузка/повторная инициализация/обновление модулей CommonJS
- 30. Добавление поддержки символа для всех модулей ядра
Добро пожаловать в StackOverflow! Не могли бы вы рассказать о своем задаче, например, о коде или о чем-то, чтобы люди могли быстро решить вашу проблему и помочь вам? Благодаря! – manetsus
manetsus, вопрос правильный, код «make modules». Scoob, да, вы можете сделать «make modules», заменить .ko вашего модуля, выгрузить его «rmmod module_name» (только если он не используется в настоящее время) и перезагрузить с помощью модуля modprobe module_name module_options'. – osgx