Wheezy: как на самом деле черный список ehci_hcd?

Я устанавливаю wheezy на Thinkpad T41. Известно, что у них есть проблемы, связанные с USB2, чего можно избежать, не загружая ehci_hcd.

Но я не могу понять, как фактически предотвратить загрузку ehci_hcd. Вот что я пробовал:

echo blacklist ehci_hcd > /etc/modprobe.d/ehci_hcd.conf depmod -a update-initramfs -u reboot 

… но ehci_hcd все еще загружен. Как я могу это предотвратить?

Учитывая проблему зависимостей модулей, которые затрудняют черный список такого модуля, я бы предложил маршрут перекомпиляции ядра с явно не построенной подсистемой.

Как вы уже упоминаете, вы используете Debian Wheezy, это руководство является хорошим пособием по созданию ядра «debian way». Обычно я рекомендую использовать последнее стабильное ядро 3.12.6 на момент написания, но использование источников ядра, упакованных вместе с debian, также прекрасно (например, пакет linux-source или linux-source-3.2 будет извлекать источники с любыми исправлениями debian ).

Важная часть этого ответа, который отличается от связанного руководства, находится в инструкции «Сделай эту настройку» (sic) в руководстве.

Строки, приведенные в руководстве,

 $ cat /boot/config-`uname -r`>.config $ make oldconfig 

Первая строка будет работать, если вы используете ядро ​​для сборки «debian way». Если вы случайно используете не-debian-ядро, скорее всего, будет работать команда zcat /proc/config.gz > .config . Цель этого – начать с конфигурации текущего ядра. Вторая строка вышеуказанных команд полезна, если вы создаете ядро, которое не совпадает с той версией, что работает. Он предложит вам какие-либо параметры конфигурации, отсутствующие в вашем запущенном ядре, и вы можете просто принять значения по умолчанию при появлении запроса.

Теперь мы переходим к шагу, который отсутствует в руководстве, – изменении конфигурации. Вы можете запустить конфигурацию с помощью

 make menuconfig 

для конфигурации на основе терминала или

 make xconfig 

для графической конфигурации. Чтобы отключить ehci, вы найдете драйверы устройств -> Поддержка USB -> EHCI HCD

Вы, скорее всего, увидите:

 <M> EHCI ECD (USB 2.0 Support) 

Когда эта опция выделена, нажмите n , которая превратит строку в:

 < > EHCI ECD (USB 2.0 Support) 

Теперь выйдите из каждого меню, пока вам не будет предложено сохранить вашу конфигурацию и выбрать ее сохранение. Отсюда вы можете следить за остальной частью руководства, которое построит ваше ядро ​​и упакует его в .deb, который вы можете установить. Когда вы загружаете это ядро, в ядро ​​не будет встроена поддержка ehci и не загружается модуль ehci.

Хотя это предпочтение, я выступаю за то, чтобы подправить ваше ядро ​​к вашей машине. После первоначальной настройки make oldconfig сделает вашу конфигурацию легко переносимой для новых выпусков ядра.

Согласно https://wiki.archlinux.org/index.php/Kernel_modules, черный список модулей в /etc/modprobe.d поможет только в том случае, если от него не зависит никакой другой модуль, не входящий в черный список:

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

Однако для этого поведения существует обходное решение; команда install сообщает modprobe запускать пользовательскую команду вместо того, чтобы вставлять модуль в ядро ​​как обычно, поэтому вы можете заставить модуль всегда загружать файл с файлом /etc/modprobe.d/blacklist.conf содержащим

 install ehci_hcd /bin/false 

Это должно занести в черный список этот модуль и любые другие, которые зависят от него.

ОСТОРОЖНО : это может сломать вашу систему, если вам действительно нужен модуль, от которого зависит ваш черный список! Удостоверьтесь, что у вас есть жизненный диск!