Hatena::ブログ(Diary)

だらりな。 RSSフィード

2009-03-27

udev 0.140-1 でネットにつながらなくなり、ちょっとあせった

今日 Lenny リリース後はじめての udev アップグレードSid に来て (0.125-7 → 0.140-1)、アップグレード前に一瞬ためらったんだけど、apt-listbugs もなんにもいわないし、まあだいじょうぶなんじゃねと目をつぶって特攻したら、案の定リブート後にネットにつながらなくなって一瞬あせったのだった。

sudo ifconfig すると lo しか見えてなくて、sudo ifconfig -a すると eth3 なんてのがいた。

M/B は Abit の NF-M2 nView (Phoronix のレヴュー記事) なのだけど、以前は Firewire device (ohci1394) が eth0、PCI device (forcedeth) は eth1 だった。更新されてるのに気づいた /etc/udev/rules.d/70-persistent-net.rules をのぞいてみると、PCI device (forcedeth) が最後にもう一度設定されてて、これが eth3 だった。(ちなみに USB device (rndis_host) ってのが eth2 になってて、これは EMonster かな。いつから 70-persistent-net.rules にこんなのがあるのかわからない……。)

↓が以前からある設定 (MAC アドレスは伏せた)。

# PCI device 0x10de:0x0269 (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="xx:xx:xx:xx:xx:xx", NAME="eth1"

↓は新規に追加されたらしき設定 (同上)。

# PCI device 0x10de:0x0269 (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

/lib/udev/write_net_rules が出力する形が変わったんだろうと思うんだけど、よくわからない。けどまあ、eth3 を今までどおりの eth1 にすればいいだけだ。ついでに古い設定は全部消してしまうことにした。使ってないし。

もうひとつついでに、eth1 じゃなく eth0 にして、/etc/network/interfaces のこれまで eth1 だったところを eth0 にした。気分だけちょっとすっきりして終了。

3/31 追記: "#521521 - udev: renames network devices after upgrade - Debian Bug report logs" ってのが 3/28 に登録されてて、0.140-2 で修正された模様。

2008-04-25

EMonster の microSDHC カードをマウントする

SynCE (ActiveSync) じゃなく USB マス・ストレージ・クラスで接続

しばらく前に EMonster (S11HT) を買ったのだけど、うちにはもう Windows PC がないので ActiveSync を使って接続するってのができなくて*1、どうすればいいんだろうと探してみたら SynCE (公式サイト) というプロジェクトがあるのだった。

でも、ドキュメントを読んでみたら、一部まだ Debian パッケージになってないところがあったりするし、ちょっとめんどうそう。というところで、WM5torage というのを EMonsterインストールすれば USB マス・ストレージ・クラスで接続できちゃうというのを知って、そっちにすることにした。同期したいものがあったりするわけでなく、ただファイル転送がしたいだけなので、これで必要十分。

まず、まとめ Wiki にあるように "PC への USB 接続" で "高度なネットワーク機能を有効にする" のチェックをはずしておく。そして xda-developers というサイトのフォーラム (forum.xda-developers.com) で会員登録して、このポストにアタッチされてる WM5torage の Kaiser (EMonster の海外名のひとつ) 対応版をダウンロードし、インストール。あとは USB ケーブルでつないで、WM5torage を起動し Activate するだけ。

f:id:deadnendo:20080426001421p:image

マウントされるまでちょっと時間がかかるよって書きこみを 2ch で見た気もするのだけど、うちではふつうに数秒でマウントされた。

/etc/fstab と udev ルールを書いておく

これだけでも別にいいのだけど、どうせなんでいろいろ設定しておく。

" iPod のマウント - だらりな。" に書いたのと同じように、/etc/fstab には以下のようなラインを追加した。マウント・ポイントは、ホントは /media 以下にするのが正しいのかもしれない (wikipedia:FHS 的に)。

/dev/emonster /mnt/emonster vfat flush,noauto,nodev,noexec,rw,nosuid,user,dmask=022,fmask=133,codepage=932,iocharset=utf8 0 0

あとは udev ルール。接続後に dmesg して、/dev/sdc であることを確認。

usb 1-5: new full speed USB device using ohci_hcd and address 18
usb 1-5: configuration #1 chosen from 1 choice
scsi20 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 18
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi 20:0:0:0: Direct-Access     WM5torag S11HT            1.74 PQ: 0 ANSI: 0 CCS
sd 20:0:0:0: [sdc] 7862272 512-byte hardware sectors (4025 MB)
sd 20:0:0:0: [sdc] Write Protect is off
sd 20:0:0:0: [sdc] Mode Sense: 03 00 00 00
sd 20:0:0:0: [sdc] Assuming drive cache: write through
sd 20:0:0:0: [sdc] 7862272 512-byte hardware sectors (4025 MB)
sd 20:0:0:0: [sdc] Write Protect is off
sd 20:0:0:0: [sdc] Mode Sense: 03 00 00 00
sd 20:0:0:0: [sdc] Assuming drive cache: write through
 sdc: sdc1
sd 20:0:0:0: [sdc] Attached SCSI removable disk
sd 20:0:0:0: Attached scsi generic sg3 type 0

つぎに udevinfo --attribute-walk --path=`udevinfo --query=path --name=/dev/sdc` して、EMonster から Linux Box へ遡りながら出力されるディヴァイス情報の、最後の EMonster 情報ブロックを見る (たぶんこの見かたでいいんだと思う)。

  looking at parent device '/devices/pci0000:00/0000:00:0b.0/usb1/1-5':
    KERNELS=="1-5"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{dev}=="189:15"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{urbnum}=="884"
    ATTRS{idVendor}=="045e"
    ATTRS{idProduct}=="ffff"
    ATTRS{bcdDevice}=="0000"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="16"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Microsoft"
    ATTRS{product}=="Windows Mobile Device"
    ATTRS{serial}=="067AB718B0BAF1A0E556452EB3E73EDB5FC366F9"

iPod のときは "ATTRS{manufacturer}" と "ATTRS{product}" を使って、iPod ならなんでも〜ってルールにしたけど、今回は "ATTRS{serial}" を使って、この機器だったら〜というルールにしてみた。

/etc/udev/local.rules (/etc/udev/rules.d/x00_local.rules からシンボリック・リンクをはってある) に EMonster 用ラインを追加。

# Apple iPod
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Apple*", ATTRS{product}=="iPod*", SYMLINK+="ipod"

# HTC EMonster
SUBSYSTEMS=="usb", ATTRS{serial}=="067AB718B0BAF1A0E556452EB3E73EDB5FC366F9", SYMLINK+="emonster"

これで sudo /etc/init.d/udev reload すれば、次回から /mnt/emonster にマウントされる。

最後にスクリーンショット

設定前の EMonsterプロパティ x 2。ちなみに 4 GB の microSDHC カードがささってる。

f:id:deadnendo:20080426001420p:image

f:id:deadnendo:20080426001419p:image

設定後の EMonsterプロパティ ("Drive" タブは変わらない)。

f:id:deadnendo:20080426001418p:image

*1:もしかしたら WINE で動いたりするのかもしれないけど、WINE って使ったことないし。

2007-07-17

iPod のマウント

はじめに

来月にも 6G が出るという噂がある中、うちにある 5G (≠ 5.5G) の iPod をちゃんと使ってあげようと環境整備をしてみる。その昔 iPod Linux を入れようと思って、でもめんどうになってほったらかしにして (Rockbox は入れてみた)、それきりになってたのだった。それからパソコンも新しくなったので一からやる。ふつうに使うだけにするつもりだけど。

参考にするのは "no title"。Gentoo Linux Wiki には時々世話になる。

環境は DebianSid で、以下にパッケージのヴァージョンをリストしておく。

  • gnome-volume-manager 2.17.0-2, gnome-mount 0.6-1+b2, hal 0.5.9.1-2
  • mount 2.12r-19
  • udev 0.105-4

gnome-mount とかについて調べてみる (だけ)

ちょっとびっくりしたのは、USB ケーブルで接続するだけで自動的にマウントされ、デスクトップになんと iPodアイコン (正確には iPod ぽいアイコン) が出たこと。最近はそうだという話を読んだ記憶はあったのだけど、アイコンにはやっぱりちょっとびっくり。

f:id:deadnendo:20070717232023p:image:w205,right

マウントは gnome-volume-manager が gnome-mount を呼んでやってるみたい。アイコンのところで右クリックして "プロパティ" を見ると、"Volume" ってタブがあって右イメージ (クリックで拡大) のようになってる (ちなみに "ラベル" が "IPOD" ってなってるのは、前回 Windows で初期化したとき、たんに "iPod" って名前にしたからと思う)。

ここでマウント・オプションが見れて、"rw nosuid nodev uid=1000 fmask=0022 dmask=0022 codepage=cp937 iocharset=iso8859-1" ってなってる。GConf ツリー (gconf-editor*1 で見れるやつ) の /system/storage/defaults/vfat/ はほとんど空なんだけど、これがディフォルトのマウント・オプションみたい。その下の "Setting" ってところで "Mount Point" や "File System"、"Mount Options" を指定すると GConf ツリーの /system/storage/drives/<ヴォリュームの UDI>/ (UDI は Unique Device Identifier の略) に書きこまれ、次回以降のマウントで有効になるぽい。ちなみに "Drive" タブでも同様の設定ができて、優先順位は "Volume" の設定 > "Drive" の設定とのこと。

というわけで GNOME の流儀にしたがってやるならここで指定なのだけど、man gnome-mount して "PRIVILEGES" のところを眺めていると、/etc/fstab に指定がある場合はそちらが優先されるとあるので、昔ながらに /etc/fstab に書くことにする。こういうのはこっちのほうがわかりやすい。

/etc/fstab に書く設定 (mount のオプション)

Gentoo Linux Wiki に書いてあるのはこういうの。

/dev/ipod /mnt/ipod vfat async,nodev,nosuid,user,rw,noauto 0 0

man mount して、オプションをアルファベット順に見ていってみる。

  • async/sync/flush: FAT ファイルシステムのリムーヴァブル・メディア・ディヴァイス用オプションである flush を指定 (" flush というマウント・オプション - だらりな。" を参照)。
  • auto/noauto: いつもつながってるわけじゃないので noauto。
  • dev/nodev: よくわからない (character or block special devices って iPod にあるもんなんだろうか) けど、Gentoo Linux Wiki にしたがって nodev にする。
  • exec/noexec: 安全第一で noexec。
  • ro/rw: 書きこむので rw。
  • suid/nosuid: 安全第一で nosuid。
  • user/nouser: root でやるのはバカげてるので user。

他に、GNOME Terminal から覗いたとき見やすいよう、一応 dmask=022 と fmask=133 も指定 (ls --color だと実行可能なファイルが緑色に光るので)。あと、日本語ファイル名とかで困らないよう、一応 codepage=932 と iocharset=utf8 も指定する。

全部あわせてこんな感じ (async と rw はディフォルトでそうだけど、一応書いてみた)。

/dev/ipod /mnt/ipod vfat flush,noauto,nodev,noexec,rw,nosuid,user,dmask=022,fmask=133,codepage=932,iocharset=utf8 0 0

udev の設定

あとは udev で /dev/ipod が常に iPod を指すようにしなければならない。

Gentoo Linux Wiki には、こういう内容のファイルを /etc/udev/rules.d/ 以下に作れとある。

BUS=="usb", SYSFS{manufacturer}=="Apple*", SYSFS{product}=="iPod*", SYMLINK+="ipod"

まず、dmesg でうちの iPod が /dev/sdb であることを確認。

usb 1-6: new high speed USB device using ehci_hcd and address 7
usb 1-6: configuration #1 chosen from 2 choices
scsi9 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 7
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi 9:0:0:0: Direct-Access     Apple    iPod             1.62 PQ: 0 ANSI: 0
SCSI device sdb: 58605120 512-byte hdwr sectors (30006 MB)
sdb: Write Protect is off
sdb: Mode Sense: 68 00 00 08
sdb: assuming drive cache: write through
SCSI device sdb: 58605120 512-byte hdwr sectors (30006 MB)
sdb: Write Protect is off
sdb: Mode Sense: 68 00 00 08
sdb: assuming drive cache: write through
 sdb: sdb1 sdb2
sd 9:0:0:0: Attached scsi removable disk sdb

"404 Not Found" を参考に udevinfo --attribute-walk --path=`udevinfo --query=path --name=/dev/sdb` を実行 (man udevinfo して省略形のオプションが出なかったので、長いオプションで書いておく)。ずらずらと長い出力があるのだけど、空行でわかれてるいくつかのブロックのうち、"looking at parent device" につづく文字列が一番短く、かつ "Apple" とか "iPod" とかいう文字列が含まれるブロックが目当てのところだろうと見当をつける。

  looking at parent device '/devices/pci0000:00/0000:00:0b.1/usb1/1-6':
    KERNELS=="1-6"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{serial}=="000A27001590DA26"
    ATTRS{product}=="iPod"
    ATTRS{manufacturer}=="Apple"
    ATTRS{quirks}=="0x0"
    ATTRS{maxchild}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{devnum}=="7"
    ATTRS{speed}=="480"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bNumConfigurations}=="2"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bcdDevice}=="0002"
    ATTRS{idProduct}=="1209"
    ATTRS{idVendor}=="05ac"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{configuration}==""

まず、Gentoo Linux Wiki では BUS=="usb"* となってるけど、/etc/udev/rules.d/udev.rules を見ても "BUS==〜" なんて指定はなくて、みんな "SUBSYSTEMS==〜" ってなってるので、こっちにならう。あと、上の出力はそのまま udev のルールに使えるらしいし、"SYSFS{〜}==〜" ではなく "ATTRS{〜}==〜" って書きかたでいくことにする。こんな感じ。

# Apple iPod
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Apple*", ATTRS{product}=="iPod*", SYMLINK+="ipod"

iPod を複数もってて、それぞれ別の名前をわりあてたい場合は "ATTRS{serial}" とかを使えばいいぽい。しかし、Gentoo Linux Wiki で "Apple*" とか "iPod*" とかアスタリスクがついてるの、うちでは必要ないみたいだけど (一応つけたけど)、"Apple Inc." ってなるやつとか、iPod の世代とかをくわしく申告しちゃうやつとかがあるってことかな。

それはともかく、/etc/udev/local.rules ってのを作って、それに上の内容を書き、/etc/udev/rules.d/x00_local.rules からシンボリック・リンクをはることにした。"x00_" ってのをつけたのは、一応 /etc/udev/rules.d/udev.rules より後に読ませようと思ってのこと。

しかし、これ、/etc/udev/rules.d/udev.rules に最初から書いてあると楽なんだけどなぁ。'SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", SYMLINK+="pilot"' なんて Palm 用のは最初からあるんだから。

最後に、Gentoo Linux Wiki には udevstart で新しい設定を反映させろってあるんだけど、うちにはそんなコマンドはないようなので sudo /etc/init.d/udev reload

最後に

うまくいったぽいけど、udev のルールなんて書くのめんどうすぎるし、やっぱり gnome-mount のほうでマウント・オプション指定するほうが楽だったような気がする……。→ 2007-07-18 追記: そんなことはなかった。今はまだ全然楽じゃない。

2007-07-18 追記: flush というマウント・オプションを知ったので、"/etc/fstab に書く設定 (mount のオプション)" で、async を flush に変更した。

*1:"アプリケーション" → "システム・ツール" → "設定エディタ"

日記の検索

プロフィール

deadnendo

deadnendo

だらだらと Linux をデスクトップで使う日々の記録。Debian Sid を GNOME で使用中。

カレンダー
<< 2019/04 >>
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
ライセンス
  • クリエイティブ・コモンズ 表示-非営利-継承 3.0
いろいろ
ページビュー
266799