如何使用全盘加密在启动后设置笔记本电脑屏幕亮度

pio*_*kkr 5 boot encryption initramfs linux-mint luks

我女朋友买了Lenovo Essential G500 i5-3230,我Linux Mint 16用全盘加密安装了它。它是标准安装,使用dmcrypt和进行加密LUKS。但屏幕亮度有问题,它0甚至在要求加密分区密码之前就设置为亮度。我通过添加以下内容部分修复了它:

\n\n
echo 50 > /sys/class/backlight/acpi_video0/brightness\n
Run Code Online (Sandbox Code Playgroud)\n\n

/etc/rc.local它会在输入正确的密码来安装加密分区后修复亮度。我想在此之前修复亮度,这样我就可以看到密码输入字段。/etc/rc.local是在安装加密磁盘后加载的,所以我想我需要以某种方式强制内核在加载自身之后和安装之前更改亮度。

\n\n

有没有办法告诉内核在启动后立即调整亮度?

\n\n

笔记本电脑显卡为:AMD\xc2\xae Radeon HD 8570M + Intel HD Graphics 4000

\n\n

更新

\n\n

我已经尝试过@derobert 建议的解决方案。我创建了 initramfs 脚本/etc/initramfs-tools/scripts/init-premount/local-backlight-brightness

\n\n
#!/bin/sh\nPREREQ=""\nprereqs()\n{\n    echo "$PREREQ"\n}\n\ncase $1 in\n    prereqs)\n        prereqs\n        exit 0\n    ;;\nesac\n\n. /usr/share/initramfs-tools/hook-functions\n# Begin real processing below this line\n\necho 50 > /sys/class/backlight/acpi_video0/brightness\n
Run Code Online (Sandbox Code Playgroud)\n\n

之后:

\n\n
$ sudo chmod a+rx /etc/initramfs-tools/scripts/init-premount/local-backlight-brightness\n$ sudo update-initramfs -u\n$ sudo reboot\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它不起作用,询问密码时屏幕几乎是黑色的。我什至不确定这个脚本是否被执行。如何检查是否已执行?也许我应该添加一些要求才能PREREQ=""使其发挥作用?

\n\n

更新 2 终于可以运行了

\n\n

好吧,我决定再次阅读 initramfs-tools 手册,以检查一切是否正常,看起来我在脚本中使用了错误的样板。正确的是:

\n\n
#!/bin/sh\nPREREQ=""\nprereqs()\n{\n    echo "$PREREQ"\n}\n\ncase $1 in\nprereqs)\n    prereqs\n    exit 0\n    ;;\nesac\n\n. /scripts/functions\n# Begin real processing below this line\n\necho 50 > /sys/class/backlight/acpi_video0/brightness\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题出在. /usr/share/initramfs-tools/hook-functions. 此行用于未包含在 Intramfs 映像中的挂钩脚本。它应该是. /scripts/functions。更改后,亮度达到了我想要的效果。

\n\n

我将@derobert 答案标记为正确,因为它引导我找到正确的解决方案。

\n

der*_*ert 3

您需要将该脚本添加到 initramfs 中。在 Debian 上(我怀疑 Mint 也是一样),密码提示似乎来自/usr/share/initramfs-tools/scripts/local-top/cryptroot. 该脚本将自己安排为本地顶级脚本中最后调用的。有一组并行的目录用于/etc本地定制。所以你只需要创建一个看起来像这样的文件:

#!/bin/sh
PREREQ=""
prereqs()
{
     echo "$PREREQ"
}

case $1 in
prereqs)
     prereqs
     exit 0
     ;;
esac

echo 50 > /sys/class/backlight/acpi_video0/brightness
Run Code Online (Sandbox Code Playgroud)

进入/etc/initramfs-tools/scripts/local-top/etc/initramfs-tools/scripts/init-premount。文件名并不重要,尽管我会选择类似的名称local-backlight-brightness以确保它不会与某些包提供的脚本冲突。(先决条件样板直接来自 initramfs-tools 联机帮助页。)

然后,运行update-initramfs -u