linux (FC4) と USBメモリ

<< 戻る   トップ >>

たしかFC4になってからだと思うが、USBメモリの日本語ファイル名が表示されなくなった。原因はカーネルオプションで vfat のデフォルトコードページ指定が始まったことによるらしい。いろいろと不便なので、カーネルの再構築以外になんとか手がないものか、と思ったのだがなさそうだ。あとはコードページを指定して再マウントするシェルでも作るか、だがするか。その後次のように解決した。

  1. /etc/fstab をよく見ると冒頭に # This file is edited by fstab-sync - see 'man fstab-sync' for details と書かれていたので、素直に fstab-sync のマニュアルを読んだ。
  2. /usr/share/hal/fdi/policy/10osbender/10-storage-policy.fdi がデフォルト動作だから読め、と書いてあった (ように思えたので) 読んでみると、XML であったがなんとなく読めた。
  3. storage.bus が usb かつ volume.fstype が vfat であるときに、storage.policy.mount_option.codepage を 932 に、storage.policy.mout_option.iocharset を utf8 にすればよいのだろうと思った。そこで、/etc/hal/fdi/policy/ に /usr/share/hal/fdi/policy/10osbender をフォルダごとコピーして 10-storage-policy.fdi をいじり始めた。めちゃくちゃである。
  4. <merge key="storage.policy.mount_option.codepage" type="string">932</merge> や、同様の手口で iocharset も設定してみた。うまくいかないので、volume.policy.mount_option... なんかも試した。usb かつ vfat で変更する、条件式を書くところまではうまくいったのだが、肝心のオプションがつかない。
  5. よもや、と思って 'match key="volume' というキーワードでぐぐったら、http://bbs.fedora.jp/read.php?FID=8&TID=1717 Fedora JP 掲示板に正解が載っていた。「鵺」さんありがとう。volume .policy.mount_option.iocharset=utf8 を bool で true にするとは。くやしかったので codepage も設定した。

/etc/hal/policy/ 下には、追加すべき設定のみのファイルを置けばよい。前記の 10vendorをディレクトリごと持ってくるなんてのは暴挙。「鵺」さんのコードに codepage も付け加えたのが次のファイル。

 /etc/hal/policy/vfat_jpn.fdi
<deviceinfo version="0.2">
<device>
 <match key="block.is_volume" bool="true">
 <match key="volume.fstype" string="vfat">
 <merge key="volume.policy.mount_option.iocharset=utf8" type="bool">
    true
 </merge>
 <merge key="volume.policy.mount_option.codepage=932" type="bool">
    true
 </merge>
 </match>
 </match>
 </device>
</deviceinfo>

暴挙ながらも惜しいところまで行ったという気もする。だけど独力じゃ正解までたどりつけなかったな。


作成: 2005-10-07 15:27:52.0更新: 2006-07-30 14:28:12.0
http://museo-anonimo.jp/nanban/?id=23,http://museo-anonimo.jp/nanban/tr/23