小编ean*_*ang的帖子

如何编写运行 systemd-tmpfiles 的 systemd .service 文件

我需要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 文件的任何提示?

arch-linux systemd

16
推荐指数
1
解决办法
3万
查看次数

systemd-tmpfiles 如何工作?

我试图/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只包含一个词?(即没有空格)

arch-linux systemd sysfs

15
推荐指数
2
解决办法
1万
查看次数

如何使用 setkeycodes 更改键码

我有一台运行 Sabayon(基于 Gentoo 的发行版)的 Thinkpad Edge E130,我正在与众所周知的错误Xorg 255 keycodes limit 作斗争。

我的笔记本电脑有Mic Mute/Unmute的 Fn+F4 热键。这就是问题:

  • showkey -k在 Fn+F4 按键上显示键码248
  • showkey -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)

xorg keyboard thinkpad

5
推荐指数
1
解决办法
9494
查看次数

Debian 忽略 PAM 环境变量(而 Arch 则不会)

我的 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)

pam debian environment-variables

5
推荐指数
1
解决办法
2859
查看次数