ゲーム用システムとしては、他に何もメディアが存在しない場合はCD上のシナリオを実行し、USBメモリなど外付けドライブが接続されている時はそこにセーブデータを読み書きしたり、あるいは新たなシナリオを読み込み実行させたい。
そのためには、外付けドライブが接続されていることを認識し、それを自動的にマウントする仕組みが必要となる。
オープンソースのデスクトップ環境GnomeやKDEであれば、オートマウントシステムを含んでいるのでそういったことは容易だが、それら環境に含まれるデーモンがない小さなシステムの場合は、自分で何とかする必要がある。今回はまさにその自分で何とかする場面なのである。
最近はデバイス管理システムudevのおかげで、/dev
の下のデバイスについては動的に作られるようになった。USBにストレージを接続すると自動的に現れるのでその点は問題がない。
どこにドライブがつながっているかという情報は、/proc/diskstats
にて得られる。ここにsdc以降何があるかを見て判別することになる。ちなみに、PS3の20GBモデルではsdc以降がUSB接続ストレージになるが、60GBモデルの場合sdcからsdeがメモリカードスロットなので、USB接続ストレージはsdf以降となる。
ドライブはこのようにして分かるが、どのパーティションがマウントできるかは分からない。そのため、片っ端からマウントしていって成功したところが使えるドライブであると判断するしかないだろう。
これらの作業をまとめることで、起動時に動的マウントをしてファイルやディレクトリを探すスクリプトを作成することになる。