- Вопрос или проблема
- Примечательно, что экран остается постоянно включенным, когда я не закрываю крышку ноутбука.
- Детали:
- Ответ или решение
- 1. Понимание проблемы
- 2. Создание скрипта для мониторинга состояния крышки
- Шаги по созданию скрипта
- Пояснение работы скрипта
- 3. Автоматический запуск скрипта при загрузке
- Шаги для настройки cron:
- 4. Установка зависимостей
- 5. Проверка работоспособности
- Заключение
Вопрос или проблема
Я установил Debian 12 на свой старый ноутбук с целью использовать его в качестве домашнего сервера, избегая установки какого-либо графического интерфейса.
Однако я столкнулся с проблемой, когда экран выключается при закрытии крышки и не включается при ее открытии.
Изначально я попытался решить эту проблему, настроив HandleLidSwitch=ignore
в файле /etc/systemd/logind.conf
. Хотя это привело к тому, что ноутбук не переходил в спящий режим, экран продолжал выключаться и оставался неоткликнувшимся при открытии крышки.
Рассматривая альтернативное решение, я изменил GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi=off"
в файле /etc/default/grub
. Хотя этот подход казался эффективным, он вызвал множество ошибок загрузки и, по всей видимости, отключил важные службы и сетевые интерфейсы.
В последующих попытках я экспериментовал с различными изменениями по одному:
GRUB_CMDLINE_LINUX_DEFAULT="quiet button.lid_init_state=open"
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi=linux"
GRUB_CMDLINE_LINUX="nomodeset"
Тем не менее, ни одно из этих изменений не оказало влияния на проблему.
Кроме того, я попробовал решить проблему с помощью команды setterm -blank 0
, но это также оказалось неэффективным.
Примечательно, что экран остается постоянно включенным, когда я не закрываю крышку ноутбука.
Обновление: В качестве временной меры я использую команду vbetool dpms on
через SSH, чтобы включить экран ноутбука при необходимости.
Я создал простой bash-скрипт, который проверяет состояние крышки ноутбука и выполняет команду для включения экрана, когда крышка открыта. Эта проверка происходит каждые 20 секунд.
-
Создайте файл скрипта
root@localserver:~# touch /usr/local/bin/lid-monitor.sh
-
Запишите следующий скрипт в файл
#!/bin/bash while true; do LID_STATE=$(cat /proc/acpi/button/lid/LID*/state | awk '{print $2}') if [ "$LID_STATE" == "open" ]; then sudo vbetool dpms on fi sleep 20 done
-
Сделайте скрипт исполняемым
root@localserver:~# chmod +x /usr/local/bin/lid-monitor.sh
Детали:
- Скрипт проверяет состояние крышки, читая файл
/proc/acpi/button/lid/LID/state
и извлекая состояние с помощьюawk
. - Если крышка открыта, он выполняет
sudo vbetool dpms on
, чтобы активировать экран.
Чтобы убедиться, что этот скрипт запускается в фоновом режиме автоматически при загрузке, я добавил задачу cron. Вот шаги, которые я выполнил:
-
Откройте crontab для редактирования от имени пользователя root:
root@localserver:~# crontab -e
-
Добавьте следующую строку, чтобы запланировать выполнение скрипта при старте системы:
@reboot /usr/local/bin/lid-monitor.sh
PS: Убедитесь, что vbetool
установлен. Чтобы установить его, выполните: apt install vbetool
.
Ответ или решение
Чтобы настроить автоматическое включение экрана ноутбука при открытии крышки на Debian 12, важно учитывать несколько аспектов, особенно поскольку вы используете систему без графического интерфейса. Вот подробный план действий, который поможет вам достичь желаемого результата.
1. Понимание проблемы
На вашем ноутбуке при закрытии крышки экран отключается, а при открытии не включается автоматически. Вы уже попробовали изменить параметры в файлах конфигурации, но все изменения не привели к успешному результату. В этом случае одним из решений будет использование bash-скрипта для проверки состояния крышки и активации экрана.
2. Создание скрипта для мониторинга состояния крышки
Предлагаю создать bash-скрипт, который будет проверять состояние крышки и включать экран при её открытии.
Шаги по созданию скрипта
- Создайте файл скрипта:
root@localserver:~# touch /usr/local/bin/lid-monitor.sh
- Напишите следующий код в файл:
#!/bin/bash
while true; do
LID_STATE=$(cat /proc/acpi/button/lid/LID*/state | awk '{print $2}')
if [ "$LID_STATE" == "open" ]; then
sudo vbetool dpms on
fi
sleep 20
done
Пояснение работы скрипта
- Скрипт бесконечно выполняет цикл, каждые 20 секунд проверяя состояние крышки с помощью чтения файла
/proc/acpi/button/lid/LID*/state
. - Если крышка открыта, команда
sudo vbetool dpms on
включит экран.
- Сделайте скрипт исполняемым:
root@localserver:~# chmod +x /usr/local/bin/lid-monitor.sh
3. Автоматический запуск скрипта при загрузке
Чтобы скрипт запускался автоматически при загрузке системы, добавьте его в cron.
Шаги для настройки cron:
- Откройте crontab для редактирования:
root@localserver:~# crontab -e
- Добавьте строку для автоматического запуска скрипта:
@reboot /usr/local/bin/lid-monitor.sh
4. Установка зависимостей
Перед использованием скрипта необходимо убедиться, что vbetool
установлен. Для этого выполните следующую команду:
apt install vbetool
5. Проверка работоспособности
Теперь система должна автоматически включать экран при открытии крышки. Важно протестировать функционирование скрипта после перезагрузки ноутбука. Убедитесь, что он работает, открыв крышку.
Заключение
Использование bash-скрипта для мониторинга состояния крышки является эффективным решением проблемы с отключением экрана на Debian 12 без графического интерфейса. Этот метод не только прост в реализации, но и предоставляет гибкость для дальнейших улучшений. Как итог, вы сможете использовать свой ноутбук в качестве домашнего сервера без проблем с экраном.