コグノスケ


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

link もっと前
2025年4月13日 >>> 2025年3月31日
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/17 01:30)

コメント一覧

  • コメントはありません。
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月13日 >>> 2025年3月31日
link もっと後

管理用メニュー

link 記事を新規作成

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

最近のコメント5件

  • link 20年8月16日
    すずきさん (07/01 01:11)
    「そうですね。残念ながら私には向いてなかっ...」
  • link 20年8月16日
    ざんねんさん (06/29 17:12)
    「ゲーム内容を理解していない人の残念な雑記」
  • link 24年6月17日
    すずきさん (06/05 23:32)
    「Thnaks for your info...」
  • link 24年6月17日
    Bobさん (06/04 09:25)
    「BindIPv6Only=no does...」
  • link 18年8月12日
    すずきさん (05/29 16:57)
    「コメントありがとうございます。\n\nこ...」

最近の記事20件

  • link 23年5月15日
    すずき (07/01 02:15)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替えるとしたら?FTO...」
  • link 13年3月25日
    すずき (07/01 02:15)
    「[免許の更新と車のレッカー] 目次: 車前回の免許更新は免許センターまで行ったのですが、遠いわ、混んでいるわ、で辟易したので、...」
  • link 13年3月27日
    すずき (07/01 02:14)
    「[車の修理が終わった] 目次: 車先日レガシィを運び込んだ(2013年3月25日の日記参照)ディーラーから電話があり「バッテリ...」
  • link 22年7月18日
    すずき (07/01 02:03)
    「[GNU tarのアーカイブ圧縮方式の判定] 目次: LinuxGNU tarのxオプションは圧縮されたtarでも正しく展開し...」
  • link 23年4月10日
    すずき (07/01 02:03)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 21年12月28日
    すずき (07/01 02:01)
    「[ゲーム - まとめリンク] 目次: ゲーム一覧が欲しくなったので作りました。PlayStation Vitaのアプリ達が寿命...」
  • link 22年8月6日
    すずき (07/01 02:00)
    「[ゲーム用PCを作ろう] 目次: ゲームずっとグラフィック性能のしょぼいノートPCでゲームをしていましたが、描画が遅すぎて「コ...」
  • link 15年9月20日
    すずき (07/01 01:53)
    「[PlayStation Vitaのアプリ達が寿命を迎えている] 目次: ゲームPS Vitaのfacebookアプリのサポー...」
  • link 21年1月30日
    すずき (07/01 01:48)
    「[PlayStation Vitaのアプリがめちゃ減っている] 目次: ゲーム久しぶりにPlayStation Vitaを起動...」
  • link 13年3月13日
    すずき (07/01 01:33)
    「[ffmpegビルドふたたび] 目次: Linux以前(2009年5月22日の日記参照)ビルドしたffmpegがいい加減古くな...」
  • link 10年9月5日
    すずき (07/01 01:24)
    「[レガシィ納車と大阪府内ドライブ] 目次: 車車(スバル レガシィB4 2.0 GT、AT車)も納車されたことだし、下道(R1...」
  • link 24年8月25日
    すずき (06/26 09:01)
    「[レガシィの7回目の車検完了&タイヤ交換(FALKEN AZENIS)] 目次: 車ディーラーまで車検の車を取りに行きました。...」
  • link 11年5月1日
    すずき (06/26 08:58)
    「[パンクしたのでタイヤ交換(DNA ECOS)] 目次: 車奥さん、友人とともに、ジャパン牧野店へ飲み物の買い出しに行きました...」
  • link 17年6月4日
    すずき (06/26 08:57)
    「[レガシィのタイヤ交換(DNA ECOS)] 目次: 車気づけば6年(2011年5月1日の日記参照)経過しており、ヒビ割れてい...」
  • link 17年6月7日
    すずき (06/26 08:53)
    「[USB 3.0を使うとワイヤレスキーボードの動作不良? - USB 3.0をざっくり調べる] 目次: PC先日(2017年6...」
  • link 17年6月5日
    すずき (06/26 08:50)
    「[USB 3.0を使うとワイヤレスキーボードの動作不良? - USB 3.0と2.5GHzの関係] 目次: PC以前(2017...」
  • link 24年7月7日
    すずき (06/26 08:50)
    「[PC - まとめリンク] 目次: PC一覧が欲しくなったので作りました。 スピーカーGX-D90故障ノートPCの内蔵サウンド...」
  • link 17年6月2日
    すずき (06/26 08:48)
    「[USB 3.0を使うとワイヤレスキーボードの動作不良?] 目次: PCサーバのワイヤレスキーボードが妙に調子悪くて不思議だっ...」
  • link 25年6月19日
    すずき (06/25 21:50)
    「[歴代据え置きハードのCPUとGPU] 目次: ゲーム最近、据え置きハードのCPUとGPUがNVIDIAとAMDに収束していま...」
  • link 25年6月18日
    すずき (06/22 23:33)
    「[Nintendo Switch 2当選] 目次: ゲームSwitch 2の抽選4回目で当選してました。わーい。今回も落選だっ...」
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 www.katsuster.net
RDFファイル RSS 1.0

最終更新: 07/01 02:15