Я только что переустановил Debian на своем ноутбуке Sony VAIO, и все мои dmesg
и виртуальные консоли снова и снова получают спам с одинаковыми сообщениями.
[ 59.662381] hub 1-1:1.0: unable to enumerate USB device on port 2
[ 59.901732] usb 1-1.2: new high-speed USB device number 91 using ehci_hcd
[ 59.917940] hub 1-1:1.0: unable to enumerate USB device on port 2
[ 60.157256] usb 1-1.2: new high-speed USB device number 92 using ehci_hcd
Я полагаю, что эти сообщения поступают с подключенного внутри устройства USB, скорее всего, с веб-камеры (поскольку это единственное, что не работает). Единственный способ, которым я могу закрыть его (не убивая мои действительно полезные порты USB), - отключить один из хост-контроллеров USB:
# echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
Это также снимает мой интерфейс Bluetooth, но я в порядке с этим.
Я бы хотел, чтобы эта настройка сохранялась, чтобы я мог безболезненно снова использовать свою виртуальную консоль в случае необходимости. Я хочу, чтобы моя операционная система (Debian amd64) никогда не разбудила его, но я не знаю, как это сделать. Я пытался внести в черный список псевдоним модуля для устройства PCI, но, похоже, он игнорируется:
$ cat /sys/bus/pci/devices/0000\:00\:1a.0/modalias
pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
$ cat /etc/modprobe.d/blacklist
blacklist pci:v00008086d00003B3Csv0000104Dsd00009071bc0Csc03i20
Как я могу гарантировать, что это конкретное устройство PCI никогда не активируется автоматически, не отключая его драйвер вообще?
-edit- Модуль был недавно переименован, теперь из userland работают следующие:
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/unbind
Тем не менее, я ищу способ остановить привязку ядра этим устройством.
update-initramfs -u -k all
?ehci_hcd
), так как это отключит все USB-хосты на моя система. Я просто хочу отключить это конкретное устройство в зависимости от его производителя, dev, subvendor и subdev.Ответы:
Я недавно столкнулся с этой проблемой при настройке моего xen box с несколькими USB-устройствами. Я хотел, чтобы один использовался Dom-0, а другой - виртуальной машиной, поэтому мне нужно было, чтобы устройство было доступно для xen-pciback. Тем не менее, драйвер USB был включен в мое ядро, поэтому я не мог просто занести этот драйвер в черный список. Мое решение состояло в том, чтобы создать собственный скрипт initramfs, который связывает определенный порт pci в самом начале процесса загрузки.
Это Ubuntu 2016.04, но он должен работать в более ранних версиях.
Есть три файла. Я назвал их для моего конкретного случая использования, но ymmv:
Первый файл, названный
/etc/unbindpci
file, который представляет собой простой CSV-номер с номером устройства pci и драйвером (настройте его здесь):Второй файл
/etc/initramfs-tools/hooks/xenfiles
, который копирует вышеуказанный конфиг в initramfs.Третий файл - это то, что работает во время загрузки, я поместил его в
/etc/initramfs-tools/scripts/init-top/unbind-early-pci
:Наконец, запустите
update-initramfs -k all -u
и перезагрузите компьютер.Я мог бы включить поддержку комментариев в конфигурационном файле, и здесь есть много чего сделать, но это работает для меня.
источник
/etc/init.d
! Я не пользуюсь машиной прямо сейчас, и, возможно, я больше никогда не загрузлю ее с Debian, поэтому я не могу проверить ее. Однако, поскольку это, вероятно, сработало бы в моем случае, я приму это как ответ.udev
что все шины проходили и загружались во время загрузки ядра, и все, что делал grub,initramfs
было только для чтения и потеряно. когда ядро загружено. Я попытался установитьsetpci
вinitramfs-tools
но сдался и я пробуяudev
правило прямо сейчас.Ни один из ответов не решил мою похожую проблему, но они помогли мне решить ее!
Моя ошибка системного журнала:
Это внутренний usb-хаб-порт для опции bluetooth у меня нет.
Отключение от устройства pci только что привело к тому, что концентратор снова заработал в качестве другого концентратора (в моем случае 5), а затем заполнил системный журнал.
Случайно я заметил структуру unbind под
/sys/bus/usb/drivers/hub
. Используя примеры выше, я просто добавил следующее в rc.local:Результат - системная тишина! Теперь, чтобы добавить пример сценария kshurig для управления питанием, я должен быть золотым.
источник
Вы можете удалить устройство PCI, добавив правило udev в /etc/udev/rules.d:
Замените
0000:00:03.0
на адрес устройства pci, который вы хотите удалитьисточник
Нашел эту ветку на аскубунту:
Использование
lspci -vv
для определения слота PCI устройства, которое вы хотите отключить, звучало так, как будто вы можете использовать эту команду для выключения устройства этого слота:источник
/sys/bus/pci/slots/1
), это слот ExpressCard снаружи, который я могу освободить вручную.Когда вы уже
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
в/etc/rc.local
течение загрузки , чем нужно просто поместить его в сценарий для управления питанием Deamon , а также.Идет следующим образом: Создайте исполняемый файл сценария bash с именем
0_disable_webcam
в каталоге/etc/pm/sleep.d/
:Это должно работать мгновенно. Я попробовал это с USB-накопителем, и он работал (то есть он оставался отключенным), пока диск был подключен. Для повторного подключения потребуются правила udev, но поскольку ваша веб-камера не будет отключена, она должна работать. Если это не помогает, у меня есть другое предложение.
источник
tree /sys/bus/pci/devices/0000\:00\:1a.0/
«usbX», что означает, что порт является аналогичным номером). Если это «1-1.2» вместо вашего,echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
скрипт должен иметьecho "auto" > /sys/bus/usb/devices/1-1.2/power/control; echo -n "1-1.2" > /sys/bus/usb/drivers/usb/unbind
.не ответ на ваш вопрос, а обходной путь.
Почему бы просто не подавить запись сообщений на консоль, изменив syslog / (я не знаю, используете ли вы syslog или rsyslog или что-то еще, поэтому я не могу указать вам более конкретно в правильном каталоге, но если вы поищите в ваших конфигурационных файлах системного журнала «console» и «tty», что даст вам хорошую отправную точку - на самом деле вы можете изменить консоль на / dev / tty1 [например] и получать сообщения только в tty1, а не во все консолей.
Другое решение (чтобы ответить на ваш вопрос, но мне это не нравится), вы можете занести в черный список модуль ehci_hcd (если он загружен) или перекомпилировать ваше ядро, чтобы использовать его только как модуль. Посмотрите на h ttp: //www.cyberciti.biz/faq/rhel-redhat-centos-kernel-usb-reset-high-speed-ehci_hcd/, который точно решает вопрос, который вы задаете
источник