🙌

Raspberry Pi Zero 2 WにAlpine Linuxでsambaサーバー構築

2024/04/28に公開

以下の記事の「Raspberry Pi Zero 2 W」版です。
https://zenn.dev/lookna/articles/d0223051fee351

ほぼ同じでいけるだろうと思ったら、ところどころ悩んだので備忘メモ

OSインストール

OSイメージの準備

イメージファイル準備

「Raspberry Pi Zero W」の時は「armhf」を選択すればよかったですが、「Raspberry Pi Zero 2 W」はCPUのARMのバージョンがARMV7になっているため、そちらを選択してダウンロードする必要があります。
https://www.alpinelinux.org/downloads/#:~:text=GPG-,RASPBERRY PI,-First generation Pis

作業フォルダ準備

任意の作業フォルダを作成し、そこにダウンロードしたファイルを移動してください。
例:C:/work

SDカードに展開するためのフォルダ準備

作業フォルダに「zw」フォルダを作成してください。

cd C:/work
mkdir zw

イメージファイルの展開

そこにダウンロードした「tar.gz」を展開してください。

Linuxを使用している方や、WSL2を使用している方は以下のコマンドで展開可能です。(以降に記載するコマンドも同様です)

cd /mnt/c/work/
tar xzf alpine-rpi-3.13.0-armhf.tar.gz  -C zw

Windowsの方は「7-zip」などで展開して、配置してください。「zw」フォルダ直下は以下のようなフォルダ構造になります。

├─apks
│  └─armv7
├─boot
└─overlays

SDカード準備

「Raspberry Pi」で使用するSDカードをFAT32でフォーマットしてください。以下のツールを使うと良いらしいです。

SD Card Formatter
https://www.sdcard.org/jp/downloads/formatter/

SDカードのフォーマットが完了したら、「zw」フォルダの中身をSDカードにコピーしてください。(「zw」フォルダごとコピーするのではありません)

電源接続

SDカードを「Raspberry Pi Zero 2 W」に接続し、電源に接続してください。緑色のLEDが点滅していると思いますが、しばらく経つと点灯したままとなります。

前の記事ではヘッドレスインストールとしていましたが、インストール作業もそこまで大変ではなく、ヘッドレスの設定などのほうが面倒なことが多かったので、今回はHDMIやキーボードを接続してセットアップを行いました。

インストール作業

「Raspberry Pi Zero 2 W」が起動すると、まずログインを促されます。

root

と入力してログインしてください。
その後、

setup-alpine

と入力するとセットアップが始まります。
細かな手順は省略しますが、以下のような流れでインストール作業が進みます。

  • キーボードレイアウトの設定
  • ネットワークの設定(旧版はwifiのドライバのインストールが必要でしたが、デフォルトでもwifiに接続できるようになっています。)
  • ssh接続許可(デフォルトのままだとrootで接続できないので、root接続できるように「yes」を選択してください。
  • どのディスクにインストールするか選択
    • noneを選択してください。ディスクレスモードになります。
    • ディスクレスモードだと、RAM上で処理を行うようになりSDカードへの書き込みが少なくなります。また、個人的にはデータが壊れることが減ると思っています。

で、ここでインストールが開始するわけですが、自分の場合は失敗しました。
ルーターの設定なのか、wgetで必要なソフトがダウンロードできないようなエラーになります。
ipv6が使われているのが原因のようだったので、setupを「Ctrl+C」で停止させて以下のコマンドを実行してipv6を無効化しました。

localhost:~# sysctl -w net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6 = 1

localhost:~# sysctl -w net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6 = 1

localhost:~# sysctl -w net.ipv6.conf.lo.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6 = 1

localhost:~# sysctl -w net.ipv6.conf.wlan0.disabled_ipv6=1
net.ipv6.conf.eth0.disabled_ipv6 = 1

コマンド実行後、再度「setup-alpine」を実行してセットアップを行い、インストール完了です。

SSDのマウント

SSDを「Raspberry Pi Zero 2 W」に接続してください。自分はバスパワーのみで接続可能でしたが、場合によっては電源供給ありのハブを使用するなどしてください。

接続後、「mount」コマンドなどでマウントすることは可能ですが、再起動した場合など、そのたびにマウントする必要があります。これを解決します。

FSTABの設定

/etc/fstab」に以下のような設定を追記します。
最初から「vi」が使えるので、それでもいいですし、「echo」で追記してもいいかと思います。

UUID=XXXX-XXXX  /media/filesv   exfat   defaults        0       2

「UUID=」の次は環境によって異なります。
前の記事と同様に「blkid」コマンドで確認しました。

apk add blkid
blkid

SAMBAインストール&設定

ファイル共有をするので、sambaをインストールします。sambaの設定値を永続化するためには以下の2行目、3行目の実行が必要になります。
4行目では、ファイル共有で使用するrootユーザを追加しています。

apk add samba
lbu include /var/lib/samba/private/
lbu exclude /var/lib/samba/private/msg.sock/
pdbedit -a -u root

マウントしたフォルダをrootユーザで共有します。「/etc/samba/smb.conf」の最後に以下を追記してください。

[root]
comment = root
path = /media/filesv/
browseable = yes
writeable = yes
create mask = 0777
directory mask = 0777
guest ok = no
guest only = no
valid users = pi,root
force user = root

以下のコマンドを実行しSAMBAサーバーを自動起動するようにします。

rc-update add samba
rc-service samba start

以下のコマンドを実行して、設定を永続化してください。

lbu commit -d

rebootコマンドで再起動したら、SMB経由でアクセスできるようになります。

Discussion