커널에서 HTPC를 업데이트했습니다.3.7.10도착하다3.10.7것 같다CONFIG_USB_SUSPEND이제 커널 옵션에서 사라지고 PM에 포함됩니다.
제가 직면하고 있는 주요 문제는 외장 하드 드라이브가 있는데 HTPC를 일시 중지하고 깨울 때 시스템이 이를 사용할 수 없다는 것입니다. HDD가 깨어나지만(다시 회전하는 소리가 들림) 마운트 지점에 액세스하려고 하면 다음 오류가 발생합니다.
ZOTAC ~ # ls /media
ls: reading directory /media: Input/output error
dmesg에서:
[ 253.278260] EXT4-fs warning (device sdb1): __ext4_read_dirblock:908: error reading directory block (ino 2, block 0)
이전 커널에서는 HDD가 자체적으로 최대 절전 모드를 처리하고 마운트 지점에 항상 액세스할 수 있었기 때문에 CONFIG_USB_SUSPEND=N을 설정하면 문제가 해결되었습니다. HDD가 절전 모드이고 HTPC가 HDD 마운트 지점에서 무언가를 요구하면 HDD 자체가 깨어나 정상적으로 실행됩니다.
이제 나는 성공하지 않고 다음을 시도했습니다.
- 수동 변경/sys/bus/USB/devices/USB*/전원/제어도착하다"존재하다"바꾸다"자동차".
- 수동 변경/sys/bus/usb/devices/usb*/power/자동 일시 중단도착하다"-1"바꾸다"0".
그러나 HTPC가 다시 깨어나면 마운트 지점에 액세스할 수 없습니다. 해결 방법으로 마운트 지점을 마운트 해제했다가 다시 마운트하면 문제 없이 다시 잘 작동하지만 OS가 USB 자동 일시 중지를 처리하지 않도록 하는 방법이 있어야 한다고 확신합니다.
커널 3.7.10 이상에서 USB 자동 일시 중단을 비활성화하는 방법을 아시나요?
답변1
~을 위한우분투그리고더반, usbcore
커널로 컴파일되므로 /etc/modprobe.d
항목이 will에서 생성됩니다.아니요일하다. 대신 커널 부팅 매개변수를 변경해야 합니다.
/etc/default/grub
파일을 편집 하고 행을 변경하여 옵션을 GRUB_CMDLINE_LINUX_DEFAULT
추가하십시오 usbcore.autosuspend=-1
.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"
quiet splash
옵션이 이미 존재합니다 . 그러니 다른 옵션을 열어두세요.
파일을 저장한 후 grub을 업데이트합니다.
sudo update-grub
그리고재시작.
이제 autosuspend
값을 확인하십시오.
cat /sys/module/usbcore/parameters/autosuspend
가 표시되어야 합니다 -1
.
추가 정보
커널 문서에는 이 매개변수가 미래에 autosuspend_delay_ms
(대신 ) 으로 변경될 것이라고 명시되어 있지만 현재로서는 여전히 동일한 이름입니다.autosuspend
이 값에 대한 문서는 -1
커널 소스 파일에서 찾을 수 있습니다 drivers/usb/core/hub.c
.
1808: * - If user has indicated to prevent autosuspend by passing
1809: * usbcore.autosuspend = -1 then keep autosuspend disabled.
답변2
~에 따르면커널 트리 문서autosuspend
, 자동 일시 중단 유휴 지연 시간은 의 모듈 매개변수에 의해 제어됩니다 usbcore
. 초기 기본 유휴 지연을 -1로 설정하면 USB 장치가 자동으로 일시 중지되는 것을 방지할 수 있습니다. 선택한 장치에 대해서는 자동 일시 중단을 활성화할 수 있습니다.
usbcore.autosuspend
모듈을 수동으로 로드할 때 커널 매개변수를 설정할 수 있습니다.
$ modprobe usbcore autosuspend=-1
또는 구성 파일에 다음 줄을 추가합니다 /etc/modprobe.d
.
options usbcore autosuspend=-1
usbcore
커널로 컴파일된 경우 커널 명령줄에 다음을 추가하여 매개변수를 조정할 수 있습니다.
usbcore.autosuspend=-1
마지막으로 이 옵션은 다음을 수행하여 런타임에 조정할 수 있습니다.
echo -1 >/sys/module/usbcore/parameters/autosuspend
이 변경 사항은 모든 새로운 USB 장치에 영향을 미칩니다. 기존 장비는 영향을 받지 않습니다.
답변3
비슷한 문제가 있습니다Microsoft 휠 마우스 광 USB 및 PS/2와 호환 가능업그레이드 이후리눅스 민트 데비안 에디션시스템에서 커널로 3.10-2-amd64
. 커널의 부적절한 자동 일시 중단USB 전원 관리의심받는 중. 데비안에서는 usbcore
커널에 모듈 로 컴파일됩니다 .
명령줄에서 다음 명령을 실행하여 이 설정을 영구적으로 변경할 수 있습니다.
sudo echo "options usbcore autosuspend=-1" | sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf > /dev/null
그러나 일부 커널에서는 이를 요구할 수도 있습니다 autosuspend=0
.
시스템에서 를 사용하는 경우 initrd
(아마도 그럴 것임) 커널용으로 다시 빌드하십시오 initrd
.
예를 들어:
uname -r
sudo dpkg-reconfigure linux-image-3.10-2-amd64
재부팅하고 확인하십시오.
cat /sys/module/usbcore/parameters/autosuspend
이제 결과가 생성되어야 합니다 -1
.