ブログを作る※無料・簡単アフィリ    ブログトップ | 楽天市場
031465 ランダム
zaurus de usb.(Linux でリムーバ… (読書・コミック)楽天ブログ 【ケータイで見る】 【ログイン】
優樹瞳夢の小説連載部屋
ホーム 日記 プロフィール オークション 掲示板 ブックマーク お買い物一覧

PR

カレンダー

2009年8月
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<一覧へ今月次の月>

キーワードサーチ

▼キーワード検索
楽天ブログ内
このブログ内
ウェブサイト

▼タグ検索(楽天ブログ内)
日記 フォト 動画

カテゴリ

バックナンバー

モバイル

>>ケータイに
このブログの
URLを送信!

 

うさぎミステリ

<< 前へ次へ >>一覧コメントを書く

2007年01月25日 XML このブログを購読する

zaurus de usb.(Linux でリムーバブルメディアを使う方法)
[ コンピュータ ]    

21世紀末の地球で飛空大陸が墜落の危機!
アキラは犯罪者の手をかいくぐり、そして墜落を阻止できるか!?
壮絶エアパニック小説《REVERSE PLANET》配信中!


 ボクのPDA Linux Zaurus SL-C1000 ですが、固有名詞がありません。
 以前なんかペタリンコちゃんとかそういう系統の名前をテケトーブッコイタ気がするんですが……。

 そういや、前回の T10 接続のときもそうだったけど、詳しいやり方をここに書いてなかったナー。
 じゃあ、今後 Linux を勉強したい人の役に立つと信じて書こう。

Linux でリムーバブルメディアやHDDを使う方法
 とりあえずOSは対応しているものとし、かつ標準ドライバで間に合うような独自的でない商品を使うと仮定。
 USB機器を本体に指したところから。
 なお zaurus の場合、接続にはUSBホストケーブルというものが必要です。
 こいつ。形の似たような別のは使えません。配線の関係でこいつじゃなきゃ駄目。

 認識作業は全てスーパーユーザーモードで行います。
 まずはコマンドプロンプトを起動。
 SL系 zaurus の場合は標準で『ターミナル』という名前のプログラムが入っていますから、それを使います。
 ほとんどの人が初期状態ではスーパーユーザーモードになっていないと思うので、下記のコマンドを入力。
/home/zaurus> su -
 パスワードを訊かれた場合、root のパスワードを過去に設定しているはずなので、それを入力。
 zaurus の場合、『シークレット設定』で番号を設定していると思うので、それを使います。

 使いたい機器がハードウェア上で認識されてるかどうかは、下記のコマンドで確認できます。
# fdisk -l
Disk /dev/sda: 1024MB, 1073750000 bytes
64 heads, 32 sectors/track, 992 cylinders
Units = cylinders of 1024 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 992 732441 6 FAT16
 それっぽい機器がこの欄にない場合、認識に失敗しています。
 これを見ると、デバイス名が "/dev/sda1" で、フォーマット形式は "FAT16" であることが分かります。

 次にマウントポイントを作成。
 ここではディレクトリ /mnt 配下に新たに /usbstorage というディレクトリを掘ります。
 ホントはどこでもいいんですけどね。
# cd /mnt
# mkdir usbstorage
 この状態で下記のコマンドを。
# mount /dev/sda1 /mnt/usbstorage
 このとき、第1引数は fdisk の Device 欄に書かれたもの。第2引数は上記で作成したマウントポイントへの絶対パスになります。

 特にエラーメッセージが出なければマウント成功。
 マウントポイントをルートとし、デバイスにアクセスできるはずです。
 HDDやドライブ類も基本的に全てこれでOKのハズ。

 この作業のことを「マウント作業」といい、Linux でメディアを使う場合はたいがい必要です。
 ただし、俺の手持ちのSDカードリーダーの場合、メディアを挿してない状態ではマウントできないみたいでした。

 このときもし日本語ファイル名を認識できなければ、下記のコマンドをトライできます。
# mount -o iocharset=utf8 /dev/sda1 /mnt/usbstorage
 ところで、zaurus に iRiver T10 を接続する場合、上述の方法ではマウントできません。
 無理やりマウントするとマシンがハングアップします。

 なぜなら、fdisk の出力結果が下記のような状況になってるから。
# fdisk -l
Disk /dev/sda: 256MB, 268438000 bytes
64 heads, 32 sectors/track, 248 cylinders
Units = cylinders of 512 * 256 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sda1 1 876876 97686876 Unknown
(以下略)
 これは2000年前後に販売されたサードパーティ製品の、ウィンドウズ以外のOSに接続しない前提の機器によく見られる現象です。
 パーティションテーブルに不正な値がバリバリ入ってて、巧く認識できないのです。
 このような場合、下記のコマンドにトライできます。
# mount -t vfat -o iocharset=utf8 /dev/sda /mnt/usbstorage
 先ほどの "/dev/sda1" という部分の数字を取って "/dev/sda" に変えたものです。
 デバイス名の最後の数字は「パーティション番号」といって、メディアがパーティション分割されている場合にその番号を指定するものです。
 ですが T10 はそもそもパーティション情報が不正なので、メディア全体を認識するために数字を省略します。
 ただし、パーティション情報が正しいメディアの場合、"/dev/sda1" という指定の仕方をしないとエラーではじかれるようです。

 また、フォーマット形式が "Unknown" であるため、実際には "FAT" 形式であるということを指定するために -t vfat オプションを付加します。
(NTFS 形式を除く全ての FAT フォーマットメディアは、形式に関わらず全て -t vfat で認識できます)

 これで各種メディアに読み書きできるようになりました。
 ls コマンドやエクスプローラーなどで確認してみるといいと思います。

 さて、増設ドライブなどの場合は、/etc/init.d 配下に自動マウント用のスクリプトを作っておくことで、起動時に自動認識できるようになります。
 ですが特にUSBなどのホットプラグ対応機器の場合、OS稼働中に抜き差しが可能ですので、その際に自動マウントさせられるようになっています。

 USBの制御機構が hotplug の場合、/etc/hotplug/usb/hogehoge というシェルスクリプトが自動的に走る仕組みになっています。(hogehoge の部分は機器によって色々)
 zaurus でUSBメモリを認識させたい場合、/etc/hotplug/usb/usb-storage というファイルを作って、この中にシェルを組んでおけばいいのです。
mount -t vfat -o iocharset=utf8 /dev/sda1 /mnt/usbstorage
if [ $? = 0 ]; then
ln -s /etc/hotplug/usb/usb-storage.off $REMOVER
fi
 2行目以降の if 文はリムーバーといって、USBが抜かれたときに自動実行されるプログラムを定義しています。
 mount が成功したときにだけ、ln コマンドでリムーバースクリプトへのパスを張っています。
 usb-storage シェルの実行時には、それが抜かれたときに動作すべきスクリプト名が $REMOVER という変数にフルパスで入っています。
 ここでは、"/etc/hotplug/usb/usb-storage.off" という名前のスクリプトへのシンボリックリンクを張って、抜かれたときそれが実行されるようにしています。
 というわけで /etc/hotplug/usb/usb-storage.off という名前で下記プログラムを作っておきます。
umount /mnt/usbstorage
rmmod usb-storage
 これら2つのスクリプトのパーミッションを 755 に変更し、所有者も chown コマンドなどで root/root に変更しておきます。

 これで、USB機器が挿されたときに自動マウントするようになりました。
 ただし zaurus の場合、単純にこの状態で T10 を挿すとマシンがハングアップします。
 デバイス名が "/dev/sda1" のままになっているため、このままではフォーマット形式 "Unknown" のデバイスは認識できないからです。
 かといってこれを強引に "/dev/sda" に変えると、今度は普通のUSBメモリ類が認識できなくなります。

 そこで俺の場合、その辺を自動認識するようなスクリプトを書いています。
 具体的な内容は俺様専用で他所では動かない可能性の方が高いので割愛しますが、
  1. fdisk -l /dev/sda | grep -i fat > /tmp/check.result を実行
  2. FAT 形式の機器があると /tmp/check.result はファイルサイズ≠0になるので、その場合は通常のマウントを行う
  3. マウント成功の場合はリムーバーを作ってスクリプト終了
  4. マウント失敗の場合、lsusb | grep "ID xxxx:xxxx " を実行
  5. lsusb コマンドによって自分がマウントしたい機器かどうか判別できるので、マッチする場合はそれ専用のマウントコマンドを実行
  6. マウント成功の場合はリムーバーを作る
 という流れになります。



最終更新日  2007年01月25日 12時37分08秒
コメント(0) | トラックバック(0) | コメントを書く


■コメント

お名前
タイトル
メッセージ
・メッセージ本文は全角で800文字までです。
・書き込みに際しては楽天ブログ規約の禁止事項や免責事項をご確認ください
・ページの設定によっては、プルダウンで「顔選択」を行っても、アイコンが表示されません。ご了承ください。


<< 前へ次へ >>一覧コメントを書く一番上に戻る


Powered By 楽天ブログは国内最大級の無料ブログサービスです。楽天・Infoseekと連動した豊富なコンテンツや簡単アフィリエイト機能、フォトアルバムも使えます。デザインも豊富・簡単カスタマイズが可能!

Copyright (c) 1997-2009 Rakuten, Inc. All Rights Reserved.