Не работают специальные клавиши XF86MonBrightnessUp / XF86MonBrightnessDown

Один из способов убедиться, что ядро не пропустит ни одного сообщения, - это отладить его в виртуальной машине.

Например, следующий сценарий использует qemu для запуска виртуальной машины с пользовательским ядром:

qemu-system-x86_64\
    -kernel arch/x86/boot/bzImage\
    -drive file=/home/lgeorget/VM/image.qcow2,if=virtio\
    -append "root=/dev/vda1"\
    -netdev user,id=mynet0 -device e1000,netdev=mynet0\
    -enable-kvm\
    -S

Важным параметром здесь является -S, который заставляет qemu запускать GDB-сервер и ждать готовности отладчика перед загрузкой.

В другой консоли перейдите в дерево разработки Linux, где вы скомпилировали ваше пользовательское ядро, и здесь запустите GDB с помощью gdb vmlinux для загрузки символов ядра. Затем в приглашении введите:

target remote :1234

Это приведет к подключению к gdb-серверу, запущенному qemu (на localhost, порт 1234 по умолчанию). Затем вы можете использовать отладчик почти как для любой программы, устанавливать точки останова, продолжать выполнение командой continue и т.д. У вас должна быть возможность осмотра и дампа памяти, а также копирования журналов, если вы хотите их проанализировать. Обратите внимание, что это не увеличивает многословность ядра.

В Интернете есть много руководств, а также официальная документация.

https://stackoverflow.com/questions/11408041/how-to-debug-the-linux-kernel-with-gdb-and-qemu http://wiki.osdev.org/Kernel_Debugging http://elinux.org/Debugging_The_Linux_Kernel_Using_Gdb

11
12.11.2016, 18:14
3 ответа

Editar:Debe tener acpiinstalado en su máquina para que funcionen:)

Editar 2:Este código incrementa/disminuye los valores de brillo en 1, pero algunos modelos tendrán valores que varían en miles, así que modifique el cambio en consecuencia.

Esta es una vieja pregunta, pero una respuesta puede ayudar a otros. Tuve un problema con una nueva instalación de i3wmen mi computadora portátil donde, por alguna razón, mis claves XF86MonBrightnessUp/Downno estaban registradas (Verifiqué conxev). Lo que terminé haciendo fue crear acpiacciones y eventos que correspondían a las teclas que se presionaban.

Las siguientes son las acciones/eventos que definí en /etc/acpi/actionsy /etc/acpi/events, respectivamente:

Acciones

/etc/acpi/actions/bl -down.sh

#!/bin/sh

bl_device=/sys/class/backlight/acpi_video0/brightness
echo $(($(cat $bl_device)-1)) | sudo tee $bl_device

/etc/acpi/actions/bl -up.sh

#!/bin/sh

bl_device=/sys/class/backlight/acpi_video0/brightness
echo $(($(cat $bl_device)+1)) | sudo tee $bl_device

Eventos

/etc/acpi/events/bl -abajo

event=video/brightnessdown BRTDN 00000087 00000000
action=/etc/acpi/actions/bl-down.sh

/etc/acpi/events/bl -hasta

event=video/brightnessup BRTUP 00000086 00000000
action=/etc/acpi/actions/bl-up.sh

Puede verificar sus códigos de evento acpi de aumento/disminución de brillo usando acpi_listenen su terminal y luego presionando la combinación de teclas correspondiente (, por ejemplo, para mí, es Fn + Flecha hacia abajo para disminuir el brillo ).

Finalmente, no olvide reiniciar acpidconsudo /etc/init.d/acpid reload

Nota:Es posible que su dispositivo de retroiluminación esté definido en una ubicación diferente a /sys/class/backlight/acpi_video0-, justo donde estaba el mío. Investiga un poco.

9
27.01.2020, 19:59

Я столкнулся с той же проблемой с arch на моем dell XPS. Установка пакета xf86-video-intelисправила это.

1
27.01.2020, 19:59

Чтобы завершить отличный ответ от Try431, конфигурация действий, которая работала для моего Lenovo G580, была приведена ниже.

Примечание:

  • события были такими же, как Try431
  • Я также использую i3wm
  • пришлось добавить chmod +xв файлы sh, чтобы их можно было выполнить
  • моя карта была разведывательной, поэтому bl_deviceпуть был другим
  • приращение/уменьшение было слишком маленьким. Я изменил его на шаг 100.

/etc/acpi/actions/bl -down.sh

#!/bin/sh
bl_device=/sys/class/backlight/intel_backlight/brightness
echo $(($(cat $bl_device)-100)) | sudo tee $bl_device

/etc/acpi/events/bl -вверх

#!/bin/sh
bl_device=/sys/class/backlight/intel_backlight/brightness
echo $(($(cat $bl_device)+100)) | sudo tee $bl_device
0
14.07.2020, 20:52

Теги

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