Вопрос или проблема
Я пытаюсь отключить модуль ядра для блютус-чипа моей материнской платы: btintel
.
Я добавил запись в черный список в /etc/modprobe.d/blacklist-btintel.conf
(я также пробовал blacklist.conf, это не имело значения):
blacklist btintel
Я также создал символьную ссылку на этот файл в /usr/lib/modprobe.d/
из-за этой возможной проблемы.
Также я отредактировал /etc/sysconfig/grub
, чтобы включить модуль как в rd.driver.blacklist
, так и в modprobe.blacklist
:
$ grep 'GRUB_CMDLINE_LINUX' /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau,btintel modprobe.blacklist=nouveau,btintel nvidia-drm.modeset=1 resume=/dev/mapper/fedora_localhost--live-swap rd.lvm.lv=fedora_localhost-live/root rd.lvm.lv=fedora_localhost-live/swap rhgb quiet"
После этого я попробовал выполнить обе команды:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
а также
sudo dracut -fv
Но после перезагрузки модуль все еще загружается:
$ lsmod | grep btintel
btintel 28672 1 btusb
bluetooth 626688 48 btrtl,btintel,btbcm,bnep,btusb,rfcomm
Кто-нибудь может подсказать?
Вам также нужно создать файл в modprobe.d (имя файла не имеет большого значения).
Я использую RedHat, и директория находится в /etc/modprobe.d. Думаю, на Fedora это та же директория.
echo "blacklist btintel" >> /etc/modprobe.d/bluetooth.conf
echo "install btintel /bin/false >> /etc/modprobe.d/bluetooth.conf"
Заметка: /bin/true
тоже работает
См. эту статью от RedHat. У меня не потребовалось входить в систему, чтобы прочитать эту статью.
Ответ или решение
Вас приветствует эксперт в области информационных технологий. Рассмотрим проблему, связанную с невозможностью отключения модуля ядра «btintel», который относится к чипу Bluetooth на вашей материнской плате. Эта задача может быть необходима по ряду причин, например, для устранения конфликтов оборудования или тестирования системы без определенного компонента. Давайте разберем возможные действия и решение.
Теория
Начнем с базовых понятий. Ядро Linux поддерживает модульную систему: модули могут подгружаться и выгружаться динамически, чтобы расширить функциональность операционной системы без необходимости перекомпиляции ядра. Для предотвращения загрузки определенных модулей, используется механизм «черного списка» (blacklisting), который исключает загрузку модуля при старте системы.
Обычно для добавления модуля в черный список создают файл конфигурации в /etc/modprobe.d/
. Ваша попытка создать файл blacklist-btintel.conf
с директивой blacklist btintel
была в этом направлении. Также модификация параметров загрузки ядра в /etc/sysconfig/grub
, добавление модулей в rd.driver.blacklist
и modprobe.blacklist
были правильными шагами.
Пример
Вы уже сделали следующее:
- Создали файл конфигурации для черного списка модуля в
/etc/modprobe.d/
. - Модифицировали параметры загрузки ядра для добавления модуля в черные списки.
- Запустили обновление конфигурации загрузочного меню с помощью
grub2-mkconfig
. - Запустили
dracut
, чтобы пересобрать initramfs — что особенно важно, если модуль загружается на этапе начальной загрузки.
Тем не менее, модуль btintel
продолжает загружаться. Теперь рассмотрим дополнительные шаги.
Применение
Следует убедиться в нескольких дополнительных аспектах настройки и выполнения процедур:
-
Проверка конфигурации модулей:
- Убедитесь, что файлы конфигурации в
/etc/modprobe.d/
(например,blacklist-btintel.conf
и другие) содержат правильные команды. Согласно предложению из комментария, добавьте строкуinstall btintel /bin/false
в файл конфигурации, например,bluetooth.conf
.
- Убедитесь, что файлы конфигурации в
-
Удаление initramfs (если необходимо):
- Проверьте, не загружается ли модуль
btintel
из initramfs. Если загрузка происходит на стадии initramfs, попытка пересобирать его с помощьюdracut -fv
была правильной. Постройте initramfs без модуляbtintel
, чтобы убедиться, что он не пресутствует в начальной файловой системе.
- Проверьте, не загружается ли модуль
-
Дублирование настроек:
- Вы правильно создали симлинк в
/usr/lib/modprobe.d/
. Это нужно, чтобы убедиться, что все возможные места для конфигураций также покрыты.
- Вы правильно создали симлинк в
-
Прочтение документации:
- Перепроверьте версии ядра и чипа Bluetooth, возможно, есть известные баги или особенности, которые могут влиять на поведение этих компонентов. Ссылку на статью из RedHat стоит учитывать, так как она может содержать вспышки решений аналогичных проблем для дистрибутивов на основе RPM.
-
Логирование и диагностика:
- Используйте системные журналы (
dmesg
,/var/log/messages
) для диагностики: они могут содержать указания на проблемы или зависимости, препятствующие черному списку модуля.
- Используйте системные журналы (
-
Проверка зависимостей:
- Модуль мог загружаться как зависимость для другого, возможно, высокого уровня модуля или службы Bluetooth. Проверьте такие зависимости и вовсе остановите служебный демон Bluetooth для проверки изоляции проблемы.
Заключение
Решение проблемы требует комплексного подхода и может потребовать обращение к комьюнити или документам конкретного дистрибутива. При проверке выполните каждое действие по отдельности и после каждого шага проводите диагностику. Это позволит изолировать и идентифицировать причину, по которой модуль продолжает загружаться.