Keyboard-setup.service가 매우 느리게 시작됩니다. 나에게 그것이 필요합니까?

Keyboard-setup.service가 매우 느리게 시작됩니다. 나에게 그것이 필요합니까?

내 컴퓨터가 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=yinitramfs에 키맵을 로드하고 기본적으로 우회하도록 하여 작업 속도를 높일 수 있는지 확인하세요./etc/initramfs-tools/initramfs.confupdate-initramfs -ukeyboard-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

관련 정보