Как я могу настроить Debian 12 на автоматическое включение экрана ноутбука при открытии крышки?

Вопрос или проблема

Я установил 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 секунд.

  1. Создайте файл скрипта

    root@localserver:~# touch /usr/local/bin/lid-monitor.sh

  2. Запишите следующий скрипт в файл

    #!/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
    
  3. Сделайте скрипт исполняемым

    root@localserver:~# chmod +x /usr/local/bin/lid-monitor.sh

Детали:

  • Скрипт проверяет состояние крышки, читая файл /proc/acpi/button/lid/LID/state и извлекая состояние с помощью awk.
  • Если крышка открыта, он выполняет sudo vbetool dpms on, чтобы активировать экран.

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

  1. Откройте crontab для редактирования от имени пользователя root:

    root@localserver:~# crontab -e

  2. Добавьте следующую строку, чтобы запланировать выполнение скрипта при старте системы:

    @reboot /usr/local/bin/lid-monitor.sh

PS: Убедитесь, что vbetool установлен. Чтобы установить его, выполните: apt install vbetool.

Ответ или решение

Чтобы настроить автоматическое включение экрана ноутбука при открытии крышки на Debian 12, важно учитывать несколько аспектов, особенно поскольку вы используете систему без графического интерфейса. Вот подробный план действий, который поможет вам достичь желаемого результата.

1. Понимание проблемы

На вашем ноутбуке при закрытии крышки экран отключается, а при открытии не включается автоматически. Вы уже попробовали изменить параметры в файлах конфигурации, но все изменения не привели к успешному результату. В этом случае одним из решений будет использование bash-скрипта для проверки состояния крышки и активации экрана.

2. Создание скрипта для мониторинга состояния крышки

Предлагаю создать bash-скрипт, который будет проверять состояние крышки и включать экран при её открытии.

Шаги по созданию скрипта

  1. Создайте файл скрипта:
root@localserver:~# touch /usr/local/bin/lid-monitor.sh
  1. Напишите следующий код в файл:
#!/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 включит экран.
  1. Сделайте скрипт исполняемым:
root@localserver:~# chmod +x /usr/local/bin/lid-monitor.sh

3. Автоматический запуск скрипта при загрузке

Чтобы скрипт запускался автоматически при загрузке системы, добавьте его в cron.

Шаги для настройки cron:

  1. Откройте crontab для редактирования:
root@localserver:~# crontab -e
  1. Добавьте строку для автоматического запуска скрипта:
@reboot /usr/local/bin/lid-monitor.sh

4. Установка зависимостей

Перед использованием скрипта необходимо убедиться, что vbetool установлен. Для этого выполните следующую команду:

apt install vbetool

5. Проверка работоспособности

Теперь система должна автоматически включать экран при открытии крышки. Важно протестировать функционирование скрипта после перезагрузки ноутбука. Убедитесь, что он работает, открыв крышку.

Заключение

Использование bash-скрипта для мониторинга состояния крышки является эффективным решением проблемы с отключением экрана на Debian 12 без графического интерфейса. Этот метод не только прост в реализации, но и предоставляет гибкость для дальнейших улучшений. Как итог, вы сможете использовать свой ноутбук в качестве домашнего сервера без проблем с экраном.

Оцените материал
Добавить комментарий

Капча загружается...