저는 최신 Arch/Antergos Linux를 사용하고 있습니다.
최대 절전 모드에서 다시 시작한 후 터치패드가 작동을 멈췄습니다. 영향을 받은 것 같아요이것sudo rmmod i2c_hid; modprobe i2c_hid
버그가 있어서 터치패드를 다시 작동 상태로 되돌리려면 복원할 때마다 입력 해야 합니다 .
최대 절전 모드에서 다시 시작할 때 실행되도록 스크립트를 추가하여 fix-touchpad.sh
프로세스를 자동화 해 보았습니다 ./usr/lib/systemd/system-sleep
#!/bin/sh
if [ $1 = post ]
then
rmmod i2c_hid
modprobe i2c_hid
fi
스크립트는 시작 시 실행되며 전후 echo "something" > log.log
와 전후를 테스트했습니다 . 그러나 터치패드가 정상으로 돌아오지 않았습니다.if
fi
또한 복원 후 스크립트를 성공적으로 테스트했는데 sh fix-touchpad.sh post
놀랍게도 터치패드가 다시 깨어났습니다.
복구 프로세스의 일부로 터치패드가 실행될 때 스크립트가 터치패드를 수정하지 않는 이유는 무엇입니까?
터치패드를 고칠 수 있는 다른 방법이 있나요?
답변1
이유는 모르겠지만,문제는 최대 절전 모드에서 돌아올 때 모듈을 제거하고 추가하려고 하는 것입니다..
솔루션 1
나는 당신과 같은 문제가 있었고 fix-touchpad.sh
최대 절전 모드 전에 모듈을 제거하고 최대 절전 모드 후에 다시 추가하기 전까지는 스크립트가 작동하지 않았습니다.
본사 소재지이 답변Fedora 포럼에서는 다음과 같이 보일 수 있습니다:
$ cat /usr/lib/systemd/system-sleep/fix-touchpad.sh
#!/bin/bash
[ "$1" = "pre" ] && modprobe -r i2c_hid
[ "$1" = "post" ] && modprobe i2c_hid
exit 0
솔루션 2
또한 최대 절전 모드/재개에서 코드를 실행하는 다른 방법을 찾았습니다.또한 최대 절전 모드 전에 모듈을 제거한 경우에만 작동합니다.. Arch Wikipedia에 명시된 바와 같이전원 관리 #SleepHook, 수면 서비스에 의해 트리거되는 시스템 서비스를 생성할 수 있습니다.
Wiki 설명에 따르면 다음과 같은 결론에 도달했습니다.
$ cat /etc/systemd/system/root-resume.service
[Unit]
Description=(un)load module i2c_hid when going to/from sleep
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=modprobe -r i2c_hid
ExecStop=modprobe i2c_hid
[Install]
WantedBy=sleep.target
를 통해 서비스를 활성화해야 합니다 systemd enable root-resume
. ExecStart는 이전에 실행되고 sleep.target
ExecStop은 재개할 때 실행됩니다.
해결 방법 3
systemd-suspend-modules
패키지 보기우레아 소변 비율. 기본적으로 실행되는 서비스를 정의합니다.솔루션 1사용자 프로필에 나열된 각 모듈에 대해. "주어진 모듈과 이에 의존하는 모든 모듈을 재귀적으로 언로드"하므로 다른 모듈에 더 적합할 수 있습니다(https://github.com/parkouss/systemd-suspens-modules/blob/master/suspens-modules#L19).