Raspberry Pi4B他必要なものを揃える
一通りAmazonで購入
とりあえず必要なもののリストです。
- Raspbbery Pi4 model B
- 適当なキーボード
- ケース(放熱を考慮)
- micro HDMIケーブル
- micro SDカード
- 電源
リストの内、キーボードは小型の予備があるので、それ以外を購入します。下記に購入した製品の紹介(Amazonリンク)と選んだ理由を書いていきます。
Raspberry Pi4 model Bの選定
RAMサイズで複数のラインナップがありますが、色々バランスを考えて4GBを選択しました。販売元が複数ありますので信頼できそうなところから購入しました。
ケースの選定
後々、常時稼働のファイルサーバをして使用するので静かな製品が良く、ファン付きは候補から外しました。ただRaspberry Pi4は以前のモデルより性能が向上した分、放熱に苦労するとの情報があるため、ケースごとヒートシンクになっているタイプにしました。
micro HDMIケーブル
Raspberry Pi3BまではHDMI typeA(標準サイズ)が付いていたので手持ちのケーブルでいけますが、Pi4はtypeD(マイクロタイプ)になったので購入する必要がありました。Amaznに安くて信頼できそうなのがあったんで良かったです。ELECOM製品は失敗したことないです。
micro SDカード
さすがにOSを入れるので高耐久タイプにします。本来ならMLCタイプのものを選びたいですが最近は記載が無いので高耐久と記載のあるものがおすすめです。好みでサンディスクのものにします。
電源
電源は怪しげなものも含めて色々ありますが、信頼できそうなスイッチサイエンスのものにしました。これもPi3Bまではmini USB Type-BでしたがPi4からはUSB Type-Cになったので新規購入です。3A出力が必要なようです。
以上で必要なものが揃いました。合計で1万円くらいの出費です。
セットアップ
CentOS8 streamのイメージを取得
CentOSはなんか年末(2020年)ごたごた言ってましたが、私はRedHatに言われるがままStreamを使用します。ということでRaspberry Pi4用イメージを下記リンクから入手。
https://people.centos.org/pgreco/CentOS-Userland-8-stream-aarch64-RaspberryPI-Minimal-4/
これを保存してmicro SDに書き込みます。
最近はRaspberry Pi Imajerで簡単に書き込める
昔は別のソフトを使用してた気がしますが、今はRaspbbery Pi Imajerという簡単にmicro SDにOSを書き込めるソフトがあるのでそれをインストールします。
Raspberry Pi ImagerでCentOS8 streamの書き込み
ダウンロードしたCentOS8のイメージを書き込みます。microSDをPCにセットしてRaspberry Pi Imagerを起動します。"CHOOSE OS"で"Use Custom"を選択しCentOS8 streamを選択します(下記画像を参照)。"CHOOSE SD CORD"でセットしたmicroSDカードを選択します。
Raspberry Pi4Bの準備
今回購入したデバイス類がこちらです。microSDカードは前の手順でOSイメージを書き込んでおきます。
まずはRaspberry Pi4Bの動作確認を行います。ヒートシンクの台座に取りつけ、蓋はせずに起動してみます。下の画像のような形でMicroSDをセット後、HDMIケーブル、電源ケーブル、キーボードを接続し、起動します。念のためログインできるか試しておきます。ユーザーは"root”、パスワード"centos"でログイン出来ればSDカードへのOS書込みはOKです。
ヒートシンクの取り付け
起動確認が完了したのでヒートシンクを取り付けます。下記画像のように伝熱用シートを取り付けてヒートシンクケースの蓋を取り付けます。シートの取り付けはピンセットを使いました。蓋を閉めて付属のネジで止めれば準備完了です。
起動と初期設定
起動しrootユーザー(初期パスワード:centos)でログインしたら、"passwd"コマンドでパスワードを変更します。その後、下記コマンドの順序で新ユーザーの登録とパスワード設定を行います。
# useradd **** //任意のユーザーを追加 # passwd **** //登録ユーザーのパスワード登録
次に、microSDカード領域を全て認識するために"rootfs-expand"コマンドを実行します。これでmicroSDカードの領域を認識出来たはずなので確認しておきます。
# rootfs-expand # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 29830320 2246140 27544360 8% / devtmpfs 1911148 0 1911148 0% /dev tmpfs 1944428 0 1944428 0% /dev/shm tmpfs 1944428 24928 1919500 2% /run tmpfs 1944428 0 1944428 0% /sys/fs/cgroup /dev/mmcblk0p1 292696 55240 237456 19% /boot tmpfs 388884 0 388884 0% /run/user/1000
キーマップの変更
初期状態ではキーマップが英語配列となっています。日本語配列のキーボードを使用している場合、記号の入力等で困るので変更しておきます。
# localectl //現在のキーマップを表示 System Locale: LANG=en_US.UTF-8 VC Keymap: en*** X11 Layout: en*** X11 Model: en*** X11 Options: terminate:ctrl_alt_bksp # localectl set-keymap jp106 //JIS106キーに変更 # localectl //変更後のキーマップを表示 System Locale: LANG=en_US.UTF-8 VC Keymap: jp106 X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
power_save機能の無効化
度々メッセージが出てきて鬱陶しいので無効化しておきます。初期状態では"iw"コマンドが使えないのでインストール。ここからは有線LANでインターネットに接続した状態で行います。
# yum -y install iw
これで"iw"コマンドが使用可能となったため、コマンドでpower_save機能を無効化します。
※この方法では、再起動で再びpower_save機能が有効となります。
# iw dev wlan0 get power_save //power_save機能の状態確認 Power save: on # iw dev wlan0 set power_save off //power_save機能の無効化 # iw dev wlan0 get power_save //power_save機能の状態確認 Power save: off
タイムゾーン変更
初期設定では日本時間ではないため変更しておきます。
# timedatectl set-timezone Asia/Tokyo # date //日本時間に変更出来たか確認
wifiデバイスのドライバインストール
多分ドライバをうまく認識していないため、利用不可をなっています。一応確認してみます。
# nmcli d eth0 ethernet connected Wired connection 1 wlan0 wifi connected elecom5g-036381 p2p-dev-wlan0 wifi-p2p unavailable -- lo loopback unavailable --
使用可能にするためにインターネットからドライバを入手します。
# yum -y install git //クローンを入手するのでgitをインストール # git clone https://github.com/RPi-Distro/firmware-nonfree.git # mv /lib/firmware/brcm{,.org} //元のフォルダ名に".org"を追加 # cp -R firmware-nonfree/brcm /lib/firmware/brcm //クローンをコピー # curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update //rpi-updateをダウンロード # chmod +x /usr/bin/rpi-update # rpi-update //ファームウェアのアップデート # reboot //再起動
再起動後、デバイスを確認するとwifiが利用可能となっていると思います。
# nmcli d DEVICE TYPE STATE CONNECTION eth0 ethernet connected Wired connection 1 wlan0 wifi disconnected -- p2p-dev-wlan0 wifi-p2p disconnected -- lo loopback unmanaged --
ネットワーク設定の変更
TUIという機能があるようでネットワーク設定の一括設定できます。今回はそれを利用して設定します。SSH通信を行うため、DHCPで接続している有線接続はLAN内の固定IP接続(インターネット接続無し)とし、無線接続はDHCPでインターネットへの接続を行う設定にします。
# nmtui
"Edit a connection"で設定を行います。"Activate a connection"でデバイスの有効化・無効化設定が出来ます。操作は基本的に"Enter"キーと矢印キーで出来るため慣れればコマンド操作よりも簡単です。
注意点として、SSH接続する場合にIPv6を有効にすると接続出来ないため無効にしておきます。
以上で初期設定は完了です。
SSH通信を行う
SSHの設定変更
基本的な設定内容は、
- rootログイン禁止
- パスワードログイン許可
- 登録ユーザー以外ログイン禁止
となります。ポートはとりあえず22番のままで行います(後で変更した方がベター)。
# vi /etc/ssh/sshd_config
以下に対応する箇所を変更、追加していきます。追加部分はコメントアウトを外すだけでOKでした。
... PermitRootLogin no #追加(rootログイン禁止) ... PasswordAuthentication yes #変更、コメントアウト削除 ... DenyUsers ALL #追加、すべてのユーザーのログイン禁止 ... AllowUsers *** #追加、ログインユーザー許可ユーザーを選択
設定変更後はリスタートしておきます。
# systemctl restart sshd
ポートの開放
とりあえずLAN内からのアクセスのみ許可し、インターネット環境からのアクセスは禁止します。zoneは"home"と"public"とします。まずは現在の設定を確認します。
# firewall-cmd --get-active-zones public interfaces: eth0 wlan0
有線・無線どちらも"public"に設定されているため、有線を"home"に変更し、"home"のみポート開放します。念のためsshが許可されているか確認もしておきます。
# firewall-cmd --new-zone=home --permanent //homeが無ければ追加(既にある場合は不要) # firewall-cmd --change-interface=eth0 --zone=home --permanent //有線をhomeに変更 # firewall-cmd --add-port=22/tcp --zone=home --permanent //homeの22番ポートを許可 # firewall-cmd --add-service=ssh --zone=home --permanent //homeでsshを許可(許可されている場合は不要) # firewall-cmd --remove-service=ssh --zone=public --permanent //publicでsshを禁止(念のため) # firewall-cmd --reload //リロード # firewall-cmd --list-services --zone=home --permanent //homeのサービスリストを確認 cockpit dhcpv6-client mdns samba-client ssh # firewall-cmd --list-ports --zone=home --permanent //homeのポートリストを確認 22/tcp # firewall-cmd --list-services --zone=public --permanent //publicサービスリストを確認 dhcpv6-client # firewall-cmd --list-ports --zone=public --permanent //publicポートリストを確認
以上の設定でLAN内の端末から接続設定を行います。接続出来れば設定完了です。
その後
半日くらいでフリーズ?
SSHまで設定し、電源を入れっぱなしにしていると平均半日くらいでフリーズを繰り返しました。
CentOSは非公式
ラズパイ用のCentOSはRaspberry Pi財団非公式なので信頼性に疑問がありました。予想通り相性があまり良くないようです。ファイルサーバーとして使用する予定なのでCentOSでの運用は諦めることにしました。