旧モデルのRaspberry Piの活用 - Alpine Linuxの導入

2016年に発売されたRaspberry Pi 3B。登場から10年が経過した現在ではRaspberry Pi 4や5といった後継機種が登場し、性能面では大きな差がついている。CPU性能やメモリ容量やネットワーク機能など、最新モデルと比較すると見劣りする点は少なくない。
だからといってRaspberry Pi 3Bは役目を終えたわけではないと考えている。Linuxには軽量で省リソースなディストリビューションが少なからず存在し、それらを活用することで古いハードウェアでも十分に実用的なサーバや小規模システムとして運用することが出来るのではなかろうか...と言う事で、今回は発売開始から10年を迎えたRaspberry Pi 3Bに軽量Linuxディストリビューションのうちの1つと言われているAlpine Linuxを導入し、家庭内で利用するファイルサーバとして運用を始めた。



古いRaspberry Piの活用について
2016年に複数台のRaspberry Pi 3Bを購入し、クラスタ構成を組んでなんちゃってスパコンを構築し遊んだ。それ以降は年に数回触れる事があったものの箱の中にしまっている状態が殆どだった。
販売開始となった2016年当時はAmazonにて6,000円以内で購入する事が出来た。今となっては2世代も古い機種であるにも関わらず8,000円代半ばまで値上がりしている。2026年5月現在の最新版であるRaspberry Pi 5はRAMが1GBな廉価版は8000円台で入手可能だが、2GB以降はなかなか手を出しづらい価格帯となってしまった。
そこで押し入れの中で眠り続けていたRaspberry Pi 3Bを引っ張り出し、軽量なLinuxディストリビューションであるAlpine Linuxを導入。Raspberry Pi 3Bの有効活用を目論んだ。
 


Raspberry Pi 3Bの仕様
以下は今回の記事の対象であるRaspberry Pi 3Bの大まかな仕様である。
今となっては上位機種であるRaspberry Pi 4や5と比較すると物足りなさを感じるスペックであるが、Alpine Linuxはそんな事は物ともせず軽快に動作する。
・型番:Raspberry Pi3 Model B Element14版
・CPU:Broadcom BCM2837 1.2GHz 4コア ARMv8 Cortex-A53
・RAM:1GB LPDDR2 SDRAM
・LANポート:RJ-45 10BASE-T / 100BASE-TX
・無線LAN:IEEE 802.11b/g/n
・Bluetooth:Bluetooth 4.1(BLE対応)
・USBポート:USB2.0 Standard A x4
・ストレージ:MicroSDカードスロット x1(MicroSDカード 32GB使用)
 


Raspberry Piで動作するAlpine Linuxで何が出来る?
家庭内向けの各種サーバ(ファイルサーバ、Webサーバ、家庭内のネットワークの監視...)の構築および運用。
開発に関しては微妙。標準で導入されているライブラリやシェルがRHELやUbuntu等のような一般的なLinuxディストリビューリョンと異なるため。ただしmuslやBusyBoxで何かやりたいというのであれば話は別。
 


Alpine Linuxの導入の準備
1.Alpine Linuxのイメージファイルのダウンロード
VirtualBoxやLimbo PC Emulatorといった仮想環境ではあるが過去に触れた事があるという理由で、Raspberry Pi 3Bに導入するするOSとしてAlpine Linuxを選んだ。

以下のページにアクセスし、RASPBERRY PI欄内のaarch64版(2つあるうちの.tar.gzの方)をダウンロード。
今回は当記事の公開時の最新版である alpine-rpi-3.23.4-aarch64.tar.gz をダウンロードした。
https://www.alpinelinux.org/downloads/


2.MicroSDの準備
ドライブレコーダーや監視カメラで使用される、書き換え耐久性が高いHigh Endurance版のMicroSDを使用。1週間で12時間程度の運用につき常時電源ONという環境ではない為、年単位での長期保存に期待。

MicroSDの初期化は、Raspberry Pi ImagerのWindows版のものを使用。
Micro SDにAlpine Linuxを入れる前に、Windows端末にてMicroSDカードをFAT32でフォーマットする。
自分の環境(macOS 26.5/MacBook Pro 2020 Intel版)の場合、macOS環境ではRaspberry Pi ImagerでMicroSDのフォーマットに長時間を要する、macOS環境ではMicroSDを正常に認識出来ない等の事象が度々発生した事から、MicroSDのフォーマットはWindows欄末で実施している。
https://www.amazon.co.jp/dp/B0B21FFXQ9/ SanDisk MicroSDカード 32GB
https://www.raspberrypi.com/software/ Raspberry Pi Imager


3.Alpine LinuxをMicro SDカードに保存
続いてalpine-rpi-3.23.4-aarch64.tar.gz を展開し、展開して出てきたフォルダやファイル全て(apksフォルダからstart4.elfまで)を選択しコピー、MicroSDカードの中にペーストする。マウスカーソルで全選択しそのまま貼り付けで良い。
そのMicroSDカードをRaspberry Pi 3BのMicroSDスロットに挿入。
続いて、Raspberry Pi 3Bに外付けモニター、USBキーボード、LANケーブルを接続し、電源を投入。
モニターにAlpine Linuxの起動ログが出力される事を確認する。



Alpine Linuxのインストール
1.Alpine Linuxにログイン
Raspberry Pi 3Bに電源投入後、Alpine Linuxの起動ログが出力さる。
起動ログの出力開始から約20秒後、モニターにログインプロンプトが出力される。

  OpenRC 0.63 is starting up Linux 6.12.81-0-rpi (aarch64)

* /proc is already mounted
* Mounting /run ...
* /run/openrc: creating directory
* /run/lock: creating directory
* /run/lock: correcting owner
:
省略
:
* Starting busybox syslog ...
* WARNING: clock skew detected!
* Starring firstboot ...

Welcome to Alpine Linux 3.23
Kernel 6.12.81-0-rpi on aarch64 (/dev/tty1)

localhost login:

 
ログインプロンプトが出力されたら、ユーザ名 root を入力しAlpine Linuxにログインする。
この段階ではユーザ名rootを入力しEnterキーを叩くとパスワード無しでログイン出来る。
続いて setup-alpine コマンドを叩き、Alpine Linuxのセットアップに進む。

localhost login: root
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <https://wiki.alpinelinux.org/>.

You can setup the system with the system with the command: setup-alpine

You may change this message by editing /etc/motd.

localhost:~# setup-alpine


2.キーマップの設定
最初に、Alpine Linuxのインストール時とそれ以降に使用するキーボードのレイアウトを設定する。
自分の環境では日本語109配列(ただしSSHログインの際はMacBookの日本語キーボード)を使用している為、jp を入力しEnterキーを叩く。
続けて出力される Select variant (or 'abort'): も jp を入力する。

 ALPINE LINUX INSTALL
----------------------

 Keymap
--------
af    al    an    ara   at    az    ba    bd    be    bg    br    brai   by    ca    ch...
ir    is    it    jp    ke    kg    kr    kz    la    latam lk    lt     lv    ma    md...
tn    tr    tw    ua    us    uz    vn

Select keyboard layout: [none] jp

jp-OADG109A jp-dvorak    jp-kana    jp-mac     jp

Select variant (or 'abort'): jp

* Setting keymap ...                                                                [ ok ]

 

3.ホスト名の設定
Alpine Linuxのホスト名をここで設定する。
当環境のホスト名はrpsv99である為、rpsv99を入力しEnterキーを叩く。

 Hostname
----------
Enter system hostname (fully qualified form, e.g. 'foo.example.org') [localhost] rpsv99

 

4.ネットワークの設定
続いてAlpine Linuxが使用するIPアドレスを設定する。当環境では有線LANを使用し無線LANは使用しない。
有線LANの設定では[eth0]でEnterキーを叩く。
当環境ではeth0にアサインするIPアドレスはAlpine Linuxのインストール後に設定する為、ここではdhcpのままでEnterキーを叩く。
続けて無線LANの設定に進むが、無線LANは使用しない為 done を入力しEnterキーを叩く。
その後に出力されるログの中で、IPアドレスが自動でアサインされる事を確認する。

 Interface
-----------
Available interfaces are: eth0 wlan0.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth0] 
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp]

Available interface are: wlan0.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [wlan0] done
Do you want to do any manual network configuration? (y/n) [n]

udhcpc: started, v1.37.0
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.3.18, server 192.168.3.1
udhcpc: lease of 192.168.3.18 obtained from 192.168.3.1, lease time 86400

 

5.rootアカウントのパスワード設定
ここでrootアカウントのパスワードを設定する。

 Root Password
---------------
Changing password for root
New password:
Retype password:
passwd: password for root changed by root


6.タイムゾーンの設定
日本国内での運用の為、Japanを入力しEnterキーを叩く。
この後「WARNING: clock skew detected!」が出力されシステムクロックのずれが指摘されるが、Alpine Linuxのインストール中につきどうしようも出来ないため、今の段階ではこのWARNINGを放置しても問題無い。

 Timezone
----------
Africa/      Austorallia/  Cuba       Etc/       GMT+0       Iceland      Kwajalein ...
America/     Brazil/       EET        Europe/    GMT-0       Indian/      Libya ...
Antarctica/  CET           EST        Factory    GMT0        Iran         MET ...
Arctic/      CST6CDT       EST5EDT    GB         Greenwich   Israel       MST ...
Asia/        Canada/       Egypt      GB-Eire    HST         Jamaica      MST7MDT ...
Atlantic/    Chile/        Eire       GMT        HongKong    Japan        Mexico/ ...

Which timezone are you in? (for '?' or 'none') [UTC] Japan

 * WARNING: clock skew detected!
 * Seeding random number generator ...
 * WARNING: clock skew detected!
 * Starting busybox acpid ...
 * Starting busybox crond ...

 

7.プロキシの設定
当環境ではプロキシを使用しない為、noneのままEnterキーを叩き、次の設定に進む。

 Proxy
-------
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]

 

8.NTPの設定
NTPクライアントで使用するツールをBusyBox、OpenTPD、Chrony、未使用の中から選択する。
自分の環境ではchronyを使用する為、[chrony]のままEnterキーを叩く。
するとNTPクライアントが起動する。

 Network Time Protocol
-----------------------
Tue Nov 18 06:29:32 JST 2025
Which NTP client to run? ('busybox', 'opentpd', 'chrony' or 'none') [chrony]

ntpd: setting time to 2026-05-30 20:26:45.476425 (offset +16715158.455249s)
 * service ntpd added to runlevel default
 * Starting busybox ntpd ...

 

9.APKリポジトリの設定
APKパッケージのダウンロード元を選択する。
管理者によるURLの選択や、一番速い所のURLなどが選択可能だが、当環境では候補として出力されている[1]のままEnterキーを叩く。
ここでsキーを叩くと、各国にあるミラーサイトが出力される。
ちなみに[1]は各国にあるミラーサイトではなく、Alpine Linuxプロジェクトが管理しているサイトである。

 APK Mirror
------------
 (f)    Find and use fastest mirror
 (s)    Show mirrorlist
 (r)    Use random mirror
 (e)    Edit /etc/apk/repositories with text editor
 (skip) Skip setting up apk repositories

Enter mirror number or URL: [1]
Updating repository indexes... done.

各国のミラーサイトに関しては以下のリンク先を参照。日本国内には4箇所ある事が分かる。
https://mirrors.alpinelinux.org/
 

10.ユーザアカウントの設定
システムを利用するユーザのアカウントを作成する。
ユーザアカウントの作成のタイミングはお好み次第だが、自分の環境ではアカウント作成はAlpine Linuxのインストール後に実行する為、[no]のままEnterキーを叩き、当手順はスキップする。
続いてAlpine Linux内で動作するSSHサーバをOpenSSH、DropBear、未使用の中から選択する。
当環境ではOpenSSHを使用する為、[openssh]のままEnterキーを叩く。
rootアカウントのsshログインを許可するか聞かれるので、デフォルト設定の[prohibit-password]のままEnterキーを叩く。
続いてSSHキーの設定に進むが、当環境では使用しない為[none]のままEnterキーを叩く。

 User
------
Setup a user? (enter a lower-case loginname, or 'no') [no]
Which ssh server? ('openssh' or 'dropbear' or 'none') [openssh]
Allow root ssh login? ('?' for help) [prohibit-password]
Enter ssh key or URL for root (or 'none') [none]
 * service sshd added to runlevel default
 * Caching service dependencies ...
ssh-keygen: generating new host keys: RSA ECDSA ED25519
 * Starting sshd ...

 

11.Alpine Linuxのシステムの保存先のディスクの設定とインストール
当環境では、Raspberry Piで動作するAlpine Linuxでよく見かけるディスクレス環境ではなく、一般的なオンプレ環境としてAlpine Linuxを導入する。
No disks available. Try boot media /media/mmcblk0p1? では yキーを叩く。
isoファイルを使ってVirtualBoxやProxmox等のような仮想環境でのインストールに慣れていると、No disks availableなのに yキー叩くのかよと違和感を覚えるところだが、ここでは迷わずyキーである。
Available disks are:に続いて、ディスクの名称と容量が出力される。
 
続いて、どのディスクを使うか聞いてくるので、認識された mmcblk0 を入力し、Enterキーを叩く。
続いて、ディスクmmcblk0の容量が出力され、用途が聞かれる。出力される容量が実際の容量との間で大きな差分が無い事を確認し、一般的なサーバのように普通にOSをインストールする為、sysを入力する。
最後に、mmcblk0の中身を消去しAlpine Linuxのインストールを進めるか聞かれる。yキーを叩き、Alpine Linuxのインストールを進める。

 Disk & Install
----------------
No disks available. Try boot media /media/mmcblk0p1? (y/n) [n] y
 * WARNING: you are stopping a sysinit service
 * Unmounting /.modloop ...
Available disks are:
  mmcblk0       (31.9 GB  )

Which disk(s) would you like to use? (or '?' for help or 'none') [none] mmcblk0

The following disk is selected:
  mmcblk0       (31.9 GB  )

How would you like to use it? ('sys', 'data', 'crypt', 'lvm' or '?' for help) [?] sys
WARNING: opening /media/mmcblko1p/apks/aarch64/APKINDEX.tar.gz: No such file or directory
* /usr/sbin/ntpdate-raspberrypi-bootloader: WARNING: no kernel found

WARNING: The following disk(s) will be erased:
  mmcblk0       (31.9 GB  )

WAENING: Erase the above disk(s) and continue? (y/n) [n] y
Partition #1 contains a vfat signature.
Partition #2 contains a ext4 signature.
Creating file systems...
mkfs.fat 4.2 (2021-01-31)
Installing system on /dev/mmcblk0p2:
:
省略
:
Installation is complete. Please reboot.
rpsv99:~#

 

少しの間待つと、Installation is complete. Please reboot.が出力されプロンプトが返ってきた。
ここでrebootコマンドを叩き、ここでAlpine Linuxを再起動させる。
ログインプロンプトが返ってきたら、上記で設定したパスワードを使用しrootアカウントでログインする。

rpsv99:~#
rpsv99:~# reboot
rpsv99:~# * Stopping sshd:
:
省略
:
Welcome to Alpine Linux 3.23
Kernel 6.12.81-0-rpi on aarch64 (/dev/tty1)

rpsv99 login:

 

ヘッドレスインストールではなく通常どおりのインストールで完了している事を確認する。
df -hコマンドを叩き、Sizeの全体の合計がMicroSDの容量とほぼ同じである事、
Filesystemの列にて、/dev/mmcblk0p2と/dev/mmcblk0p1が存在している事、
/dev/mmcblk0p2が/を掴んでいる事と/dev/mmcblk0p1が/bootを掴んでいる事を確認する。

rpsv99:~# df -h
Filesystem             Size       Used  Available Use% Mounted on
devtmpfs              10.0M          0      10.0M   0% /dev
shm                  453.4M          0     453.4M   0% /dev/shm
/dev/mmcblk0p2        28.8G      84.7M      27.2G   0% /
tmpfs                181.4M     120.0K     181.3M   0% /run
/dev/mmcblk0p1       299.4M      39.9M     259.5M  13% /boot
tmpfs                453.4M          0     453.4M   0% /tmp
rpsv99:~# 

 
もしMounted onの列にて /media/mmcblk0p1などのように/media/ディレクトリが見えたら通常どおりのインストールは失敗しているので、Raspberry Piの電源を落とし、MicroSDカードの内容を全て削除し、もう一度最初からAlpine Linuxのインストールを実施する。



この後にやること
Alpine Linuxのインストールが正常に完了できたところで、これより初期設定に進む。

1.ユーザアカウントの追加
adduserコマンドでユーザアカウントを作成する。RHELやDebian等のLinuxディストリビューションとは異なり、useraddコマンドは実行出来ない。
ユーザアカウントの作成後、/homeディレクトリ内に新規作成したアカウントのホームディレクトリが作成されている事を確認する。

rpsv99:~# adduser test
Changing password for test
New password: 
Retype password: 
passwd: password for test changed by root
rpsv99:~# 
rpsv99:~#
rpsv99:~# ls /home
test
rpsv99:~# 

 

2.Alpine Linuxのパッケージリポジトリの追加とアップデート
導入したいパッケージを以下にて確認し、導入したいパッケージがcomminutyにて見つかった場合は、/etc/apk/repositoriesファイル内のcomminutyのリポジトリの行頭にあるコメントアウトを外す。
edgeのリポジトリで見つかった場合は、以下の出力例を参照しedgeのリポジトリを追記する。
編集後、apk updateとapk upgradeコマンドを叩き、OSと導入済みのパッケージを更新する。
https://pkgs.alpinelinux.org/packages Alpine Package Filter

rpsv99:~# cat /etc/apk/repositories 
#/media/mmcblk0p1/apks
http://dl-cdn.alpinelinux.org/alpine/v3.23/main
http://dl-cdn.alpinelinux.org/alpine/v3.23/community
http://dl-cdn.alpinelinux.org/alpine/edge/testing

rpsv99:~#
rpsv99:~# apk update
v3.23.4-318-g6bc1e744a1d [http://dl-cdn.alpinelinux.org/alpine/v3.23/main]
v3.23.4-318-g6bc1e744a1d [http://dl-cdn.alpinelinux.org/alpine/v3.23/community]
v20260127-10641-g7619f6d99bc [http://dl-cdn.alpinelinux.org/alpine/edge/testing]
OK: 34425 distinct packages available
rpsv99:~#
rpsv99:~#
rpsv99:~# apk upgrade
:
(省略)
(初回実行時は、大量のパッケージのアップデートが実行される)
:
rpsv99:~# 

 

3.パッケージのインストール
エディタやシェル、ファイアウォール、サーバ等、目的に応じてパッケージをインストールする。
自分の環境では、apkコマンドで以下のパッケージをインストールした。
これらのパッケージの設定に関してはGoogleで検索すると多数ヒットする為、当記事内ではパッケージのインストールコマンドおよび各パッケージの設定に関しては割愛する。
・エディタ:Neovim
・シェル:zsh
・パケットフィルタ・ファイアウォール:awall、iptables
・サーバ:samba
・上記を動作させる為に必要なツール:avahi、dbus
・その他:neofetch、rng-tools
 

当記事の手順を再現させて、もう1台のRaspberry Pi 3BにAlpine Linuxをインストールした。
共有ディレクトリ内にファイルをコピーしたり、デスクトップ上にファイルを戻す等、動作確認を行なった。
 
 

当記事はここまで。
その後の流れは前回の記事「東京都内で一番高い場所でサーバを運用してみた」に至る。
https://debslink.hatenadiary.jp/entry/20260521/1779293777 東京都内で一番高い場所でサーバを運用してみた

この後の話。Alpine LinuxのinitシステムはOpenRCが採用されている。OpenRCの動作に興味がある為、OpenRCの開発元であるGentooプロジェクトのサイトにてOpenRCの仕組みや動作について勉強する。
 
 

Alpine Linux関連の情報、参照サイトなど
https://www.alpinelinux.org/ Alpine Linux
https://www.alpinelinux.org/releases/ RELEASE BRANCHIES
https://pkgs.alpinelinux.org/packages Packege Index
https://security.alpinelinux.org/ Security Issue Tracker
https://www.alpinelinux.org/downloads/ Alpine Linuxのダウンロードサイト
https://www.alpinelinux.org/releases/ Alpine Linuxのリリースノート
https://wiki.gentoo.org/wiki/OpenRC/ja OpenRC - Gentoo Wiki
 
https://www.amazon.co.jp/dp/B01CD5VC92/ Raspberry Pi 3B
https://www.amazon.co.jp/dp/B0CCD2W5VG/ ElectroCookie Raspberry Pi 3 アルミミニタワーケース
https://www.amazon.co.jp/dp/B08Z37BRFK/ kksmart モバイルモニター 15.6インチ
https://www.amazon.co.jp/dp/B01K3EGFXI/ サンワサプライ USBキーボード 日本語109A配列
https://www.amazon.co.jp/dp/B09T3C758Q/ Raspberry Pi 3B電源 5V 3A スイッチ付き
https://www.amazon.co.jp/dp/B0B21FFXQ9/ SanDisk MicroSDカード
 
 

Raspberry Pi関連の記事
https://debslink.hatenadiary.jp/entry/20160724/1469358050 Raspberry Pi3でスパコン遊び
https://debslink.hatenadiary.jp/entry/20160801/1469980976 Raspberry Pi3でスパコン遊び その2
https://debslink.hatenadiary.jp/entry/20160827/1472285472 Raspberry Pi3でスパコン遊び その3
https://debslink.hatenadiary.jp/entry/20160902/1472819758 Raspberry Pi3でスパコン遊び その4
https://debslink.hatenadiary.jp/entry/20160922/1474549241 Raspberry Pi3でスパコン遊び その後...
https://debslink.hatenadiary.jp/entry/20231104/1699073616 Raspberry Pi3 Model BにOpenBSDをインストール
https://debslink.hatenadiary.jp/entry/20260102/1767319604 Raspberry Pi 3BにOracle Linux 9をインストールした
https://debslink.hatenadiary.jp/entry/20260117/1768615582 Raspberry Pi 4BにNixOSを導入しファイルサーバを構築した
https://debslink.hatenadiary.jp/entry/20260521/1779293777 東京都内で一番高い場所でサーバを運用してみた
 
 

Alpine Linux関連の記事
https://debslink.hatenadiary.jp/entry/20200418/1587204948 AndroidスマホでAlpine Linuxを動かす
https://debslink.hatenadiary.jp/entry/20211024/1635075047 Alpine Linuxの保守用コマンド
https://debslink.hatenadiary.jp/entry/20211228/1640668431 Alpine LinuxでAwallを使ってiptables設定
https://debslink.hatenadiary.jp/entry/20220101/1640973274 Alpine LinuxのFTPで暗号化通信 FTPS編
https://debslink.hatenadiary.jp/entry/20220111/1641903376 Alpine LinuxのFTPで暗号化通信 SFTP編
https://debslink.hatenadiary.jp/entry/20260521/1779293777 東京都内で一番高い場所でサーバを運用してみた
https://debslink.hatenadiary.jp/entry/20260531/1780218046 旧モデルのRaspberry Piの活用 - Alpine Linuxの導入