Raspberry Pi 3 Model B+ 上の NetBSD 9.2 環境にディスク (USB 接続の SATA HDD) の増設と Samba をインストールする手順です。
Samba の基本的な設定変更までを行います。
本稿ではブートディスク (SD カードの領域) に行われている設定に倣い、以下の方針例の通りディスク増設に関する設定を行うこととします。
パーティションスキーム | MBR |
---|---|
ファイルシステムフォーマット | FFSv1 |
Raspberry Pi にディスクを接続します。
『sd0』として認識されます。
raspberrypi# sysctl hw.disknames
hw.disknames = ld0 sd0
ディスクにパーティションが存在している場合は削除 (ディスクを初期化) します。
raspberrypi# dd if=/dev/zero of=/dev/rsd0c bs=1m count=1
1+0 records in
1+0 records out
1048576 bytes transferred in 0.042 secs (24966095 bytes/sec)
ディスクにパーティションを作成します。
ディスクのレイアウト変更のプロンプトが表示されます。
そのまま Enter を押下 (『n』を選択) します。
raspberrypi# fdisk -u sd0
fdisk: primary partition table invalid, no magic in sector 0
fdisk: Cannot determine the number of heads
Disk: /dev/rsd0
NetBSD disklabel disk geometry:
cylinders: 305245, heads: 64, sectors/track: 32 (2048 sectors/cylinder)
total sectors: 625142448, bytes/sector: 512
BIOS disk geometry:
cylinders: 1023, heads: 255, sectors/track: 63 (16065 sectors/cylinder)
total sectors: 625142448
Partitions aligned to 2048 sector boundaries, offset 2048
Do you want to change our idea of what BIOS thinks? [n]
操作対象パーティション選択のプロンプトが表示されます。
『0』を入力して Enter を押下します。
Partition table:
0: <UNUSED>
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>
No active partition.
Drive serial number: 0 (0x00000000)
Which partition do you want to change?: [none] 0
sysid 入力のプロンプトが表示されます。
そのまま Enter を押下 (『169』を設定) します。
The data for partition 0 is:
<UNUSED>
sysid: [0..255 default: 169]
開始位置入力のプロンプトが表示されます。
そのまま Enter を押下します。
start: [0..38913cyl default: 2048, 0cyl, 1MB]
サイズ入力のプロンプトが表示されます。
そのまま Enter を押下します。
size: [0..38913cyl default: 625140400, 38913cyl, 305244MB]
操作対象パーティション選択のプロンプトが再度表示されます。
そのまま Enter を押下 (『none』を選択) します。
Partition table:
0: NetBSD (sysid 169)
start 2048, size 625140400 (305244 MB, Cyls 0-38913/80/63)
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>
No active partition.
Drive serial number: 0 (0x00000000)
Which partition do you want to change?: [none]
パーティション作成確認のプロンプトが表示されます。
『y』を入力して Enter を押下します。
We haven't written the MBR back to disk yet. This is your last chance.
Partition table:
0: NetBSD (sysid 169)
start 2048, size 625140400 (305244 MB, Cyls 0-38913/80/63)
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>
No active partition.
Drive serial number: 0 (0x00000000)
Should we write new partition table? [n] y
ディスクラベル (on-disk label) を作成します。
raspberrypi# disklabel -e sd0
エディタ (vi) が起動して、カーネルが生成したディスクラベル (in-core label) の情報が表示されます。
この内容のままでエディタを保存終了します。
# /dev/rsd0:
type: SCSI
disk:
label: fictitious
flags:
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 305245
total sectors: 625142448
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
5 partitions:
# size offset fstype [fsize bsize cpg/sgs]
c: 625142448 0 unused 0 0 # (Cyl. 0 - 305245*)
e: 625140400 2048 4.2BSD 0 0 0 # (Cyl. 1 - 305245*)
ディスクラベル (on-disk label) の作成を確認します。
raspberrypi# disklabel -r sd0
# /dev/rsd0:
type: SCSI
disk:
label: fictitious
flags:
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 305245
total sectors: 625142448
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
5 partitions:
# size offset fstype [fsize bsize cpg/sgs]
c: 625142448 0 unused 0 0 # (Cyl. 0 - 305245*)
e: 625140400 2048 4.2BSD 0 0 0 # (Cyl. 1 - 305245*)
パーティションにファイルシステムを作成します。
raspberrypi# newfs /dev/rsd0e
/dev/rsd0e: 305244.3MB (625140400 sectors) block size 32768, fragment size 4096
using 412 cylinder groups of 740.91MB, 23709 blks, 47104 inodes.
パーティションのマウントポイントを作成します。
本稿では『/data』ディレクトリとします。
raspberrypi# mkdir /data
パーティションをマウントします。
raspberrypi# mount /dev/sd0e /data
/etc/fstab に NetBSD の再起動後もマウントを行う設定を追加します。
本稿ではマウントオプションは『rw,noatime』、ダンプならびにファイルシステムチェックの実行は無しとします。
/dev/sd0e /data ffs rw,noatime 0 0
パッケージをインストールします。
本稿では Samba のバージョンは 4.13 を選択することとします。
raspberrypi# pkgin install samba-4.13.14
calculating dependencies...done.
43 packages to install:
samba-4.13.14 tevent-0.10.2nb1 talloc-2.3.3 readline-8.1 python38-3.8.12 py38-markdown-3.1.1 py38-iso8601-0.1.16
py38-expat-3.8.12 py38-dns-1.16.0nb1 popt-1.18 perl-5.34.0nb3 p5-Parse-Yapp-1.21nb4 lmdb-0.9.29 libiconv-1.14nb3
libgcrypt-1.9.4 ldb-2.2.3 jansson-2.13.1 gnutls-3.7.2 gettext-lib-0.21 cmocka-1.1.5 avahi-0.8nb4 libdaemon-0.14nb2
glib2-2.68.4nb1 gdbm-1.21 dbus-1.12.20nb1 p11-kit-0.24.0nb3 nettle-3.7.3 mozilla-rootcerts-1.0.20201204 lzo-2.10
libunistring-0.9.10 libtasn1-4.17.0 libcfg+-0.7.0 gmp-6.2.1nb1 tdb-1.4.5 libgpg-error-1.42 py38-idna-2.10
py38-ecdsa-0.17.0 py38-cryptodome-3.10.1 py38-setuptools-57.5.0 libuuid-2.32.1 libffi-3.3nb5 py38-six-1.16.0
pcre-8.45
0 to refresh, 0 to upgrade, 43 to install
109M to download, 409M to install
proceed ? [Y/n]
設定ファイルは /usr/pkg/etc/samba ディレクトリ以下に配置されます。
raspberrypi# ls -l /usr/pkg/etc/samba/smb.conf
-rw-r--r-- 1 root wheel 7921 Apr 7 23:06 /usr/pkg/etc/samba/smb.conf
本稿では Samba はユーザホーム機能の提供のみを行うこととします。
以下は /usr/pkg/etc/samba/smb.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.d/smbd を新規作成します。
raspberrypi# cp -p /usr/pkg/share/examples/rc.d/smbd /etc/rc.d/smbd
Samba を起動します。
raspberrypi# service smbd onestart
Starting smbd.
Samba の自動起動が行われるようにする場合は、/etc/rc.conf に『smbd=YES』の設定を追加します。
smbd=YES
なお自動起動の設定後は、service コマンドでの起動は onestart ではなく start を指定 (『service smbd start』を実行) となります。
/etc/newsyslog.conf にログローテーションの設定を追加します。
以下は /var/log/log.smbd に対して、毎日 00:00 に gzip 圧縮を行い 7 世代保存を行う場合の例となります。
※log.smbd のローテーションに関して smbd へのシグナルの送信は不要です。
/var/log/log.smbd 644 7 * @T00 ZN
Samba 接続用のユーザを作成します。
本稿ではユーザ名は『fsuser01』とします。
OS ユーザを作成します。
※Samba 接続用ユーザの作成には OS ユーザが必要となります。
但し OS へのログイン権限は不要のため、ホームディレクトリやログインシェルの指定、パスワードの設定は行わないこととします。
raspberrypi# useradd -c "Samba Share User" -d /nonexistent -s /sbin/nologin fsuser01
useradd: Warning: home directory `/nonexistent' doesn't exist, and -m was not specified
Samba 接続用ユーザを作成します。
pdbedit コマンド実行後、パスワード入力のプロンプトが表示されます。
パスワードを入力して Enter を押下します。
raspberrypi# /usr/pkg/bin/pdbedit -a fsuser01
new password:
retype new password:
パスワードを入力後、ユーザの詳細情報が表示されます。
Unix username: fsuser01
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3864389441-2988535220-1215696492-1000
Primary Group SID: S-1-5-21-3864389441-2988535220-1215696492-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: Thu, 07 Apr 2022 23:21:30 JST
Password can change: Thu, 07 Apr 2022 23:21:30 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Samba 接続用ユーザのディレクトリを作成します。
作成先は増設したディスクのパーティション内とします。
raspberrypi# mkdir -m 700 /data/fsuser01
raspberrypi# chown fsuser01:users /data/fsuser01
Samba にログインします。
raspberrypi# /usr/pkg/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