コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2025年4月11日 >>> 2025年3月29日
link もっと後

2025年4月11日

udevルールのデバッグ例

目次: Linux

最後にudevルールのデバッグ例も書いておきましょう。/dev/ttyS0の所有者をroot:dialoutにするルールを例に説明します。

ttyS0の所有者
$ ls -la /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 Apr  5 23:12 /dev/ttyS0

udevルールは/etc/udev/rules.dではなく、/usr/lib/udev/rules.dにあります。

ttyS0の所有者グループを設定するルール

## /usr/lib/udev/rules.d/50-udev-default.rules

...

# ★★addイベント以外なら何もしない★★
ACTION!="add", GOTO="default_end"

SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty[0-9]*|hvc[0-9]*|sclp_line[0-9]*|ttysclp[0-9]*|327
0/tty[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
# ★★下記のルールを使って説明します★★
KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"

...

ざっくり説明すると、ACTION=addのときのみ"ttyなんとか", "ttymxcなんとか", "pppoxなんとか", ...の名を持つデバイスの所有者グループをdialoutに設定してくれ、こんな意味を持ったルールです。今回確認するポイントは、

  • addイベントに反応すること
  • changeイベントに反応しないこと
  • 他のルールで設定されないこと

この3つを確認しようと思います。

addイベント

まずはttyS0の所有者グループを変更してrootにします。dialout以外ならなんでも良いです。

ttyS0の所有者グループをrootに変更
# chown root:root /dev/ttyS0

# ls -la /dev/ttyS0
crw-rw---- 1 root root 4, 64 Apr  5 23:36 /dev/ttyS0

前回紹介したシステム起動時のイベントを再現させた後に、再び所有者グループを確認します。

addイベントに反応して所有者グループが戻る
# systemctl restart systemd-udev-trigger

# ls -la /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 Apr  5 23:46 /dev/ttyS0

所有者グループがdialoutに戻りました。

changeイベント

同様に所有者グループをrootに変更したあと、changeイベントを発生させます。

changeイベントではグループが変わらない
# chown root:root /dev/ttyS0

# ls -la /dev/ttyS0
crw-rw---- 1 root root 4, 64 Apr  5 23:46 /dev/ttyS0

# udevadm trigger

# ls -la /dev/ttyS0
crw-rw---- 1 root root 4, 64 Apr  5 23:48 /dev/ttyS0

所有者グループはrootのままでdialoutにはなりませんでした。想定どおりです。

他のルールで設定されないこと

あるルールを書いたが間違っていて動かなかった、だけど偶然別のルールが同じ結果をもたらしていて気づかず放置されていた……なんてことは人間誰しもやってしまう間違いです。

注目していたルールがdialoutに設定するルールだった証明をするためには、先程注目していたルールをコメントアウトします。その後addイベントを発生させ、所有者グループがdialoutに戻らないことを確認します。

ルールを無効にする

## /usr/lib/udev/rules.d/50-udev-default.rules

...

# ★★addイベント以外なら何もしない★★
ACTION!="add", GOTO="default_end"

SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty[0-9]*|hvc[0-9]*|sclp_line[0-9]*|ttysclp[0-9]*|327
0/tty[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
# ★★下記ルールをコメントアウトします★★
#KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"

...

保存したら先程同様に所有者グループを変更し、addイベントを発生させたあとに所有者グループを確認します。

ルール無効化後はaddイベントでもグループが変わらない
# chown root:root /dev/ttyS0

# ls -la /dev/ttyS0
crw-rw---- 1 root root 4, 64 Apr  5 23:54 /dev/ttyS0

# systemctl restart systemd-udev-trigger

# ls -la /dev/ttyS0
crw-rw---- 1 root root 4, 64 Apr  5 23:55 /dev/ttyS0

先程addイベントを発生させたときは所有者グループが設定されましたが、ルールのコメントアウト後は設定されなくなりました。注目していた箇所は正しかったことがわかりました。

編集者:すずき(2025/04/16 01:01)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2025年4月10日

udevルールのテスト方法

目次: Linux

何かudevの設定ルールを書いたときどうやってテストしたら良いでしょうか?udevにはわざとイベントを発生させる方法があります。調べると真っ先に下記コマンドが出てくると思います。おそらく。

udevのイベント発生方法
# udevadm trigger

これで十分なことも多いですが、udevadm triggerだとACTION=changeのイベントしか発生せずACTION=addのイベントのデバッグができないです。例えば私のマシンでttyS0のイベントをudevadm triggerで発生させるとこんな感じで、changeイベントが発生します。

changeイベントの例(ttyS0)
KERNEL[3314156.538635] change   /devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0 (tty)
ACTION=change
DEVPATH=/devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0
SUBSYSTEM=tty
SYNTH_UUID=0
DEVNAME=/dev/ttyS0
SEQNUM=8729
MAJOR=4
MINOR=64

カーネル起動後、udevが起動した時にマシンに元々装着されているデバイス全てに対してACTION=addイベントが発生するのですが、これはudevadm triggerだと再現できません。

システム起動時のイベントのテスト方法

システム起動時しか適用されないudev設定ルールをデバッグしたければ、

システム起動時のイベント再現
# systemctl restart systemd-udev-trigger

を実行すると起動時に近いudevイベントが発生します。マシンの再起動でも良いですが、いちいちマシンを再起動するのは面倒ですよね。再起動不要で試せる方法は大変便利です。例えばttyS0のイベントをsystemd-udev-triggerで発生させるとこんな感じで、addイベントが発生します。

addイベントの例(ttyS0)
KERNEL[3314819.021878] add      /devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0 
(tty)
ACTION=add
DEVPATH=/devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0
SUBSYSTEM=tty
SYNTH_UUID=0
DEVNAME=/dev/ttyS0
SEQNUM=9276
MAJOR=4
MINOR=64

先程とほぼ同じですがACTION=changeではなくACTION=addになっていて、システム起動時にttyS0デバイスが追加されたイベントが再現できるわけです。

個別にじっくり

他のパターンとして、1つのデバイスだけaddやchangeイベントを発生させたい場合もあると思います。該当するデバイスファイルのsysfsを探して、ディレクトリ配下にあるueventファイルに"add"や"change"の文字列を書き込むとイベントが発生します。例えばttyS0の場合は、

/sys/devices以下のueventを用いてaddイベント発生
# echo -n add > /sys/devices/pnp0/00\:04/00\:04\:0/00\:04\:0.0/tty/ttyS0/uevent

もしくは別の/sys/classから辿って、

/sys/class以下のueventを用いてaddイベント発生
# echo -n add > /sys/class/tty/ttyS0/uevent

こんな感じです。/sys/class/tty/ttyS0は/sys/devices/.../tty/ttyS0へのシンボリックリンクなので、行き着く先は一緒です。

続きはまた後日。

編集者:すずき(2025/04/16 00:46)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2025年4月7日

udevルールのマイナーな方

目次: Linux

最近udevを少しいじっていたので忘れないうちにメモします。DebianやUbuntuですとudevの設定ルールファイル(*.rules)の配置は、

  • /usr/lib/udev/rules.d
  • /etc/udev/rules.d

です。後者は有名なので知っていましたけど、前者を知ったのは最近でした。きっかけは/etc/udev/rules.dに一切記述がないのに、udevがパーミッションを設定しているデバイスファイルを見かけたことです。誰がどこで設定しているのか?を探して、前者の/usr/lib/udev/rules.dの存在に気づきました。

存在に気づいてからinfo udevを読んでみると、当り前ですけどちゃんとルールファイルの置き場が書いてあり、先ほどの2つだけでなく、

  • /usr/lib/udev/rules.d
  • /usr/local/lib/udev/rules.d
  • /etc/udev/rules.d
  • /run/udev/rules.d: 一時的な設定ファイルを置く場所

この4つのディレクトリだよと書いてありました。知らなんだ。

udevのイベントの確認方法

あまりudevの設定をデバッグする人は居なさそうですけど、udev設定のデバッグ時はudevが何のイベントとデバイス属性を検知したか?を知る必要があります。知る方法は簡単で、

udevのイベント、デバイス属性の確認コマンド
# udevadm monitor -p

を実行するだけです。例えば私のマシンでttyS0のイベントを見ると、こんな表示になります。

udevadm monitorの表示例
KERNEL[3314156.538635] change   /devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0 (tty)
ACTION=change
DEVPATH=/devices/pnp0/00:04/00:04:0/00:04:0.0/tty/ttyS0
SUBSYSTEM=tty
SYNTH_UUID=0
DEVNAME=/dev/ttyS0
SEQNUM=8729
MAJOR=4
MINOR=64

ACTION=の部分がイベントの種類です。udevを使う人に用があるイベントはaddかchangeでしょう。

続きはまた後日。

編集者:すずき(2025/04/16 00:14)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2025年4月4日

xrdpに接続しても画面がなかなか表示されない

目次: Linux

ネットワークが不安定な環境でLinux PCのxrdpサーバーに接続していると、下記のようなログが出てネットワーク要因で切断されることがあります。

クライアント(freerdp)のエラーメッセージ
[INFO][com.freerdp.client.common] - [client_auto_reconnect_ex]: Network disconnect!

切断後に再接続できますが、ときおり画面が真っ黒なまま表示されなくなる、もしくは表示に長い時間が掛かることがあります。xrdpのコードを追ったわけではないので断定はできませんが、

  • xrdp接続を受け付けるxrdpサービスの下にxrdpプロセスが複数溜まっている
  • xrdpプロセスの接続相手がネットワーク的に不通

だとこの症状が発生するようです。このとき接続先サーバー(Ubuntu 24.04 LTSを使用)のプロセス一覧を見るとxrdpのセッションを維持していると思われるプロセスが残っています。

サーバー(xrdp)マシンのプロセス一覧
  |-xrdp,1812,xrdp   ★★サービス
      `-xrdp,1187497 ★★配下にxrdpが残っている
  `-xrdp-sesman,1756
      `-xrdp-sesman,2791
          |-Xorg,2809,katsuhiro :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log

この状態にハマってfreerdpなどクライアント側の画面が出ない状態になったら、接続先のサーバーマシンのプロセス一覧を調べ、xrdpサービス配下に溜まっているxrdpサーバープロセスをkillコマンドで強制的に終了させると画面がすぐ表示されるはずです。

終了対象のxrdpプロセス
  |-xrdp,1812,xrdp   ★★サービスは終了させてはだめ
      `-xrdp,1187497 ★★配下にxrdpが残っていたら終了させる
  `-xrdp-sesman,1756
      `-xrdp-sesman,2791
          |-Xorg,2809,katsuhiro :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log

注意点はなんだろな?強いて言えば、xrdpサービスやxrdp-sesmanサービスを終了させないようにするくらいでしょうか。間違ってxrdpサービスを止めてしまうと、サーバー側のリモートデスクトップ環境で起動していたアプリケーションも終了してしまい、場合によっては変な状態で残って動かなくなったりします。

編集者:すずき(2025/04/15 22:48)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2025年3月31日

首都高バトルSteam版、フルチューン後の姿 - その2

目次: ゲーム

首都高バトル(Steam版)高ランクの車をひたすらフルチューンするやつの続きです。前回と合わせて6車種ほどフルチューンしましたが、私程度の腕だと車を乗り変えても違いがわかりません。逆に考えれば、速さを気にせず好きな車を選べるので嬉しい要素かもしれない。

そういえば、このゲームのランエボは動きが変?でフルブレーキングすると斜めにズレやすいです。車体を完全にまっすぐにしないと勝手に斜めに突っ込んでいきます。なんで??


TOYOTA MARK X(GRX133)フルチューン


MITSUBISHI LANCER EVOLUTION(CZ4A)フルチューン


MAZDA RX-7(FD3S)フルチューン

検索用にフルチューン後の主要パラメータを書いておきます。ちなみにスピード指標はギア比を最高速重視にすると高い数値になるので、参考程度です。

車種最高出力最大トルクスピード指標重量
MARK X 350RDS(GRX133) '16 456PS/6,400rpm57kg/4,000rpm409.331,592kg
LANCER EVOLUTION FINAL EDITION(CZ4A) '15463PS/6,000rpm66kg/3,600rpm405.671,484kg
RX-7 Type RZ(FD3S) '00 418PS/6,800rpm48kg/4,000rpm407.811,224kg

あとはスープラ、インプレッサのどれか、最初期にお世話になったスイスポをフルチューンする予定です。その後も遊ぶかどうかは気分次第です。だいぶ飽きてきました。

アーリーアクセスの先に期待する要素

アーリーアクセス版を脱する際に追加してほしい要素は2つです。1つ目は新しい車の追加。今は10〜20年前の車がほとんどで中古車市を見ている気分です。2つ目はコース追加。首都高を名乗るならC2や外環もほしくないですか?コース追加はダウンロードコンテンツでも買います。あと個人的には昼や夕方の景色が欲しいですが、ゲームのコンセプトに反するかなあ。

一方でライバルチームや絶対勝てない系ボスのような、安易な追加要素をしてお終いならもう二度と遊ばないでしょう。

編集者:すずき(2025/04/12 23:56)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2025年4月11日 >>> 2025年3月29日
link もっと後

管理用メニュー

link 記事を新規作成

<2025>
<<<04>>>
--12345
6789101112
13141516171819
20212223242526
27282930---

最近のコメント5件

  • link 25年2月19日
    katanaさん (03/21 05:30)
    「katana」
  • link 25年1月23日
    katanaさん (03/20 18:50)
    「katana」
  • link 24年12月9日
    すずきさん (03/14 00:42)
    「Thanks for your comm...」
  • link 24年12月9日
    hyfanさん (03/13 07:21)
    「Hello from Santa Cla...」
  • link 25年2月10日
    すずきさん (02/13 02:03)
    「解読しました。なるほど、exitの引数が...」

最近の記事20件

  • link 25年4月11日
    すずき (04/16 01:01)
    「[udevルールのデバッグ例] 目次: Linux最後にudevルールのデバッグ例も書いておきましょう。/dev/ttyS0の...」
  • link 23年4月10日
    すずき (04/16 00:59)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 25年4月10日
    すずき (04/16 00:46)
    「[udevルールのテスト方法] 目次: Linux何かudevの設定ルールを書いたときどうやってテストしたら良いでしょうか?u...」
  • link 25年4月7日
    すずき (04/16 00:14)
    「[udevルールのマイナーな方] 目次: Linux最近udevを少しいじっていたので忘れないうちにメモします。Debianや...」
  • link 25年4月4日
    すずき (04/15 22:48)
    「[xrdpに接続しても画面がなかなか表示されない] 目次: Linuxネットワークが不安定な環境でLinux PCのxrdpサ...」
  • link 25年3月24日
    すずき (04/12 23:57)
    「[首都高バトルSteam版、フルチューン後の姿 - その1] 目次: ゲーム今の首都高バトル(Steam版)はWonderer...」
  • link 25年3月31日
    すずき (04/12 23:56)
    「[首都高バトルSteam版、フルチューン後の姿 - その2] 目次: ゲーム首都高バトル(Steam版)高ランクの車をひたすら...」
  • link 25年3月22日
    すずき (04/12 00:15)
    「[首都高バトルSteam版、伝説のチューナー] 目次: ゲーム首都高バトルは、PAに寄ると「伝説のチューナー」と呼ばれるキャラ...」
  • link 21年12月28日
    すずき (04/12 00:15)
    「[ゲーム - まとめリンク] 目次: ゲーム一覧が欲しくなったので作りました。Wizardry(囚われし亡霊の街)敵が強すぎる...」
  • link 25年3月7日
    すずき (03/15 18:16)
    「[wchanとptrace_may_access()] 目次: Linux以前、LinuxのI/O統計情報が読めないプロセス(...」
  • link 25年3月3日
    すずき (03/15 00:32)
    「[健康保険料率] 給与明細を見ていて、なんか健康保険料がやたら高くないか……?と気になりました。要...」
  • link 22年11月14日
    すずき (03/14 23:35)
    「[電池 - まとめリンク] 目次: 電池ニッケル水素電池(Ni-MH)やリチウムイオン電池などの二次電池。ニッケル水素電池の使...」
  • link 25年3月14日
    すずき (03/14 23:34)
    「[ナトリウムイオン電池] 目次: 電池エレコムからナトリウムイオン電池を使用したモバイルバッテリーが発売されていたので予約しま...」
  • link 25年3月11日
    すずき (03/12 21:15)
    「[首都高バトルSteam版、大体クリア] 目次: ゲームやっと首都高バトル(Steam版)のWondererを全員倒し、ミスタ...」
  • link 25年3月1日
    すずき (03/12 00:21)
    「[レガシィの半年点検(2025)] 目次: 車先週、ディーラーに半年点検に持っていったら毎度おなじみのバッテリーがイカレていて...」
  • link 23年5月15日
    すずき (03/12 00:18)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替えるとしたら?FTO...」
  • link 25年3月10日
    すずき (03/12 00:06)
    「[誕生日] 42歳になりました。昨年の日記(2024年3月10日の日記参照)を見ると、リモートワークの話をしていました。最近は...」
  • link 25年2月19日
    すずき (03/01 15:49)
    「[LinuxのI/O統計情報が読めないプロセスの謎を追う] 目次: Linux前回はsystemd --userの/proc/...」
  • link 25年2月18日
    すずき (02/25 01:12)
    「[LinuxのI/O統計情報が読めないプロセスが居る] 目次: LinuxLinuxのI/O統計情報(/proc/[pid]/...」
  • link 23年4月28日
    すずき (02/23 00:31)
    「[Linuxの/dev/zeroの実装] 目次: LinuxTwitterで/dev/zeroの話をしている人が居て、そういえ...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 04/16 01:01