Иногда моя система попадает в состояние, когда в некоторых ядрах отсутствует модуль или два, потому что DKMS почему-то забыл скомпилировать эти модули для этого ядра. Вместо того чтобы тратить время на диагностику проблемы, было бы неплохо, если бы я мог запустить одну команду, которая просто перестроит каждый модуль, контролируемый dkms, для каждого установленного ядра. Есть ли такая команда?
kernel
kernel-modules
dkms
Райан К. Томпсон
источник
источник
Ответы:
Я понял, что оболочка однострочная для этого:
Это работает, потому что имена каталогов в
/var/lib/initramfs-tools
точности совпадают с именами версий ядра, которые вам нужно передать,dkms_autoinstaller
чтобы сказать ему пересобрать все модули для этих версий ядра. Обратите внимание, что если вы удалили некоторые старые ядра, их каталоги все еще могут лежать и вызывать сообщения об ошибках, но это не проблема, потому чтоdkms_autoinstaller
они просто ничего не сделают для тех версий ядра, которые не установлены.источник
dkms status
в новом ядре, используя следующие для конкретных модулей, которые я хотел из "/ usr / src". Параметры должны быть изменены по мере необходимости для -c, -m, -v. Вот пример для модуля nvidia-384-384.90:ls /var/lib/initramfs-tools | \ sudo xargs -n1 /usr/sbin/dkms install -c /usr/src/nvidia-384-384.90/dkms.conf -m nvidia -v 384-384.90 -k
Не похоже, что
dkms
команда позволяет вам это сделать. Я создал небольшой скрипт на Python, который должен делать то, что вы хотите. Вы можете поместить псевдоним в свой~/.bashrc
лайкКонечно, сначала нужно сделать его исполняемым. Вот код:
Протестировано здесь, кажется, работает просто отлично:
Если вы также хотите установить модули, замените build на install во второй последней строке.
источник
Комбинируя ответы @htorque и @Ryan Thompson, вот моя (как root) одна строка:
источник
Вышеупомянутое не работает на всех вариантах, это может быть немного более полезным в этих случаях ...
источник
dkms status
иdkms_autoinstaller
не работает в Ubuntu 16.x. Так что некоторые сценарии оболочки будут делать. Этот скрипт предполагал, что у вас установлен правильный*-dkms
deb-пакет и онbash
является вашей оболочкой.источник
Редактирование сценария @htorque. Используйте его, если вы хотите принудительно перестроить (и установить) уже созданные модули. Перешел на python3,
subprocess.run()
требуется Python 3.5+.источник