トップ «前の日記 最新 次の日記»

2023-08-05 (Sa) [長年日記]

_ uinput の permission がおかしい…

ノートの本体キーボードがおかしい。 capslock キーが ctrl として機能してない。 kmonad だっけ…

 8月 05 16:30:39 luna kmonad[1295]: kmonad: /dev/uinput: openFd: permission denied (Permission denied)

うーん、何か起きた…

luna:~ % ls -al /dev/uinput
crw-------+ 1 root input 10, 223  8月  5 16:30 /dev/uinput

えーっと、確か input グループに私を突っ込んでたような…

luna:~ % grep input /etc/group
input:x:994:brltty,masm

入ってる入ってる。

udev rule を確認すると、

luna:~ % cat /etc/udev/rules.d/50-uinput.rules 
KERNEL=="uinput", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"

uinput kernel module が読み込まれた時に /dev/uinput ができて、 その時に 0660 で作るように設定してある感じ。

てことは、kernel module が読み込まれてない?

luna:~ % lsmod | grep uinput
luna:~ % 

うん。

手で読み込んでみる。

luna:~ % sudo modprobe uinput
luna:~ % ls -l /dev/uinput 
crw-rw----+ 1 root input 10, 223  8月  5 16:32 /dev/uinput
luna:~ % 

0660 になった。

なんで読み込まれなくなったのだろう…。また systemd が何かやらかしたか。

まー、手で読み込めばいいんなら、unit file から読めばいいよね。

luna:~ % grep modprobe /etc/systemd/system/kmonad-kbd.service 
Requires=modprobe@uinput.service
Wants=modprobe@uinput.service
luna:~ % 

こんな感じでやってみたけど、変わらん……… journal 見た感じは modprobe@uinput は動いてそうなんだけど。

なんか上書きしてんのか…?

tmpfiles.d でやってみよう。

luna:~ % cat /etc/tmpfiles.d/uinput.conf                     
c+	/dev/uinput	0660 root input -	10:223
luna:~ % 

これでもダメ。やっぱりどこか上書きしてる?? というか、

luna:~ % cat /run/tmpfiles.d/static-nodes.conf | grep uinput
c! /dev/uinput 0600 - - - 10:223
luna:~ % 

おかしい… 反映されてないんか??

もー意味わからん。

luna:~ % cat /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local compatibility

[Service]
Type=oneshot
ExecStart=/etc/rc.local
# disable timeout logic
TimeoutSec=0
#StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

↑こんな感じで、

luna:~ % cat /etc/rc.local
#!/bin/bash

(
  echo rc.local
  ls -l /dev/uinput
  chmod g+rw /dev/uinput
  ls -l /dev/uinput
) 2>&1 | logger -t rc.local

↑こんな感じで。

これでやっとうまくいった。

SysVStartPriority=99

たぶん、↑これで順序が下がったのだろうな。

と思ったんだけど、journal に↓こんな出力があった。

 8月 05 16:32:05 luna systemd[1]: /etc/systemd/system/rc-local.service:11: Support for option SysVStartPriority= has been removed and it is ignored

えーーー! しかも代わりの方法が提示されてない。 順序の制御ができてないのか… だとすると、うまくいったりいかなかったりしそうだなぁ。

あーなんか禁断の手段を使ってしまった気がするわ…

/usr/lib/tmpfiles.d/static-nodes-permissions.conf にコメントが書いてある。

# This file adds permissions on top of static-nodes.conf generated by
# kmod-static-nodes.service. Rules specified here should match the
# permissions specified for udev in 50-udev-default.rules.

kmod-static-nodes.service は kmod コマンドを使って /run/tmpfiles.d/static-nodes.conf を生成している。

↓man tmpfiles.d より。

 z     /path-or-glob/to/adjust/mode             mode user group -           -

え? じゃぁ、/etc/tmpfiles.d/uinput.conf に c! じゃなくて z で書けと?

luna:~ % cat /etc/tmpfiles.d/uinput.conf 
z	/dev/uinput	0660 root input - -

で、rc.local を外して reboot!

luna:~ % ls -al /dev/uinput
crw-rw----+ 1 root input 10, 223  8月  5 17:26 /dev/uinput
luna:~ % ps auxww | grep kmo
masm        1323  1.0  0.0 1073750784 12928 ?    Ssl  17:26   0:01 /usr/bin/kmonad /etc/kmonad/hhkb.kbd
masm        1324  0.7  0.0 1073749948 12800 ?    Ssl  17:26   0:00 /usr/bin/kmonad /etc/kmonad/internal.kbd
masm        7004  0.0  0.0   9340  1656 pts/1    S+   17:28   0:00 grep kmo

やったーーうまくいったーー!!

んー。udev rule と tmpfiles.d と両方に permission を書かせて、systemd はどこへ向かってるのだろう…

私が手を出さなければ、

kernel module ---> udev rule
              ---> kmod ---> tmpfiles.d

で、どちらにしても kernel module の情報を元に設定してるんだよね。

ただ、私が変えたくなったので、 udev rule と tmpfiles.d と両方に設定することになってしまった。

いや、udev rule を削除すればいいみたい。 udev からは手を出さず、tmpfiles.d からのみ設定する。 tmpfiles.d は kernel module からの情報と /etc/tmpfiles.d/uinput.conf からの permission 情報を合成して生成してくれる。

luna:~ % cat /etc/tmpfiles.d/uinput.conf
z	/dev/uinput	0660 root input - -
luna:~ % 

今はこれでいいんだろうな…

_ 原神

動物捕まえイベントはわりと楽しい。

楽園の厳選は全然進まない。 濃縮樹脂使うとだいたい平均して1個/回くらいもらえてる。 で、24回。そろそろどれか出てくれてもいいのでは。 10%な部位あるよね。あれなら2つ出てもいいくらい?

https://wikiwiki.jp/genshinwiki/%E8%81%96%E9%81%BA%E7%89%A9#Reinforce

あー、時計が出た場合に、メインが元素熟知な確率が 10% ってことね。 時計が出る確率がわからんから、結局何%なのかわからんな。 部位が5つあるから、単純に 1/5 として、2% か。50回で1個。 じゃぁ杯 0.5%、冠 0.8%? 期待値として200回くらいでそれぞれ1個?

きびちーな…

冒険ランク、経験値あと4000くらいで上がる。 冒険経験あんまり考えてなかったので、 どのくらい時間がかかるかはわからん。

紀行 Lv が MAX に到達。原石いっぱいもらった〜 次からは武器が10種類に増えるんよね。性能楽しみ!


編集 パスワード変更