Raspbbery Pi4BにCentOS8 streamをインストール

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カードを選択します。

Imajer1

Raspberry Pi4Bの準備

今回購入したデバイス類がこちらです。microSDカードは前の手順でOSイメージを書き込んでおきます。

RaspberryPi4_1

まずはRaspberry Pi4Bの動作確認を行います。ヒートシンクの台座に取りつけ、蓋はせずに起動してみます。下の画像のような形でMicroSDをセット後、HDMIケーブル、電源ケーブル、キーボードを接続し、起動します。念のためログインできるか試しておきます。ユーザーは"root”、パスワード"centos"でログイン出来ればSDカードへのOS書込みはOKです。

RaspberryPi4_3

ヒートシンクの取り付け

起動確認が完了したのでヒートシンクを取り付けます。下記画像のように伝熱用シートを取り付けてヒートシンクケースの蓋を取り付けます。シートの取り付けはピンセットを使いました。蓋を閉めて付属のネジで止めれば準備完了です。

起動と初期設定

起動し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"キーと矢印キーで出来るため慣れればコマンド操作よりも簡単です。

RaspberryPi4_4

注意点として、SSH接続する場合にIPv6を有効にすると接続出来ないため無効にしておきます。

RaspberryPi4_5

以上で初期設定は完了です。

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での運用は諦めることにしました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

one × 5 =