Raspberry PiにUSBフラッシュメモリを接続

はじめに

2016年11月、Raspberry Pi2にUSBフラッシュメモリを接続しました。

Raspberry Pi2ボード

Raspberry Pi2ボード

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コネクターが熱くなるほど発熱することです。熱暴走するほどではありません。

増設したストレージを使用して、音楽を聴いたり、プログラム開発したりできそうです。