どうもこんにちは。
今回はラズパイにUSBのHDDを付けたので、マウントして使えるようにします。

なお、ラズパイ側でトラブルが発生した場合を考慮し、Windows端末でも扱いやすいNTFS形式でのフォーマットを前提とします。

前提として、OSはRaspbianです。


0.事前準備


1.ディスクのフォーマット
まずは事前準備として、ディスクをフォーマットしておきます。
ラズパイ上でNTFSフォーマットする方法もあるのですが、動作が安定しなかったので、Windowsでフォーマットします。
パーティション方式はGPT形式、パーティションをNTFSで新規作成します。


2.ラズパイ側の準備
通常、LinuxでNTFSを扱うことができません。
NTFSを扱うためのパッケージがあるため、それをインストールします。
apt install ntfs-3g

これにて事前準備は完了。
次はHDDをラズパイにつないで、使えるように設定していきます。

1.ディスクの状態確認


1.パーティションの確認
まずは接続したHDDのデバイス名が、どのように認識しているかを確認します。
以下のコマンドを実行します。
fdisk -l

すると以下のような表示が確認できます。
Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Generic DISK03
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FFB76520-8BE0-4C48-841C-A45A29666DAB

Device     Start        End    Sectors  Size Type
/dev/sdc1     34      32767      32734   16M Microsoft reserved
/dev/sdc2  32768 3907026943 3906994176  1.8T Microsoft basic data

今回のデバイスはsdc。
なお、元々Windowsをインストールして使用していたディスクのため、Windowsの回復メニュー用パーティション(sdc1)が残ってしまっていました。
面倒なのでそのまま行きます。

2.HDDのマウント


HDDを使用するためには、HDDへアクセスするためのディレクトリを割り当てる(マウント)必要があります。
コマンドは以下の通り。
mount -t ntfs-3g /dev/sdc2 /mnt/hdd

ごく普通のマウントコマンドだが、今回はNTFSなので、パーティションのタイプとして、"ntfs-3g"を指定する。
"/mnt/hdd"の部分は、マウントしたディレクトリのため、任意の場所を指定してください。

なお、これだけでは、再起動したときなどに再度マウントする必要があります。
なので、以下手順で自動的にマウントされるように設定します。

3.自動マウント設定


パーティションには、UUIDという識別子が採番されています。
UUIDは、パーティションのフォーマット時に生成され、重複することがないIDです。
このUUIDを指定することで、パーティションを特定して、自動的にマウントできるように設定します。

1.UUID確認
自動マウントするために、UUIDを確認します。
"/dev/disk/by-uuid"というディレクトリに、UUIDで各パーティションにリンクされているディレクトリがあるので、確認します。
lsコマンドで確認できますが、リンク先のデバイスが見えるように、"-l"オプションを忘れずに。
ls -l /dev/disk/by-uuid

コマンドの結果は以下の通りです。
目的のデバイスにリンクされているものを探します。今回はsdc2のものを確認します。
lrwxrwxrwx 1 root root 10 11月 26 23:47 5C183AAC183A84D4 -> ../../sdc2

今回は「5C183AAC183A84D4」がUUIDとなります。

2.自動マウント設定
OS起動時にマウントするデバイスの情報は、"/etc/fstab"に記述する。

vi /etc/fstab

記述する内容は、以下の通り。
UUID="5C183AAC183A84D4" /mnt/hdd ntfs-3g defaults,nofail 0       0

記述する内容は、左から順に以下のようになっている。
  1. デバイス名。今回はUUIDを指定する。
  2. マウントポイント。任意の場所
  3. ファイルシステムの種類。今回はNTFSフォーマットのため、"ntfs-3g"を指定。
  4. オプション。今回はデフォルト設定およびnofailを指定。
  5. ファイルシステムのdump有無。0:なし、1:あり。
  6. OS起動時のfsckチェック実施順。0:なし、1以上:fsckが実施される順序。

ここで特筆すべきポイントは、オプションの"nofail"です。
これは、自動マウントできなかった場合にも、無視してOSを起動する設定です。
HDDの故障などでマウントできない場合も、OSは起動してほしいので、この指定は必須でしょう。

以上で設定完了です。

4.所感


いままでマウント手順について詳しく掘り下げたことがなかったのですが、新しい発見があるものですね。
UUIDとは何なのか、fstabに記載している内容は何なのか、改めて知ることができました。