lab/技術情報

udev@kitchen01

kitchen01のサウンドデバイスのパスを固定するための作業です。kitchen01では/dev/dspと/dev/dsp1が入れ替わることがあるので、このコンフリクトを解消する方向で作業手順を述べます。

目次

環境

  • machine: dell precision
  • OS: linux, fedora6
  • device: EMU10K1_Audigy(pciサウンドカード),UA-1000(USBサウンドカード??)

作業

udev

  1. udevinfo -nでデバイスのパスを取得。
    [kitchen@kitchen01]% udevinfo -q path -n /dev/dsp
    [kitchen@kitchen01]% udevinfo -q path -n /dev/dsp1
    このコマンドで/class/sound/dspとかいうデバイスツリー的なパスが返ってくる。
  2. udevindo -aでデバイスの詳細を取得。
    [kitchen@kitchen01]%  udevinfo -a -p /class/sound/dsp
    以下のような出力を得る。
     looking at device '/class/sound/dsp':
       KERNEL=="dsp"
       SUBSYSTEM=="sound"
       SYSFS{dev}=="14:3"
    
     looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:04:00.0':
       ID=="0000:04:00.0"
       BUS=="pci"
       DRIVER=="EMU10K1_Audigy"
       SYSFS{msi_bus}==""
       SYSFS{broken_parity_status}=="0"
       SYSFS{enable}=="1"
    つづいて次のコマンド:
    [kitchen@kitchen01]%  udevinfo -a -p /class/sound/dsp1
    以下のような出力を得る
     looking at device '/class/sound/dsp1':
       KERNEL=="dsp1"
       SUBSYSTEM=="sound"
       SYSFS{dev}=="14:19"
    
     looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
       ID=="5-7:1.0"
       BUS=="usb"
       DRIVER=="snd-usb-audio"
       SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
       SYSFS{bInterfaceProtocol}=="01"
       SYSFS{bInterfaceSubClass}=="01"
    この出力の中でデバイスに固有っぽいものを探す。ここではBUSとDRIVERを採用。IDとSYSFE{dev}は怪しいので脚下。あとはSYSFS{vendor}などを使えばいいんではないかと。
  3. rulesファイルを書く
    [root@kitchen01]# ls /etc/udev/rules.d
    05-udev-early.rules  51-hotplug.rules  60-pam_usb.rules  90-alsa.rules   95-pam-console.rules  edirol.rules
    40-multipath.rules   60-libsane.rules  60-pcmcia.rules   90-hal.rules    99-fuse.rules
    50-udev.rules        60-net.rules      60-wacom.rules    91-local.rules  bluetooth.rules
    こんな出力。ファイル名の番号がかぶらないように、適当なファイル名:52-local.rulesとか、でファイルをつくる。
    # #/dev/soundUSB as usb audio
    KERNEL=="dsp*", BUS=="usb", DRIVER=="snd-usb-audio", SYMLINK="soundUSB"
    さっきudevinfoで見た、KERNEL=="dsp*", BUS=="usb", DRIVER=="snd-usb-audio"の属性をもったデバイスにたいして、シンボリックリンク"soundUSB"を作る、という意味。
  4. udevtriggerでudevデーモンを再起動(?)
    [root@kitchen01]# udevtrigger
  5. udevtestでudevを試す
    [root@kitchen01]# udevtest /class/sound/dsp
    [root@kitchen01]# udevtest /class/sound/dsp1
    これで/class/sound/dspのほうの出力のみに
    udev_rules_get_name: add symlink 'soundUSB'
    なことが書かれていればok.
  6. 確認
    [user@kitchen01]% ll /dev/sound* /dev/dsp*
    crw------- 1 root root 14,  3  6月 21 23:37 /dev/dsp
    crw------- 1 root root 14, 19  6月 21 23:37 /dev/dsp1
    lrwxrwxrwx 1 root root      4  6月 21 23:37 /dev/soundUSB -> dsp0

permission

せっかくなので起動時にデバイスのパーミッションも設定してしまう作業。 大変参考になるサイトの(2)によると

/etc/security/console.perms.d/XX-*****.perms 

なファイルで起動時のデバイスのパーミッションを変更できるとのこと。 50-default.permsを51-local.permsにコピーし、次のように設定:

# device classes -- these are shell-style globs
<sound>=/dev/dsp*

# permission definitions
<console>  0666 <sound>      0666 root

これでokですた♪

大変参考になるサイトw

  1. http://www.linuxquestions.org/questions/linux-software-2/libusb-usb-driver-with-non-root-credentials-548733/

ログ

↓うまくいっていない PCI <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 17:37:43 JST
crw------- 1 root root 14,  3  6月 21 17:35 /dev/dsp
crw------- 1 root root 14, 19  6月 21 17:35 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 17:35 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 17:35 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p  /class/sound/dsp|head -n 20|tail -n 8
  looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:04:00.0':
    ID=="0000:04:00.0"
    BUS=="pci"
    DRIVER=="EMU10K1_Audigy"
    SYSFS{msi_bus}==""
    SYSFS{broken_parity_status}=="0"
    SYSFS{enable}=="1"
    SYSFS{modalias}=="pci:v00001102d00000004sv00001102sd00002002bc04sc01i00"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 rules.d]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 17:51:46 JST
crw------- 1 root root 14,  3  6月 21 17:43 /dev/dsp
crw------- 1 root root 14, 19  6月 21 17:43 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 17:43 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 17:43 /dev/soundUSB -> dsp
[root@KITCHEN01 rules.d]# udevinfo -a -p  /class/sound/dsp|head -n 20|tail -n 8
  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
    ID=="5-7:1.0"
    BUS=="usb"
    DRIVER=="snd-usb-audio"
    SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
    SYSFS{bInterfaceProtocol}=="01"
    SYSFS{bInterfaceSubClass}=="01"
    SYSFS{bInterfaceClass}=="ff"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 18:02:51 JST
crw------- 1 root root 14,  3  6月 21 17:52 /dev/dsp
crw------- 1 root root 14, 19  6月 21 17:52 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 17:52 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 17:52 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p  /class/sound/dsp|head -n 20|tail -n 8
  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
    ID=="5-7:1.0"
    BUS=="usb"
    DRIVER=="snd-usb-audio"
    SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
    SYSFS{bInterfaceProtocol}=="01"
    SYSFS{bInterfaceSubClass}=="01"
    SYSFS{bInterfaceClass}=="ff"

↓うまくいっていない PCI <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 18:05:48 JST
crw------- 1 root root 14,  3  6月 21 18:03 /dev/dsp
crw------- 1 root root 14, 19  6月 21 18:03 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 18:03 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 18:03 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p  /class/sound/dsp|head -n 20|tail -n 8
  looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:04:00.0':
    ID=="0000:04:00.0"
    BUS=="pci"
    DRIVER=="EMU10K1_Audigy"
    SYSFS{msi_bus}==""
    SYSFS{broken_parity_status}=="0"
    SYSFS{enable}=="1"
    SYSFS{modalias}=="pci:v00001102d00000004sv00001102sd00002002bc04sc01i00"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 19:40:26 JST
crw------- 1 root root 14,  3  6月 21 18:22 /dev/dsp
crw------- 1 root root 14, 19  6月 21 18:22 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 18:22 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 18:22 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n  11 
  looking at device '/class/sound/dsp':
    KERNEL=="dsp"
    SUBSYSTEM=="sound"
    SYSFS{dev}=="14:3"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
    ID=="5-7:1.0"
    BUS=="usb"
    DRIVER=="snd-usb-audio"
    SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
    SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 19:43:08 JST
crw------- 1 root root 14,  3  6月 21 19:41 /dev/dsp
crw------- 1 root root 14, 19  6月 21 19:41 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 19:41 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 19:41 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
  looking at device '/class/sound/dsp':
    KERNEL=="dsp"
    SUBSYSTEM=="sound"
    SYSFS{dev}=="14:3"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
    ID=="5-7:1.0"
    BUS=="usb"
    DRIVER=="snd-usb-audio"
    SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
    SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 19:44:58 JST
crw------- 1 root root 14,  3  6月 21 19:44 /dev/dsp
crw------- 1 root root 14, 19  6月 21 19:44 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 19:44 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 19:44 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
  looking at device '/class/sound/dsp':
    KERNEL=="dsp"
    SUBSYSTEM=="sound"
    SYSFS{dev}=="14:3"

  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
    ID=="5-7:1.0"
    BUS=="usb"
    DRIVER=="snd-usb-audio"
    SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
    SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 19:46:41 JST
crw------- 1 root root 14,  3  6月 21 19:45 /dev/dsp
crw------- 1 root root 14, 19  6月 21 19:45 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 19:45 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 19:45 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n  11
 looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 19:46:41 JST
crw------- 1 root root 14,  3  6月 21 19:45 /dev/dsp
crw------- 1 root root 14, 19  6月 21 19:45 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 19:45 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 19:45 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
 looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

↓うまくいっていない PCI <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 20:49:45 JST
crw------- 1 root root 14,  3  6月 21 19:47 /dev/dsp
crw------- 1 root root 14, 19  6月 21 19:47 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 19:47 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 19:47 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
 looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"

 looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:04:00.0':
   ID=="0000:04:00.0"
   BUS=="pci"
   DRIVER=="EMU10K1_Audigy"
   SYSFS{msi_bus}==""
   SYSFS{broken_parity_status}=="0"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 21:21:54 JST
crw------- 1 root root 14,  3  6月 21 21:18 /dev/dsp
crw------- 1 root root 14, 19  6月 21 21:18 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 21:18 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 21:18 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
 looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"
 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

↓うまくいっていない PCI <=> soundUSB。ここでパーミッションに関する設定を加えたので/dev/dsp*が666になっている。

[root@KITCHEN01 ~]# date; ll /dev/so* /dev/dsp*
2008年  6月 21日 土曜日 21:41:23 JST
crw-rw-rw- 1 root root 14,  3  6月 21 21:40 /dev/dsp
crw-rw-rw- 1 root root 14, 19  6月 21 21:40 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 21:40 /dev/soundPCI -> dsp1
lrwxrwxrwx 1 root root      3  6月 21 21:40 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
 looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"
 looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:04:00.0':
   ID=="0000:04:00.0"
   BUS=="pci"
   DRIVER=="EMU10K1_Audigy"
   SYSFS{msi_bus}==""
   SYSFS{broken_parity_status}=="0"

↓うまくいっていない そもそもSYMLINKが作られていない。このへんまで、設定ファイルをいろいろいじって迷走していた。

[root@KITCHEN01 ~]# date; ll  /dev/sou* /dev/dsp*
2008年  6月 21日 土曜日 23:13:34 JST
ls: /dev/sou*: そのようなファイルやディレクトリはありません
crw-rw-rw- 1 root root 14,  3  6月 21 23:12 /dev/dsp
crw-rw-rw- 1 root root 14, 19  6月 21 23:12 /dev/dsp1
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
  looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"
 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB。ここからはばっちり。

[root@KITCHEN01 ~]# date; ll  /dev/sou* /dev/dsp*
2008年  6月 21日 土曜日 23:24:33 JST
crw-rw-rw- 1 root root 14,  3  6月 21 23:21 /dev/dsp
crw-rw-rw- 1 root root 14, 19  6月 21 23:21 /dev/dsp1
lrwxrwxrwx 1 root root      3  6月 21 23:21 /dev/soundUSB -> dsp
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
  looking at device '/class/sound/dsp':
    KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"
 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll  /dev/sou* /dev/dsp*;  udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
2008年  6月 21日 土曜日 23:27:10 JST
crw-rw-rw- 1 root root 14,  3  6月 21 23:26 /dev/dsp
crw-rw-rw- 1 root root 14, 19  6月 21 23:26 /dev/dsp1
lrwxrwxrwx 1 root root      3  6月 21 23:26 /dev/soundUSB -> dsp
  looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"
 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll  /dev/sou* /dev/dsp*;  udevinfo -a -p `udevinfo -q path -n /dev/dsp`|head -n 18|tail -n 11
2008年  6月 21日 土曜日 23:28:30 JST
crw-rw-rw- 1 root root 14,  3  6月 21 23:28 /dev/dsp
crw-rw-rw- 1 root root 14, 19  6月 21 23:28 /dev/dsp1
lrwxrwxrwx 1 root root      3  6月 21 23:28 /dev/soundUSB -> dsp
 looking at device '/class/sound/dsp':
   KERNEL=="dsp"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:3"
 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

↓うまくいっている USB <=> soundUSB

[root@KITCHEN01 ~]# date; ll  /dev/sou* /dev/dsp*
2008年  6月 21日 土曜日 23:49:28 JST
crw-rw-rw- 1 root root 14,  3  6月 21 23:37 /dev/dsp
crw-rw-rw- 1 root root 14, 19  6月 21 23:37 /dev/dsp1
lrwxrwxrwx 1 root root      4  6月 21 23:37 /dev/soundUSB -> dsp1
[root@KITCHEN01 ~]# udevinfo -a -p `udevinfo -q path -n /dev/dsp1`|head -n 18|tail -n 11
 looking at device '/class/sound/dsp1':
   KERNEL=="dsp1"
   SUBSYSTEM=="sound"
   SYSFS{dev}=="14:19"
 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0':
   ID=="5-7:1.0"
   BUS=="usb"
   DRIVER=="snd-usb-audio"
   SYSFS{modalias}=="usb:v0582p0044d0107dcFFdsc00dpFFicFFisc01ip01"
   SYSFS{bInterfaceProtocol}=="01"

検索キー

linux fedora core 6 udev udevinfo udevtest udevtrigger デバイス パスが変わる


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-06-22 (日) 01:09:00 (5808d)