keyboard-setup.service está lento na inicialização. Eu preciso disso?

tail позволяет пропустить заданное количество строк:

find "/dir/folder" name "*.dat" -exec tail +2 {} + >> "/dir/folder/table.txt"
2
29.12.2017, 19:10
2 ответа

Запустив 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 Unicode и загружается файл раскладки.

Исходя из этого, вы можете попробовать:

  • проверка ваших /etc/console-setup/cached_setup_keyboard.shи /etc/default/localeна наличие повреждений или содержания чего-либо -занимает больше времени, чем обычно
  • если /etc/console-setup/cached_setup_keyboard.shне существует, вы можете попробовать создать аналогичный моему примеру выше (он может быть создан с помощью какого-либо инструмента настройки клавиатуры с графическим интерфейсом, и используемые команды могут быть быстрее, чемsetupcon -k)
  • если /etc/console-setup/cached_setup_keyboard.shсуществует, вы можете попытаться временно сделать его неисполняемым -,загрузка системы и тестирование клавиатуры, чтобы увидеть, можно ли использовать раскладку и быстрее ли путь выполнения через setupcon -k, чем текущий путь
  • установите KEYMAP=yв /etc/initramfs-tools/initramfs.confи запустите update-initramfs -uи посмотрите, ускорит ли это работу, загрузив раскладку в initramfs и заставив keyboard-setup.serviceбыть по существу обойденным
2
27.01.2020, 22:34

Лучше всего установить ограничение времени ожидания для службы, чтобы контролировать время, которое она потребляет при запуске. Вы можете сделать это двумя способами:

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
0
27.01.2020, 22:34

Теги

Похожие вопросы