방금 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
이것은 또한 내 블루투스 인터페이스를 중단 시키지만 괜찮습니다.
이 설정을 유지하여 필요할 때 가상 콘솔을 다시 사용할 수 있습니다. 내 운영 체제 (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- 모듈의 이름이 최근에 바뀌 었으며, 이제 사용자 영역에서 다음과 같이 작동합니다.
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/unbind
여전히 커널이 해당 장치를 바인딩하지 못하게하는 방법을 찾고 있습니다.
답변
최근 여러 USB 장치로 xen 상자를 구성하는 동안이 문제가 발생했습니다. 하나는 Dom-0에서 사용하고 다른 하나는 VM에서 사용하기를 원했기 때문에 xen-pciback에 사용할 수있는 장치가 필요했습니다. 그러나 usb 드라이버는 커널에 적합하기 때문에 드라이버를 블랙리스트에 올릴 수 없었습니다. 내 솔루션은 부팅 프로세스 초기에 특정 pci 포트를 바인딩 해제하는 사용자 지정 initramfs 스크립트를 만드는 것입니다.
Ubuntu 2016.04이지만 이전 버전에서 작동해야합니다.
세 가지 파일이 관련되어 있습니다. 특정 유스 케이스로 이름을 지정했지만 ymmv :
/etc/unbindpci
pci 장치 번호와 드라이버의 간단한 csv 인 이름이 file 인 첫 번째 파일 (필요에 따라 구성) :
0000:08:00.0,xhci_hcd
0000:03:00.0,radeon
/etc/initramfs-tools/hooks/xenfiles
위의 구성을 initramfs에 복사하는 두 번째 파일 .
#! /bin/bash
if [ -f /etc/unbindpci ]; then
cp -pP /etc/unbindpci $DESTDIR/etc/unbindpci
fi
세 번째 파일은 부팅시 작동하는 것입니다 /etc/initramfs-tools/scripts/init-top/unbind-early-pci
.
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
# This only executes if in a xen Dom-0.
# Edit if that's not your use case!
if [ -f /sys/hypervisor/uuid -a -f /etc/unbindpci ]; then
if [ $(cat /sys/hypervisor/uuid) = "00000000-0000-0000-0000-000000000000" ]; then
echo "Unbinding pci ports..."
IFS=,
while read addr driver; do
if [ -f /sys/bus/pci/drivers/$driver/unbind ]; then
echo "Unbinding $addr, device $driver"
echo $addr > /sys/bus/pci/drivers/$driver/unbind
fi
done < /etc/unbindpci
fi
fi
마지막으로 실행 update-initramfs -k all -u
하고 재부팅하십시오.
구성 파일에 주석 지원을 포함시킬 수 있으며 여기에 많은 정리 작업이 있지만 나에게 효과적입니다.
답변
그 대답 중 어느 것도 내 비슷한 문제를 해결하지 못했지만 그들은 그것을 해결하는 길에 나를 넣었습니다!
내 syslog 오류 :
[ 334.940158] hub 1-0:1.0: unable to enumerate USB device on port 7
이것은 내가 가지고 있지 않은 블루투스 옵션을위한 내부 USB 허브 포트입니다.
pci 장치에 바인딩을 해제하면 허브가 다른 허브 (필자의 경우 5)로 다시 튀어 나와 syslog를 더 많이 넘치게됩니다.
우연히 나는 아래에 바인딩되지 않은 구조를 발견했습니다 /sys/bus/usb/drivers/hub
. 위의 예제를 사용하여 rc.local에 다음을 추가했습니다.
echo "1-0:1.0" > /sys/bus/usb/drivers/hub/unbind
결과는 syslog 침묵입니다! 전원 관리를 위해 kshurig의 스크립트 예제를 추가하려면 황금색이어야합니다.
답변
/etc/udev/rules.d 아래에 udev 규칙을 추가하여 PCI 장치를 제거 할 수 있습니다.
ACTION=="add", KERNEL=="0000:00:03.0", SUBSYSTEM=="pci", RUN+="/bin/sh -c 'echo 1 > /sys/bus/pci/devices/0000:00:03.0/remove'"
0000:00:03.0
제거하려는 pci 장치 주소로 교체
답변
askubuntu에서이 스레드를 찾았습니다.
사용 lspci -vv
하지 않도록 설정할하는 장치의 PCI 슬롯을 식별하는 데, 그 슬롯의 장치를 해제하려면이 명령을 사용할 수 있습니다 당신처럼 소리 :
% echo 0 > /sys/bus/pci/slot/$N/power
답변
당신이 이미 가지고있는 경우 echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
에 /etc/rc.local
부팅 당신은 aswell 데몬 전원 관리를위한 스크립트에 넣어 필요한 것보다.
다음과 같이 실행 0_disable_webcam
됩니다. directory에 이름이 지정된 실행 가능한 bash 스크립트 파일을 작성하십시오 /etc/pm/sleep.d/
.
#!/bin/sh
case "$1" in
resume|thaw)
echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci_hcd/unbind
;;
esac
즉시 작동합니다. 나는 USB 썸 드라이브로 시도했고 드라이브가 연결되어있는 한 작동했다 (비활성화 상태로 유지 됨). 다시 연결하려면 udev 규칙이 필요하지만 웹캠이 분리되지 않으므로 작동해야합니다. 그것이 속임수를 쓰지 않으면 다른 제안이 있습니다.
답변
해결 방법만큼 귀하의 질문에 대한 답변이 아닙니다.
syslog /를 수정하여 콘솔에 메시지 로깅을 단순히 억제하지 않는 이유는 무엇입니까? (syslog 또는 rsyslog 또는 다른 것을 사용하는지 여부를 알 수 없으므로 정확한 디렉토리에서 더 구체적으로 지적 할 수는 없지만 syslog 구성 파일에서 “console”및 “tty”를 검색하면 좋은 시작 위치가됩니다. 실제로 콘솔을 / dev / tty1 (예 :)로 변경하고 메시지가 모두 tty1에만 기록되도록 할 수 있습니다. 콘솔.
다른 해결책 (질문에 대답하지만 마음에 들지 않음)은 ehci_hcd 모듈을 블랙리스트에 올리거나 (로드 된 경우) 커널을 다시 컴파일하여 모듈로만 사용할 수 있습니다. h ttp : //www.cyberciti.biz/faq/rhel-redhat-centos-kernel-usb-reset-high-speed-ehci_hcd/ 를 살펴보십시오 .