はじめに
2016年11月、Raspberry Pi2にUSBフラッシュメモリを接続しました。
Raspberry Pi2の、ストレージはOSをインストールしたマイクロSDカードだけです。写真や音楽などのデータを格納しようとするとストレージ領域が不足してしまいます。そこで、「San Disk USB3.0 128GB フラッシュメモリ」を接続して、使用可能なストレージを増設しました。
このUSBフラッシュメモリの大きさは、小指の先ほどの小さなサイズで大きさは19.1×15.9×8.8 mmです。小さなサイズですがメモリ容量は128GBもあります。Raspberry Pi2で使用するには十分すぎる容量です。このUSBフラッシュメモリは、USB3.0対応ですが、Raspberry Pi2はUSB2.0なのでアクセス速度は遅くなりますが接続することができます。
Raspberry Pi2に接続しても、USBコネクターにすっぽり隠れて頭の部分が見えるだけで邪魔になりません。頭の突起部分は取り外すときに持ちやすくて便利です。
USBフラッシュメモリをフォーマットする
最初にUSBフラッシュメモリのファイルシステムを初期状態にします。
ファイルシステムのフォーマットには、いろいろな種類があります。
- Linux系 : ext3、ext4、vfat、xfs
- Windows系 : FAT、NTFS、exFAT
exFAT形式は、マイクロソフト社が開発した新しいファイルシステムで大容量サポートとパフォーマンス改善を目的としたものです。Linuxでは、ドライバーをインストールすることで使用可能となります。
今回は、exFAT形式のファイルシステムを使用することにします。
ファイルシステムをフォーマットするには、Windowsパソコンを使用してドライブの上で右クリックして「フォーマット」を選択します。私のPCではN:ドライブがUSBフラッシュメモリになりました。
- ファイルシステムに「exFAT」を選択します
- ボリュームラベルは、わかりやすい名称にします。(SanDiskとしました)
- クイック フォーマットをチェックします。
「開始」をクリックします。警告メッセージに対し、ドライブを確認して「OK」します。完了のメッセージが表示されたら「OK」します。
フォーマットしたドライブがSanDisk(N:)となっていることを確認します。
Raspberry Pi2のexFAT用パッケージをインストール
Raspberry Pi2のRaspbian jessie OSで動作確認しました。
pi@pi2note:~ $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie
最初に、exFATを使用するためのパッケージをインストールします。
sudo apt-get install exfat-fuse exfat-utils
Raspberry Pi2にUSBフラッシュメモリを装着
USBフラッシュメモリを装着すると、デスクトップにマウント認証のメッセージが表示されますのでパスワードを入力します。リムーバブルメディアの挿入メッセージが表示されますので、ファイルマネージャーで開いてみます。
/media/pi/SanDiskにUSBフラッシュメモリが自動的にマウントされました。
- piは、ログインユーザー名です
- SanDiskは、USBフラッシュメモリのボリュームラベルです
コマンドラインでも確認してみます。
pi@pi2note:~ $ ls -l /media/pi 合計 128 drwx------ 1 pi pi 131072 1月 1 1970 SanDisk
デバイス名を確認してmountコマンドでUSBフラッシュメモリをマウントしなくてもすぐ使用できるのはとても便利です。
USBフラッシュメモリのブロックデバイスの情報を確認しました。
pi@pi2note:~ $ sudo blkid /dev/sda1 /dev/sda1: LABEL="SanDisk" UUID="AC57-B1B9" TYPE="exfat" PARTUUID="66955bf4-01"
- LABEL : ボリュームラベル
- UUID : デバイスの識別子 (universally unique identifier)
- TYPE : ファイルシステム
USBフラッシュメモリのボリュームラベルを付けなかった場合はどうなるかテストしてみました。
pi@pi2note:~ $ ls -l /media/pi 合計 128 drwx------ 1 pi pi 131072 1月 1 1970 AC57-B1B9
UUID名でUSBフラッシュメモリがマウントされました。ボリュームラベルを付けてフォーマットするとより直感的に使用できるわけです。
USBフラッシュメモリをリムーバブル・メディアとして一時的に装着して使用する場合は、この方式で十分です。しかし、私の用途はUSBフラッシュメモリを恒久的に使用可能なストレージとして増設することです。ログインユーザー別にマウントポイントが変化するのはあまり好ましくありません。
USBフラッシュメモリを手動でマウント
昔ながらの方法で、手動でUSBフラッシュメモリをマウントしてみます。
まず、USBフラッシュメモリは /media/pi/SanDisk にマウントされていますので解放します。
pi@pi2note:~ $ sudo umount -l /media/pi/SanDisk
/mntディレクトリにマウントポイント /usbSanDisk を作成します。
pi@pi2note:~ $ sudo mkdir /mnt/usbSanDisk pi@pi2note:~ $ sudo ls -l /mnt 合計 4 drwxr-xr-x 2 root root 4096 11月 12 10:53 usbSanDisk
「mount」コマンドで、デバイス /dev/sda1 をマウントポイント/mnt/usbSanDiskにマウントします。そして、「df -h」コマンドでマウントされていることを確認します。
pi@pi2note:~ $ sudo mount /dev/sda1 /mnt/usbSanDisk FUSE exfat 1.1.0 pi@pi2note:~ $ sudo df -h /dev/sda1 ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda1 116G 5.9M 116G 1% /mnt/usbSanDisk
無事マウントできました。しかし、この状態では再起動後にはマウントされていません。
USBフラッシュメモリを自動でマウント
起動時にマウントするには、/etc/fstab にマウント情報を記述します。
pi@pi2note:~ $ sudo cat /etc/fstab |grep /mnt /dev/sda1 /mnt/usbSanDisk exfat defaults,noatime,uid=65534,gid=65534 0 0
- 1列目 : デバイス名
- 2列目 : マウントポイント
- 3列目 : ファイルシステムタイプ
- 4列目 : マウント時のオプション
- 5列目 : 「0」・・・ダンプ不要
- 6列目 : 「0」・・・fsckチェック不要
オプションの「noatime」は、ファイルの読み込み時にアクセスタイムを記録しないようします。フラッシュメモリなので、アクセスを減らすための設定です。
オプションのuidとgidは、アクセス可能な所有者を指定します。「uid=65534」はnobody、「gid=65534」はnogroupを示し、誰でも読み書きできるようにします。
リブートして、「df -h」コマンドでマウントされていることを確認します。
pi@pi2note:~ $ sudo df -h /dev/sda1 ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda1 116G 5.9M 116G 1% /mnt/usbSanDisk
正常に自動マウントできました。
ボリュームラベルで自動的にマウント
USBのデバイスがいつも /dev/sda1 になるとは限りません。例えば、2個のUSBフラッシュメモリを接続すると /dev/sda1 と /dev/sdb1 になります。
マウントのデバイス名を /dev/sda1 ではなくボリュームラベルで指定することができます。
このようにすれば、目的のUSBフラッシュメモリがマウントされます。
pi@pi2note:~ $ sudo cat /etc/fstab |grep /mnt LABEL=SanDisk /mnt/usbSanDisk exfat defaults,noatime,uid=65534,gid=65534 0 0
リブートして、「df -h」コマンドでマウントされていることを確認します。
pi@pi2note:~ $ sudo df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda1 116G 5.9M 116G 1% /mnt/usbSanDisk /dev/sdb1 16G 3.3M 16G 1% /media/pi/E8F5-0E6E
1個目のUSBフラッシュメモリ /dev/sda1 は、/mnt/usbSanDisk にマウントされました。
2個目のUSBフラッシュメモリ /dev/sdb1 は、/media/pi/E8F5-0E6E にUUID名でマウントされました。
USBフラッシュメモリに、MyDataディレクトリを作成してその中に各種データを保存していきます。
例えば、 /MyData/Music/enka にmp3音楽を格納しました。
pi@pi2note:/mnt/usbSanDisk/MyData/Music/enka $ ls -l 合計 572288 -rwxr-xr-x 1 nobody nogroup 5423485 11月 10 19:28 101_魅せられて.mp3 -rwxr-xr-x 1 nobody nogroup 4589653 11月 10 19:28 102_瀬戸の花嫁.mp3
この音楽は、私のお気に入りの『エンカのチカラ』というCDです。演歌歌手がJ-POPを歌う企画CDで、「エンカのチカラ -GOLD 70’s-」の1曲目は「魅せられて」を石川さゆりが歌っています。
シンボリックリンクを作成
/home/pi のディレクトリにシンボリックリンク exMyData を作成して簡単に移動できるようにします。
pi@pi2note:~ $ ln -s /mnt/usbSanDisk/Mydata exMyData pi@pi2note:~ $ ls -l ex* lrwxrwxrwx 1 pi pi 22 11月 12 13:01 exMyData ->/mnt/usbSanDisk/Mydata
exMyData に移動すると、USBフラッシュメモリのデータに移動します。
pi@pi2note:~ $ cd exMyData pi@pi2note:~/exMyData $ ls -l 合計 128 drwxr-xr-x 1 nobody nogroup 131072 11月 12 12:38 Music
最後に
Raspberry Pi2に120GBという大容量なストレージを増設できてとても便利になりました。Windowsパソコンに装着すれば、そのままで読み書き可能なのも便利です。
ちょっと気になるのは、USBコネクターが熱くなるほど発熱することです。熱暴走するほどではありません。
増設したストレージを使用して、音楽を聴いたり、プログラム開発したりできそうです。