外付けHDDをケースに入れて、
必要な時にパソコンに繋いでデータを移動するのがすごいめんどくさいです。
そこで、自宅にラズパイがあることですし、NASを構築しようと思いました。
今回はその手順を何とか確立できたので今後何台もNASを作成する際の
参考に手順を公開したいと思います。
用意する物
Raspberry Pi一式(ラズパイ+電源+OS入りSDカード)
USBメモリ もしくは USBで接続している外付けHDD
前提条件
ラズパイは基本的にupdate
とupgrade
が出来ていれば良いと思います。
Sambaをインストール
共有フォルダの設定のために、Samba をインストールします。
ubuntu@ubuntu:~$ sudo apt install samba
Versionの確認
ubuntu@ubuntu:~$ samba -V
Version 4.11.6-Ubuntu
Sambaが起動しているかsystemctl status smbd
コマンドで確認します。
Active項目がactive (running)
になっていれば起動しています。
ubuntu@ubuntu:~$ systemctl status smbd
● smbd.service - Samba SMB Daemon
Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-08 14:14:17 UTC; 4 days ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 1761 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 4 (limit: 1827)
CGroup: /system.slice/smbd.service
├─1761 /usr/sbin/smbd --foreground --no-process-group
├─1765 /usr/sbin/smbd --foreground --no-process-group
├─1766 /usr/sbin/smbd --foreground --no-process-group
└─1767 /usr/sbin/smbd --foreground --no-process-group
Mar 08 14:14:16 ubuntu systemd[1]: Starting Samba SMB Daemon...
Mar 08 14:14:17 ubuntu systemd[1]: Started Samba SMB Daemon.
他にもインストール
# exfatをマウントできるように
ubuntu@ubuntu:~$ sudo apt -y install exfat-fuse exfat-utils
Samba用ユーザーを作成する
Samba用のユーザーをUbuntu側に作ります。
# ユーザーを作成
ubuntu@ubuntu:~$ sudo useradd smbu1
pdbeditでSamba側にユーザーを登録します。
# samba用ユーザーに登録
ubuntu@ubuntu:~$ sudo pdbedit -a smbu1
new password:
retype new password:
Unix username: smbu1
NT username:
Account Flags: [U ]
User SID: S-1-5-21-588354193-3331489712-4072529787-1000
Primary Group SID: S-1-5-21-588354193-3331489712-4072529787-513
Full Name:
Home Directory: \\ubuntu\smbu1
HomeDir Drive:
Logon Script:
Profile Path: \\ubuntu\smbu1\profile
Domain: UBUNTU
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: Sat, 13 Mar 2021 00:07:01 UTC
Password can change: Sat, 13 Mar 2021 00:07:01 UTC
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
登録されているか確認します。
# samba用ユーザー一覧の確認
ubuntu@ubuntu:~$ sudo pdbedit -L
smbu1:1001:
USBメモリやHDDをマウントする
fdisk
コマンドで接続しているストレージを確認します。
※ parted
コマンドでもよいです
ubuntu@ubuntu:~$ sudo fdisk -l
Disk /dev/sda: 115.94 GiB, 124465971200 bytes, 243097600 sectors
Disk model: FLASH DRIVE
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: dos
Disk identifier: 0x24236e8c
Device Boot Start End Sectors Size Id Type
/dev/sda1 63 243097599 243097537 115.9G 7 HPFS/NTFS/exFAT
この中でUSBメモリはsda1になるので、これをマウントします。
手順は先にフォルダを作成して、作成したフォルダにマウントします。
# フォルダを作成
# pオプションは書いたフォルダが見つからなかったらエラーにせず作成する
ubuntu@ubuntu:~$ sudo mkdir /media/smbu1/shareusb -p
#USBメモリをマウントする(読み書きできるように権限もつける)
ubuntu@ubuntu:~$ sudo mount /dev/sda1 /media/smbu1/shareusb/ --types=exfat --options=rw
# USBメモリにファイルが入ってたらデータが表示できるか確認する
ubuntu@ubuntu:~$ ls /media/smbu1/shareusb
権限設定
フォルダに権限を追加します。
ubuntu@ubuntu:~$ sudo chmod 770 /media/smbu1/shareusb/
フォルダ所有権を変更します。
# フォルダの所有権を作成したユーザーに変更
ubuntu@ubuntu:~$ sudo chown smbu1 /media/smbu1/
shareフォルダ共有設定
smb.conf
に追記します。
ubuntu@ubuntu:~$ sudo vim /etc/samba/smb.conf
# 以下をファイルの最終行に追記する
[ushare]
comment = USBの共有フォルダ
path = /media/smbu1/shareusb
writable = yes
browseable = yes
valid user = smbu1
create mode = 0777
directory mode = 0777
Sambaを再起動
# Sambaの再起動
ubuntu@ubuntu:~$ sudo systemctl restart smbd
# 次から自動起動するように設定
ubuntu@ubuntu:~$ sudo systemctl enable smbd
Macから見てみる
Macのネットワークタブから先ほど設定した共有フォルダ名を選択し、
ユーザー名、パスワードを入力してアクセスするとUSBメモリに入っているデータに
アクセスすることができます。
自動でマウントする設定
このままの設定だと、ラズパイを起動するたびにマウントしないといけないので、
自動でマウントしてくれる設定を追加します。
自動マウント設定は fstab
に追記します。
# UUIDを確認する
ubuntu@ubuntu:~$ sudo blkid
/dev/sda1: LABEL="USB128" UUID="ACAC-7890" TYPE="exfat" PARTUUID="24236e8c-01"
# fstabの最終行に追記する
ubuntu@ubuntu:~$ sudo vim /etc/fstab
〜
UUID=ACAC-7890 /media/smbu1/shareusb exfat defaults 0 0
これで再起動して共有フォルダにアクセスできれば完了です。
読み込みは出来るが書き込みできない場合
Macから読み込みできるが、ファイルを書き込もうとしたらできませんでした。
色々参考サイトを巡っていたら「unix extensions」という設定をoffにすることで
問題を解決できそうなことが分かったため、設定を追記しました。
unix extensions = no
この1文をsmb.confの共有フォルダ部分に追記します。
ubuntu@ubuntu:~$ sudo vim /etc/samba/smb.conf
[ushare]
comment = USBの共有フォルダ
path = /media/smbu1/shareusb
unix extensions = no
writable = yes
browseable = yes
valid user = smbu1
create mode = 0777
directory mode = 0777
これで共有サーバが完成しました。
やることはそこまで難しくないですが、多少手こずりました。
その分達成感があったので満足です!
これで重い外付けHDDを移動させることなくデータをポイポイ移動できますね。
参考
【Ubuntu】2TB超のHDDを増設し,SambaでWindowsとファイル共有
Raspberry Piで家庭用NAS(Sambaサーバー)を作る
exfatの外付けHDDをSambaで共有 (Ubuntu Server, 読み取り専用)