2019年にメモリが強化されたRaspberry Pi 4Bが発売され、ラズパイをパソコンとしても十分実用的に使えるようになりました。ラズパイはSDカードにいろいろ保存しますが、それだけでは容量や寿命に不安が残りますよね?そこで今回は外付けのHDDをラズパイで使う方法を紹介します。普通のパソコンと違い、ラズパイにHDDやUSBメモリをつなぐだけでは使えるようにはならず、少々設定が必要になります。
OSは、Ubuntu Server 19.10,Ubuntu Server 20.04, Raspbian Busterで動作を確認しています。
今回紹介する方法と、この記事で紹介した方法を組み合わせることで、比較的安価で大容量なファイルサーバーを作ることもできます。
HDDの初期化
まず、他のPCでHDDを初期化します(今回は Windowsを使いました)。
Windowsマーク右クリック→「ディスクの管理」→対象HDDで右クリック(データが消えるので間違えちゃダメ)→「ボリュームの削除」(→複数に分かれている場合はすべて消す)でHDDの中身を完全に削除します。
下図のようになっていればOK。
パーティションの作成
次にラズベリーパイにUSB接続します。
接続したら、コマンドラインを使います。
sudo fdisk -l
このコマンドでUSBのHDDがOSから認識されていることを確認します。以下のような表示が出ると思います。
(前略)
Disk /dev/sda: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HDPC-UT
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: 619BC024-66B9-4A55-9F73-76B49CFB73EE
容量のところを見ればHDDとわかると思いますが、/dev/sda
という場所でHDDが認識されています。
次に下のコマンドでパーティションを作成します。
sudo fdisk /dev/sda
すると、いくつか入力を求められると思いますが、以下と同じになるように入力すれば問題ありません。
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition number (1-128, default 1): 1
First sector (34-1953525134, default 2048): 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525134, default 1953525134):
Created a new partition 1 of type 'Linux filesystem' and of size 931.5 GiB.
Partition #1 contains a ntfs signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
途中で「Partition #1 contains a ntfs signature.
」というものがありましたが、これはもともと Windowsで使っていた時の名残です。今回は次の質問「Do you want to remove the signature? [Y]es/[N]o:
」で「y
」と答えてシグネチャを削除しているのでLinux専用ディスクとなっています(削除が正常に完了すると「The signature will be removed by a write command.
」と出ます)。
※未検証ですが、HDDを Windowsと併用する場合は消してしまうと問題が起こる可能性があります。
上記完了後
sudo fdisk -l | less
を入力し
(前略)
Disk /dev/sda: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
(中略)
Device Start End Sectors Size Type
/dev/sda1 2048 1953525134 1953523087 931.5G Linux filesystem
と表示されればOK。/dev/sda
のところに/dev/sda1
が表記されるようになり、パーティションが無事に作成できました(出てきたやつはキーボードでqを押すと閉じられます)。
環境によっては/dev/sda1
ではないかもしれません。その場合は以下では適宜読み替えてください。
HDDのフォーマット
パーティションが作成できたので、HDDをフォーマットします。以下のコマンドを入力してください。
sudo mkfs.ext4 /dev/sda1
すると以下のように表示されます(若干時間がかかるかもしれません)。
mke2fs 1.45.3 (14-Jul-2019)
Creating filesystem with 244190385 4k blocks and 61054976 inodes
Filesystem UUID: db2a7ad5-03c5-4e81-a854-234436e9815f
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
エラーが出なければ完了。
HDDのマウント
外付けHDDなどをアクセスできる状態にすることを「マウント」といいます。そして、HDDの中身を表示する「場所」を「マウントポイント」といいます。
まずはラズパイの中にマウントポイントとなるディレクトリをコマンドで作ります。
mkdir /home/ubuntu/hdd
今回は/home/ubuntu/hdd
というディレクトリを作りましたが、使いやすい場所に作ってください。
いよいよマウントを行います。以下のようなコマンドを入力してください。
sudo mount -t ext4 /dev/sda1 /home/ubuntu/hdd
これで/home/ubuntu/hdd
というディレクトリの中にHDDの中身が表示され、アクセスできるようになりました。
マウントを解除するには次のコマンドです。
sudo umount /home/ubuntu/hdd
マウントしたHDDの「所有権」変更
上記でマウントができましたが、マウントしたHDDの所有権は「root」という特別なユーザーが持っています。このままでも良いですが、少々不便なので変更します。マウントした状態で次のコマンドを入力してください。
sudo chown -hR ubuntu:ubuntu /home/ubuntu/hdd
このchown
コマンドは
chown [オプション] ユーザー:グループ ファイル(orディレクトリ)
という書式に従っています。「ユーザー」と「グループ」は自分が普段使っているユーザーのものに変えてください。
起動時の自動マウント
ここまででマウント作業は完了ですが、このままだと毎回手動でコマンドを打たなければなりません。それは面倒ですよね。そこで、ラズパイを起動したら自動でHDDマウントしてくれるよう設定します。
まず、設定に必要な情報を確認します。以下のコマンドを入力してください。
sudo blkid /dev/sda1
すると、以下のような文字が出てくると思います。
/dev/sda1: UUID="XXX…XXXXX" TYPE="ext4" PARTUUID="xxxxx…-…-xx"
この「UUID」をメモなどで記録しておいてください。
次にfstabという、システム起動時にマウントされるデバイスが記述してあるファイルを編集します。以下のコマンドで編集モードにします。
sudo nano /etc/fstab
このファイルの末尾に
UUID=XXX…XXXXX /home/ubuntu/hdd ext4 defaults,nofail 0 0
と記述します。UUIDは先ほどメモしたものをを入力してください(確認したときは「”」が付いていましたが、ここでは除いてください)。
ここまでできたら、一度マウントを解除して以下のコマンドを入力してください(fstabに書いてあることを再度実行するコマンドです)。
sudo mount -a
マウントできていればOK!
ラズパイ起動時の注意
HDDをUSBに繋いだ状態でラズパイの電源を入れても、OSが起動しないということがありました。必ず起こるわけではなく、HDDの製品によって違いました。もしこれが発生した場合は、USBを抜いた状態で電源を入れてから接続してください。モノによるので、複数のHDDで試してみると良いかと思います。
ちなみに、ノートPCから取り出したHDDをつないだ場合はこのバグは一度も発生しませんでした。
コメント
[…] /mnt/dataの所有者をrootから/mnt/dataにアクセスしたいユーザーやそのユーザーが所属するグループに変更する必要があります。このサイトで紹介されているように、chownコマンドを用いるもあります。 […]