我需要systemd-tmpfiles --create
在引导过程中使用 systemd 发行版运行。所以我需要创建一个 systemd .service 文件来完成这项工作。
在这个问题中,您可以阅读有关我需要什么以及为什么需要的所有详细信息:systemd-tmpfiles 如何工作?
我已经阅读了一些关于它的文档,我正在编写以下测试:
[Unit]
Description=Execute tmpfiles to disable usb-wakeup # see details in the link above
Requires=multi-user.target # see details in the link above
After=multi-user.target # see details in the link above
[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-tmpfiles --create
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
但我不确定,因为systemd-tmpfiles
它不是一个简单的程序,而是一个 systemd 本身。我不想破坏我的系统。
关于正确的 .service 文件的任何提示?
我试图/sys/bus/usb/devices/4-3/power/wakeup
在每次启动时更改 的值(根据我的 4-3 lsusb
,这是键盘 ID)。
默认值为:
# cat /sys/bus/usb/devices/4-3/power/wakeup
enabled
Run Code Online (Sandbox Code Playgroud)
经典的“在线”编辑按预期工作:
# echo disabled > /sys/bus/usb/devices/4-3/power/wakeup
# cat /sys/bus/usb/devices/4-3/power/wakeup
disabled
Run Code Online (Sandbox Code Playgroud)
我正在使用 systemd 发行版,所以我想使用systemd 方式来编辑“临时文件”
我创建了以下文件:
# cat /etc/tmpfiles.d/disable-usb-wakeup.conf
w /sys/bus/usb/devices/4-3/power/wakeup - - - - disabled
Run Code Online (Sandbox Code Playgroud)
但每次启动后我仍然在这个文件中使用默认值(即启用)
难道我做错了什么?
编辑:
这是另一个测试:
# cat /etc/tmpfiles.d/scheduler.conf
w /sys/block/sda/queue/scheduler - - - - deadline
Run Code Online (Sandbox Code Playgroud)
这个很好用!启动后我得到:
# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
Run Code Online (Sandbox Code Playgroud)
(默认的是 cfq 调度程序)
那么,为什么这个有效而另一个无效呢?
/sys/bus/usb/devices/4-3/power/wakeup
是一个符号链接/sys/devices/pci0000:00/0000:00:12.1/usb4/4-3/
?/sys/bus/usb/devices/4-3/power/wakeup
只包含一个词?(即没有空格)我有一台运行 Sabayon(基于 Gentoo 的发行版)的 Thinkpad Edge E130,我正在与众所周知的错误Xorg 255 keycodes limit 作斗争。
我的笔记本电脑有Mic Mute/Unmute的 Fn+F4 热键。这就是问题:
showkey -k
在 Fn+F4 按键上显示键码248showkey -s
按键上不显示任何内容xev
按键上不显示任何内容(因为 248+8 [由内核添加] 大于 255)如果一个键有一个键码,它也必须有一个扫描码。使用getscancodes程序确实我得到了 26 作为扫描码:
# ./Sabayon/getscancodes/getscancodes /dev/input/event6
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x17aa product 0x5054 version 0x4101
Input device name: "ThinkPad Extra Buttons"
26 (0x1a)
26 (0x1a)
Run Code Online (Sandbox Code Playgroud)
根据此线程,我的猜测只是将热键的键码更改为较小的、未使用的键码。例如,根据我的说法,120 似乎未使用$ xmodmap -pke
我试过
# setkeycodes 0x1a 120 …
Run Code Online (Sandbox Code Playgroud) 我的 Debian Sid 系统有一个奇怪的问题。我想在 中设置一个全局环境变量/etc/environment
,该变量应该由pam_env
模块读取。不幸的是,重新登录系统后,该变量没有被设置。
etc/environment
在另一个 Arch Linux 机器上,按预期定义了相同的变量集。只是为了测试,我尝试设置一个本地环境变量.pam_environment
,并且在 Debian 上它没有被定义,而在 Arch 上它是定义的。
我在 Debian 上使用 GDM,在 Arch 上使用 SDDM 作为登录管理器。我缺少什么?我应该查看哪些(PAM 或 GDM)配置文件?
编辑:输出grep pam_env /etc/pam.d/*
$ grep pam_env /etc/pam.d/*
/etc/pam.d/atd:auth required pam_env.so
/etc/pam.d/cron:# Read environment variables from pam_env's default files, /etc/environment
/etc/pam.d/cron:# and /etc/security/pam_env.conf.
/etc/pam.d/cron:session required pam_env.so
/etc/pam.d/cron:session required pam_env.so envfile=/etc/default/locale
/etc/pam.d/gdm-autologin:session required pam_env.so readenv=1
/etc/pam.d/gdm-autologin:session required pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/gdm-launch-environment:session required pam_env.so readenv=1
/etc/pam.d/gdm-launch-environment:session required pam_env.so readenv=1 envfile=/etc/default/locale
/etc/pam.d/gdm-password:session required …
Run Code Online (Sandbox Code Playgroud)