Вопрос или проблема
Я пытаюсь привыкнуть к современному Linux. Запускаю Ubuntu 24.04.1 LTS на HP HP EliteDesk 800 G3 DM 35W / Intel® Pentium® G4560T × 4
Что я хочу сделать: Привязать кнопку питания на корпусе (единственную кнопку) к “sudo reboot” (или эквиваленту), вместо стандартного “Выключение через 60 секунд”.
Что я уже пробовал:
#1 Редактирование /etc/systemd/logind.conf -> изменить (раскомментировать) HandlePowerKey= [ничего не работает]
#2 Редактирование /usr/share/X11/xkb/symbols/inet -> изменить
key { [ XF86PowerOff ] };
на
key { [ XF86XK_LaunchA ] };
Это сработало – какая бы клавиша здесь ни была, кажется, она передается системе, когда я нажимаю кнопку. Но теперь я не знаю, как использовать эти XF86XK_Launch0-9 / XF86XK_LaunchA-F клавиши…
Поскольку набор символов XF86XK_ похоже не содержит элемента “reset” или “reboot”, мне по сути нужно будет запустить .sh, верно?
Графический интерфейс Ubuntu для привязки клавиш не распознает кнопки XF86XK_Launch, но их замечает sudo showkey – XF86XK_LaunchA имеет код клавиши 116, например [0xe0 0x5e 0xe0 0xde с флагом -s]
Итак, какой был бы “правильный способ” заставить мой компьютер запустить здесь скрипт?
Спасибо!
Ответ или решение
Чтобы перенастроить кнопку питания на вашем HP EliteDesk 800 G3 DM в Ubuntu 24.04.1 LTS так, чтобы она запускала команду "sudo reboot", вам необходимо выполнить несколько шагов. Мы рассмотрим решение, которое включает в себя создание скрипта и настройку системы для его вызова при нажатии на кнопку питания.
Шаг 1: Создание скрипта
Первым делом создайте bash-скрипт, который будет выполнять команду перезагрузки. Откройте терминал и выполните следующие команды:
sudo nano /usr/local/bin/reboot_script.sh
В открывшемся редакторе вставьте следующий код:
#!/bin/bash
sudo reboot
Сохраните изменения, нажав CTRL + X
, затем Y
, и Enter
.
Теперь необходимо сделать скрипт исполняемым:
sudo chmod +x /usr/local/bin/reboot_script.sh
Шаг 2: Настройка системы для запуска скрипта
Теперь, когда у вас есть скрипт для перезагрузки, необходимо настроить систему так, чтобы нажатие кнопки питания вызывало этот скрипт. Для этого используйте утилиту systemd
.
- Создайте новый
service
файл:
sudo nano /etc/systemd/system/reboot-button.service
- Вставьте в файл следующий код:
[Unit]
Description=Reboot on Power Button Press
[Service]
Type=oneshot
ExecStart=/usr/local/bin/reboot_script.sh
[Install]
WantedBy=multi-user.target
- Сохраните и закройте редактор.
Шаг 3: Настройка логина
Теперь нам нужно настроить systemd
логин, чтобы он вызывал этот сервис на нажатие кнопки питания. Для этого откройте конфигурационный файл:
sudo nano /etc/systemd/logind.conf
В этом файле найдите строку, начинающуюся с #HandlePowerKey=
и измените ее на:
HandlePowerKey=ignore
Также добавьте строку:
HandleLidSwitch=ignore
Это предотвратит стандартное поведение при нажатии кнопки питания на вашем ПК. Сохраните изменения.
Шаг 4: Запуск и настройка
Чтобы запустить новый юнит и убедиться, что изменения вступили в силу, выполните:
sudo systemctl daemon-reload
sudo systemctl enable reboot-button.service
Шаг 5: Перезагрузка системы
Теперь, когда все настройки завершены, перезагрузите систему:
sudo reboot
Заключение
После перезагрузки при нажатии на кнопку питания должно сработать выполнение вашего скрипта, который выполняет команду sudo reboot
. Если возникнут сложности, проверьте логи с помощью команды journalctl -xe
для поиска ошибок. Этот способ позволяет настроить функциональность кнопки питания под ваши нужды и избежать стандартной задержки выключения.
Если у вас есть дополнительные вопросы или вам нужна помощь, не стесняйтесь спрашивать!