![Keyboard-setup.service가 매우 느리게 시작됩니다. 나에게 그것이 필요합니까?](https://linux55.com/image/124522/Keyboard-setup.service%EA%B0%80%20%EB%A7%A4%EC%9A%B0%20%EB%8A%90%EB%A6%AC%EA%B2%8C%20%EC%8B%9C%EC%9E%91%EB%90%A9%EB%8B%88%EB%8B%A4.%20%EB%82%98%EC%97%90%EA%B2%8C%20%EA%B7%B8%EA%B2%83%EC%9D%B4%20%ED%95%84%EC%9A%94%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내 컴퓨터가 Debian Buster를 실행하고 있는데 부팅 시간이 느려지는 것 같습니다 keyboard-setup.service
. 제가 이해한 바에 따르면 여기에는 콘솔에 사용되는 키보드 설정이 포함됩니다. 출력은 systemd-analyze blame
다음과 같습니다. 여러번 확인해봤는데 항상 비슷하네요.
5.549s keyboard-setup.service
5.063s dev-sda2.device
4.140s udisks2.service
3.565s accounts-daemon.service
3.487s console-kit-log-system-start.service
키보드를 시작할 때마다 키보드를 설정하는 데 왜 5.5초가 걸리는지 궁금합니다. 키보드 설정이 너무 느려야 합니까?
그렇다면 왜 그렇습니까? 무엇을 하고 있나요? 비활성화해도 안전합니까?
그렇지 않다면 무엇이 잘못되었으며 어떻게 해결할 수 있습니까?
편집하다:systemd-analyse critical-chain
graphical.target @17.385s
└─gdm.service @15.588s +1.797s
└─rc-local.service @15.476s +110ms
└─network.target @15.475s
└─networking.service @14.971s +502ms
└─apparmor.service @8.262s +3.147s
└─local-fs.target @8.256s
└─boot-efi.mount @8.000s +255ms
└─local-fs-pre.target @7.971s
└─keyboard-setup.service @2.421s +5.549s
└─systemd-journald.socket @2.420s
└─system.slice @2.417s
└─-.slice @2.186s
답변1
다음을 실행하여 systemctl cat keyboard-setup.service
정의를 볼 수 있습니다 .
# /lib/systemd/system/keyboard-setup.service
[Unit]
Description=Set the console keyboard layout
DefaultDependencies=no
Before=local-fs-pre.target
Wants=local-fs-pre.target
ConditionPathExists=/bin/setupcon
[Service]
Type=oneshot
ExecStart=/lib/console-setup/keyboard-setup.sh
RemainAfterExit=yes
[Install]
WantedBy=sysinit.target
따라서 실행되지만 존재하는 /lib/console-setup/keyboard-setup.sh
경우에만 실행됩니다 /bin/setupcon
.
/lib/console-setup/keyboard-setup.sh
또한 매우 간단합니다.
#!/bin/sh
if \
[ -x /etc/console-setup/cached_setup_keyboard.sh ] \
&& /etc/console-setup/cached_setup_keyboard.sh
then
:
else
if [ -f /etc/default/locale ]; then
# In order to permit auto-detection of the charmap when
# console-setup-mini operates without configuration file.
. /etc/default/locale
export LANG
fi
setupcon -k
fi
중요성:
- 존재하고 오류 없이 실행 중인 경우
/etc/console-setup/cached_setup_keyboard.sh
스크립트는 스크립트를 실행하는 것 외에는 아무 작업도 수행하지 않습니다. - 그렇지 않으면
setupcon -k
실행하되 존재하는 경우/etc/default/locale
이를 읽고 LANG 변수를 먼저 내보냅니다.
적어도 내 시스템에는 /etc/console-setup/cached_setup_keyboard.sh
존재하며 다음과 같습니다.
#!/bin/sh
if [ -f /run/console-setup/keymap_loaded ]; then
rm /run/console-setup/keymap_loaded
exit 0
fi
kbd_mode '-u' < '/dev/tty1'
kbd_mode '-u' < '/dev/tty2'
kbd_mode '-u' < '/dev/tty3'
kbd_mode '-u' < '/dev/tty4'
kbd_mode '-u' < '/dev/tty5'
kbd_mode '-u' < '/dev/tty6'
loadkeys '/etc/console-setup/cached_UTF-8_del.kmap.gz' > '/dev/null'
중요성:
- 플래그 파일이
/run/console-setup/keymap_loaded
존재하는 경우(콘솔 키맵이 초기 부팅 initramfs에 로드되었음을 나타냄) 파일이 정리되고 스크립트는 다른 작업을 수행하지 않고 오류 없이 종료됩니다. - 그렇지 않으면 처음 6개의 가상 콘솔이 UTF-8 유니코드 모드로 초기화되고 키맵 파일이 로드됩니다.
이를 바탕으로 다음을 시도해 볼 수 있습니다.
/etc/console-setup/cached_setup_keyboard.sh
파일이/etc/default/locale
손상되었거나 평소보다 시간이 더 걸리는 콘텐츠가 포함되어 있는지 확인 하세요 .- 존재하지 않는 경우
/etc/console-setup/cached_setup_keyboard.sh
위의 예와 유사한 것을 만들어 볼 수 있습니다. (일부 GUI 키보드 설정 도구로 생성되었을 수 있으며 사용된 명령은 보다 빠를 수 있습니다setupcon -k
.) - 존재하는 경우
/etc/console-setup/cached_setup_keyboard.sh
일시적으로 실행 불가능하게 만들고 시스템을 부팅한 후 키보드를 테스트하여 레이아웃이 작동하는지, 실행 경로가setupcon -k
현재 경로보다 빠른지 확인할 수 있습니다. - 시작하고 실행하여
KEYMAP=y
initramfs에 키맵을 로드하고 기본적으로 우회하도록 하여 작업 속도를 높일 수 있는지 확인하세요./etc/initramfs-tools/initramfs.conf
update-initramfs -u
keyboard-setup.service
답변2
가장 좋은 조언은 서비스가 시작하는 데 걸리는 시간을 제어하기 위해 서비스에 대한 시간 초과 제한을 설정하는 것입니다. 이 작업은 두 가지 방법으로 수행할 수 있습니다.
SERVICETOFIX="keyboard-setup.service"
sudo mkdir -p "/etc/systemd/system/$SERVICETOFIX.d"
sudo echo -e "[Service]\nTimeoutStartSec=10" | tee "/etc/systemd/system/$SERVICETOFIX.d/reduce-timeout.conf"
방법 2: 저는 개인적으로 이 방법을 선호합니다. 먼저 실행한 sudo systemctl edit keyboard-setup.service
다음 편집기에 다음을 추가한 다음 저장하고 편집기를 종료합니다.
[Service]
TimeoutStartSec=10