概要
Raspberry Pi 4 にUSBでSSDを繋ぎ、それをNAS化してみました。
これだけ情報があるのに、あえて残そうと思った理由は
- 備忘録的に残して置く
- もう一度組み直す or SSDを追加するかも
- Linuxに不慣れな自分がハマったポイントがあった
- 手順ミスで/etc/fstabにフォーマット前のUUIDを書いたままリブートさせてしまい、OSが起動しなくなってあたふたした
- 参考にしたサイトと同じ設定をしてもうまく動かなかった
- 実現したいシステムの前提条件と合っていなかったのかも。。。
というのがあったので、改めてまとめなおそうと思った次第です。
背景
※興味ない方は読み飛ばしてもらってOKです
PCゲームを録画したものをLAN内で共有し、スマホからVLCで見ていたのですが、
どうやらVLCが原因と思われるエラーでブルスクが3度ほど発生。
心臓にも悪いしゲームのプレイ中にブルスクなんてとんでもないので、
録画データをちゃんとNASに置いて、それを見ることにしようと思い立ちました(ようやく)
ラズパイ自体はすでに購入済みで、興味本位でsambaで共有出来るように設定していました。
またOSが入ったmicroSD上のデータを読み書きすると遅いし容量も少ないということで、
SSDまで買ってありましたが、箱が積んであるだけだったのでそこからの作業です。
構成
Win10 PC -- rooter -- RasPi4
| (USB3.0)
SSD
SSDにOSを置いたりもしていない、ほぼほぼplainな状態です。
やること
- SSDの接続・初期化
- 自動マウントの設定
- 編集可能なディレクトリの作成
- sambaの設定(省略)
SSDの接続・初期化
今回つないだSSDはWindowsマシンでNTFSフォーマット済みのものを利用しました。
接続はUSBでSSDとRaspberryPi4を繋ぐだけ。
NAS化したいので、SSDをext4でフォーマットし直します。
ただしmountされている状態ではフォーマット出来ないので、まずunmountします。
# mountされているのでunmountするdeviceを特定
$ sudo fdisk -l
...
/dev/sda1 ... # <- 接続したSSDが見えてる
# unmountする
$ sudo umount /dev/sda1
unmountできたのでext4でフォーマットしていきます。
# ext4でフォーマット
$ sudo mkfs.ext4 /dev/sda1
# セクタをどうするか聞かれるが、ひとまずdefault値で設定
自動マウントの設定
次に起動時にSSDを特定のディレクトリにmountしてくれるように設定します。
mount先のディレクトリを作って、USB接続しているSSDを特定、fstabを設定します。
fstabの書式上、UUIDやPARTUUIDなどデバイスを指定する術がいくつかあるようです。
# mount先のディレクトリを作成
# 一般的には /mnt か /media 以下に作るらしい
$ sudo mkdir /mnt/ext_ssd
# USB接続しているSSDのUUIDを特定
$ sudo blkid
...
/dev/sda1 ... UUID=XXXXX-XXXXXX-XXXXX ... # <- USB接続しているSSD
# fstabを編集するためのエディタ起動
# vimでもnanoでもleafpadでも… お好きなエディタで
$ sudo nano /etc/fstab
fstabには下記の1行を追加
ちなみにnofailを書かず、デバイス指定を間違うとOSが起動しなくなります。
https://bacchi.me/linux/troubleshooting-boot-process/
(解消方法も下に置いておきます)
# デバイス指定 マウント先 ファイルシステム オプション dump pass の順で指定できる
# nofailを忘れるな!!
UUID=XXXXX-XXXXXX-XXXXX /mnt/ext_ssd ext4 defaults,nofail 0 2
ここで/etc/fstabに設定した情報が間違っていないか確認する ←ココ重要
# etc/fstab を使ってmountを試みる
$ sudo mount -a
# mount されているか確認
$ sudo df
...
/dev/sda1 ... ... ... ... /mnt/ext_ssd # デバイスがマウントされていることを確認
ここまで来て初めてrebootです。
$ sudo reboot
編集可能なディレクトリの作成
ここで一つハマった。
よくよく考えれば当たり前なのだが、SSDの直下をrwxには出来ない。
(windowsでも普通はC直下ではなく、どこかのディレクトリを共有設定する)
なのでLAN内で誰でも触れるようなディレクトリを/mnt/ext_ssd以下に作る必要がある。
もちろんこれはmountされている状態で行う必要がある。
# ディレクトリの作成
$ sudo mkdir /mnt/ext_ssd/share
# permissionの変更
# 今回は誰でも使えるように777にしたが、用途に応じて変更すること
$ sudo chmod 777 /mnt/ext_ssd/share
/etc/fstab の編集ミスった
RasPiのOSが入っているmicroSDは基本的にext4でフォーマットされていて、標準のwindowsでは読めない(WSL2があれば話は別だが)
なので読めるようにするアプリを使って/root/etc/fstabの書式を正しい記述に直す必要がある。
今回は Linux File Systems for Windows by Paragon Software というものを使った。
https://www.paragon-software.com/jp/home/linuxfs-windows/
こちらのページを参考にした。
https://m-bc.jp/2019/08/ext4bywin10/
最後に
ぐだぐだとまとめてきましたが、大事なのは/etc/fstabの編集です、そこにつきます。
書式ミスを解消する方法を探して試すだけで2時間ぐらい浪費してしまったので、
同じような境遇の方がいて、これをみて解消できたという方がいたら幸いです。