Raspberry Pi 3 Model B+ 上の FreeBSD 13.0-RELEASE 環境にディスク (USB 接続の SATA HDD) の増設と Samba をインストールする手順です。
Samba の基本的な設定変更までを行います。
本稿ではブートディスク (SD カードの領域) に行われている設定に倣い、以下の方針例の通りディスク増設に関する設定を行うこととします。
パーティションスキーム | MBR |
---|---|
ファイルシステム作成時のオプション | ソフトアップデートの適用 (-U) のみ設定 |
ラベル | ufs ラベルのみ設定 |
マウント | ラベル名を使用 |
diskid ラベル設定の無効化を行います。
※diskid ラベルはディスク接続時に自動的に設定されます。
root@raspberrypi:~ # sysctl kern.geom.label.disk_ident.enable=0
kern.geom.label.disk_ident.enable: 1 -> 0
ufsid ラベル設定の無効化を行います。
※ufsid ラベルはファイルシステム作成時に自動的に設定されます。
root@raspberrypi:~ # sysctl kern.geom.label.ufsid.enable=0
kern.geom.label.ufsid.enable: 1 -> 0
/boot/loader.conf に FreeBSD の再起動後も無効化を行う設定を追加します。
kern.geom.label.disk_ident.enable="0"
kern.geom.label.ufsid.enable="0"
Raspberry Pi にディスクを接続します。
『da0』として認識されます。
root@raspberrypi:~ # geom disk list
Geom name: mmcsd0
Providers:
1. Name: mmcsd0
Mediasize: 15685648384 (15G)
Sectorsize: 512
Stripesize: 4194304
Stripeoffset: 0
Mode: r2w2e7
descr: SDHC USDU1 2.0 SN 05006A60 MFG 02/2017 by 116 J`
ident: 05006A60
rotationrate: 0
fwsectors: 0
fwheads: 0
Geom name: da0
Providers:
1. Name: da0
Mediasize: 320072933376 (298G)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r0w0e0
descr: Logitec
lunname: Logitec 17307000000024E5
lunid: 3017307000000024
ident: 17307000000024E5
rotationrate: unknown
fwsectors: 63
fwheads: 255
ディスクにパーティションが存在している場合は削除します。
root@raspberrypi:/ # gpart destroy -F da0
da0 destroyed
ディスクにパーティションスキームを作成します。
root@raspberrypi:~ # gpart create -s mbr da0
da0 created
ディスクにスライスを作成します。
root@raspberrypi:~ # gpart add -t freebsd da0
da0s1 added
スライスにパーティションスキームを作成します。
root@raspberrypi:~ # gpart create -s bsd da0s1
da0s1 created
スライスにパーティションを作成します。
本稿では開始アドレス (論理ブロックアドレス) は『16』、インデックスは『4』とします。
root@raspberrypi:~ # gpart add -t freebsd-ufs -b 16 -i 4 da0s1
da0s1d added
パーティションの作成を確認します。
root@raspberrypi:~ # gpart show -p
=> 63 30635969 mmcsd0 MBR (15G)
63 2016 - free - (1.0M)
2079 102312 mmcsd0s1 fat32lba [active] (50M)
104391 30525497 mmcsd0s2 freebsd (15G)
30629888 6144 - free - (3.0M)
=> 0 30525497 mmcsd0s2 BSD (15G)
0 57 - free - (29K)
57 30525440 mmcsd0s2a freebsd-ufs (15G)
=> 63 625142385 da0 MBR (298G)
63 1 - free - (512B)
64 625142384 da0s1 freebsd (298G)
=> 0 625142384 da0s1 BSD (298G)
0 16 - free - (8.0K)
16 625142368 da0s1d freebsd-ufs (298G)
パーティションにファイルシステムを作成します。
root@raspberrypi:~ # newfs -U /dev/da0s1d
/dev/da0s1d: 305245.3MB (625142368 sectors) block size 32768, fragment size 4096
using 489 cylinder groups of 625.22MB, 20007 blks, 80128 inodes.
with soft updates
パーティションにラベルを設定します。
本稿ではラベル名は『datafs』とします。
root@raspberrypi:~ # tunefs -L datafs /dev/da0s1d
パーティションのマウントポイントを作成します。
本稿では『/data』ディレクトリとします。
# mkdir /data
パーティションをマウントします。
# mount /dev/ufs/datafs /data
/etc/fstab に FreeBSD の再起動後もマウントを行う設定を追加します。
本稿ではマウントオプションは『rw,late』、ダンプならびにファイルシステムチェックの実行は無しとします。
/dev/ufs/datafs /data ufs rw,late 0 0
パッケージをインストールします。
本稿では Samba のバージョンは 4.13 を選択することとします。
root@raspberrypi:~ # pkg install samba413
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Updating database digests format: 100%
The following 59 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
avahi-app: 0.8
ca_root_nss: 3.71
cyrus-sasl: 2.1.28
dbus: 1.12.20_5
dbus-glib: 0.112
expat: 2.4.4
gamin: 0.1.10_10
gdbm: 1.22
gettext-runtime: 0.21
glib: 2.70.4,2
gmp: 6.2.1
gnome_subr: 1.0
gnutls: 3.6.16
indexinfo: 0.3.1
jansson: 2.14
libICE: 1.0.10,1
libSM: 1.2.3,1
libX11: 1.7.2,1
libXau: 1.0.9
libXdmcp: 1.1.3
libarchive: 3.5.2,1
libdaemon: 0.14_1
libevent: 2.1.12
libffi: 3.3_1
libgcrypt: 1.9.4
libgpg-error: 1.43
libiconv: 1.16
libidn2: 2.3.2
libinotify: 20180201_2
liblz4: 1.9.3,1
libpthread-stubs: 0.4
libsunacl: 1.0.1
libtasn1: 4.18.0
libunistring: 0.9.10_1
libunwind: 20201110
libxcb: 1.14_1
libxml2: 2.9.12
lmdb: 0.9.29,1
mpdecimal: 2.5.1
nettle: 3.7.3
openldap24-client: 2.4.59_4
p11-kit: 0.24.0
pcre: 8.45
popt: 1.18_1
py38-dnspython: 1.16.0
py38-importlib-metadata: 4.8.1
py38-markdown: 3.3.4
py38-setuptools: 57.0.0
py38-zipp: 3.4.0
python38: 3.8.12_1
readline: 8.1.1
samba413: 4.13.14
talloc: 2.3.1
tdb: 1.4.3,1
tevent: 0.10.2_1
tpm-emulator: 0.7.4_2
trousers: 0.3.14_3
xorgproto: 2021.5
zstd: 1.5.0
Number of packages to be installed: 59
The process will require 308 MiB more space.
50 MiB to be downloaded.
Proceed with this action? [y/N]: y
起動スクリプトは /usr/local/etc/rc.d ディレクトリ以下に配置されます。
root@raspberrypi:~ # ls -l /usr/local/etc/rc.d/samba_server
-rwxr-xr-x 1 root wheel 6535 Mar 8 06:47 /usr/local/etc/rc.d/samba_server
/usr/local/etc/smb4.conf を新規作成します。
本稿では Samba はユーザホーム機能の提供のみを行うこととします。
以下は /usr/local/etc/smb4.conf の内容例となります。
[global]
security = user
logging = file
dos charset = CP932
[homes]
path = /data/%S
browseable = No
valid users = %S
read only = No
本稿では以下の方針例の通りサービスの起動設定を行うこととします。
smbd | 起動する |
---|---|
nmbd | 起動しない (無効化) |
winbind | 起動しない (無効化) |
/etc/rc.conf に以下の設定を追加します。
なお nmbd と winbindd の無効化には『samba_server_enable="YES"』の設定の追加が必要となるため、Samba (smbd) は自動起動が行われるようになります。
samba_server_enable="YES"
nmbd_enable="NO"
winbindd_enable="NO"
Samba を起動します。
root@raspberrypi:~ # service samba_server start
Performing sanity check on Samba configuration: OK
Starting smbd.
/etc/newsyslog.conf.d/samba.conf を新規作成してログローテーションの設定を行います。
以下は /var/log/samba4/log.smbd に対して、毎日 00:00 に bzip2 圧縮を行い 7 世代保存を行う場合の例となります。
※log.smbd のローテーションに関して smbd へのシグナルの送信は不要です。
/var/log/samba4/log.smbd 644 7 * @T00 JN
Samba 接続用のユーザを作成します。
本稿ではユーザ名は『fsuser01』とします。
OS ユーザを作成します。
※Samba 接続用ユーザの作成には OS ユーザが必要となります。
但し OS へのログイン権限は不要のため、ホームディレクトリやログインシェルの指定、パスワードの設定は行わないこととします。
root@raspberrypi:~ # pw useradd fsuser01 -c "Samba Share User" -d /nonexistent -s /usr/sbin/nologin
Samba 接続用ユーザを作成します。
pdbedit コマンド実行後、パスワード入力のプロンプトが表示されます。
パスワードを入力して Enter を押下します。
root@raspberrypi:~ # /usr/local/bin/pdbedit -a fsuser01
new password:
retype new password:
パスワードを入力後、ユーザの詳細情報が表示されます。
Unix username: fsuser01
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1533095059-4261278251-1847181010-1000
Primary Group SID: S-1-5-21-1533095059-4261278251-1847181010-513
Full Name: Samba Share User
Home Directory: \\RASPBERRYPI\fsuser01
HomeDir Drive:
Logon Script:
Profile Path: \\RASPBERRYPI\fsuser01\profile
Domain: RASPBERRYPI
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 9223372036854775807 seconds since the Epoch
Kickoff time: 9223372036854775807 seconds since the Epoch
Password last set: Tue, 15 Mar 2022 22:02:21 JST
Password can change: Tue, 15 Mar 2022 22:02:21 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Samba 接続用ユーザのディレクトリを作成します。
作成先は増設したディスクのパーティション内とします。
root@raspberrypi:~ # mkdir -m 700 /data/fsuser01
root@raspberrypi:~ # chown fsuser01:fsuser01 /data/fsuser01
Samba にログインします。
root@raspberrypi:~ # /usr/local/bin/smbclient -U fsuser01 //127.0.0.1/fsuser01
Enter WORKGROUP\fsuser01's password:
Try "help" to get a list of possible commands.
smb: \>
ログアウトします。
smb: \> exit