データベースの勉強も初めたので、使っていないラズパイ3でNASを作って見ようと考えた
昔、IoTをやろうと勉強で使っていたラズパイ3が余っているので、再びデータベースの勉強で使おうと考えた。
小さくても専用のサーバーになるので、せっかくだから余っているUSBメモリを使ってNASにできるようにも考えてみた。
普通のおじさんがNASを構築するための、最初の部分のUSBメモリをフォーマットして起動後に自動的にマウントする部分までをまずやってみたよ。
USBをマウントするのは簡単だが書き込みできなかった

結論はオーナーとグループを変えないと使えない
アクセス権の変更が必要な事を見落としやすいから注意
USBメモリを使えるようにするまで
まず手持ちのUSBメモリを、ラズパイ3でNASとして使えるように設定をする。
その前に、NASって知っていますか?
ウィキペディアで見てみると
NASは、保護されたリソースへの安全なアクセスのためのゲートウェイである。これはたとえば、電話回線からプリンターへ、あるいはインターネットへのゲートウェイである。
クライアントがNASに接続すると、NASはそのクライアントが背後にあるリソースにアクセスするための権限を持っているかを問いただす。クライアントの答えによっては保護されたリソースにアクセスできないこともある。ただし、その判断をするのはリソース側のシステムであって、NASは単に中継しているだけである。したがってNAS自体はこの認証プロセスがどのように処理されているのかを知らない。
引用:ウィキペディア
ネットワーク・アクセス・サーバーの事で、今回はUSBメモリーを取り付けることで、ラズパイ3をファイルサーバーとして使おうという試みです。
何故こんな事をするかというと、自宅内でいろんな所からアクセスしてもデータは一箇所に保管できれば、非常に便利だから。
市販品を買えばいいじゃないと、思うかもしれませんが、全て余っているもので作ることと、Linux自体を学ぶこともできるので、やはり実践をするためにも自分で作ったほうが良いでしょう。
USBメモリの搭載位置を確認
まずはラズパイ3のUSBポートに挿入したUSBメモリが何処に搭載されているかをdfコマンドを使って確認する。
$ df

dfコマンドを実行させると、実際に使用しているラズパイ3上で、どこに搭載されているかが簡単に分かる。
この場合、/dev/sda1
となっている部分がUSBメモリに当たる。
そうしたら、現在ラズパイ3に接続されている、この/dev/sda1を一旦接続を解除してフォーマットを実行しなければならない。
まずは、接続解除のためのumountコマンドを実行し、接続を解除する。
sudo umount /dev/sda1
この時、sudoとはroot特権を入手するためのコマンドになる。
USBメモリの接続が解除されたら、次はUSBメモリをフォーマットする。
USBメモリをフォーマットする
USBメモリをフォーマットするには、fdiskコマンドを使用するが、ここで注意しなければいけないのは、実際の名称は/dev/sda1だが、fdiskで使う場合は/dev/sdaになることに注意!
sudo fdisk /dev/sda

fdiskを実行すると、Commandモードでいろいろと聞いてくる。
まずはdコマンドでパーテーションを削除
Command (m for help): d
Selected partition 1
Partition 1 has been deleted
1つのパーテーションを見つけて削除したと返ってきます
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-236222463, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-236222463, default 236222463):
Created a new partition 1 of type ‘Linux’ and of size 112.7 GiB.
Partition #1 contains a exfat signature.
新規にパーテーションを作成、パーテーションタイプはプライマリーを選択肢、以降はデフォルトで問題ないのでエンターを押す。最後にCreated a new partitionで完了
Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.
その後は、以前のフォーマットのsignatureを削除するか聞いてくるので、Yで完了。
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
最後にパーテーション情報を書き込んで完了。
次に、mkfsコマンドで実際のフォーマットを実施する。この時、フォーマット書式はext4となる。
$ sudo mkfs.ext4 /dev/sda1

Writing superblocks and filesystem accounting information: done で完了となる。
この後、
sudo mount /dev/sda1 /mnt/usb0
とコマンドを打つことで、今回フォーマットしたUSBメモリは/mnt/usb0にマウントされて使用可能になる。
USBメモリの自動マウントを設定する
今までの内容で、USBメモリがNASのファイルサーバーとして使用する準備ができました。
しかし、このままではラズパイ3を再起動する度に、USBメモリを再マウントしなければなりません。
そうしなくても良いように、再起動時に自動的にマウントするように設定を書き換えます。
ラズパイはLinuxで動作しておりますので、Linuxで最初の起動時に読み込むディスク情報に、/mnt/usb0の情報を書き込めば、再起動時に自動的に読み込むことになります。
最初にUSBメモリ情報を調べる
自動起動させるためには、USBメモリ情報を調べる必要がありますので、blkidコマンドでUSBメモリ情報をチェックします。
$ sudo blkid /dev/sda1

このUSB情報の中で、UUID=”8916ae76-790b-400d-9e3c-2a112b22680f” の情報を使用します。
このUUID=”8916ae76-790b-400d-9e3c-2a112b22680f”を、ディスク情報に書き込むのです。
ディスク情報の書き換え
実際に使用するディスク情報は、/etc/fstabというファイルになります。
今回は、viというエディターを使用してディスク情報を追加します。

/dev/mmcblk0p7 の後ろに以下の内容を記述します。
UUID="8916ae76-790b-400d-9e3c-2a112b22680f" /mnt/usb0 ext4 defaults,noatime,nofail 0 0
これで完了と思うでしょうが、実はこのままでは落とし穴が有り、NASへの書き込みができないのです。
USBメモリのアクセス権限を変更
実は今マウントしているUSBメモリは、権限の関係で見ることはできても、書き込みはできない状態なんです。
$ ls -al
というコマンドを打つこむと

となります。一番下のusb0を見ると分かるのですが、このDIRはオーナーがroot、グループもroot、しかもアクセス権は、実行と読み込みしか与えられておりません。
左側にあるdwxr-xr-xというのがアクセス権を表しており、root意外のユーザーはr-xと言うことで、rの読み込み専用と、xの実行の権限しかありません。
ここで、r-xにwを追加しても、オーナーがrootなのでこれを一般的なpiに変更する必要があります。
最後に、以下のコマンドを打ち込み、オーナー、グループの変更と、アクセス権の変更を与えます。
プライベートアドレスで、家庭内で使用するだけなので全てのアクセス権を与えます。
$
sudo chown -R pi /mnt/usb0
オーナーをpiに変更する
$
sudo chgrp -R pi /mnt/usb0
グループをpiに変更する
$
chmod 777 /mnt/usb0
アクセス権をフルアクセスに変更する
以上を実行したことにより、以下のように変更になりました。
drwxr-xr-x 3 root root 4096 → drwxrwxrwx 3 pi pi 4096
これで、USBメモリをファイルサーバーにする準備ができました。次回は、ファイルサーバーのインストールです。
お疲れさまでした。
