AlmaLinux 8.4をRaspberry Pi 4 Model Bへインストール後の初期設定
目次
概要
Raspberry Pi 4 Model BにESXi for ARM 7.0.0をインストールしてプライベートクラウドとして使用していましたが、 AlmaLinux 8.4の検証も兼ねてAlmaLinux 8.4 + KVMの構成に変更することにしました。 KVMを導入する前に、まずはAlmaLinux 8.4の基本的なセットアップを行いましたのでその手順を残しておきます。
AlmaLinux 8.4のOSイメージをWindows PCのrufus 3.11を使ってUSBメモリに書き込んでおきます。 このUSBメモリをRaspberry Pi 4BのUSBポートに挿してUSBブートさせたことを前提にした手順となっています。 microSDカードスロットには何も挿さっていません。
USBブートするにはブートローダーが2020年12月以降にリリースされたバージョンになっている必要があります。 それより古いバージョンの場合は事前にブートローダーをバージョンアップさせておきます。
構成
サーバ・ハードウェア構成
ハードウェアはRaspberry Pi 4 Model Bのメモリ8GBモデルを利用しました。 ハードウェアスペックは以下のとおりです。
項目 | 内容 |
---|---|
SoC | Broadcom BCM2711 |
CPU | ARM Cortex-A72 1.5GHz |
GPU | Broadcom VideoCore VI Dual Core 500MHz |
メモリ | LPDDR4 SDRAM 8GB |
有線ネットワーク | Gigabit Ethernet |
USBメモリ(システム用) | SAMSUNG USB 3.1 Flash Drive FIT Plus 128GB (MUF-128AB/EC) |
ディスプレイ | LG 24ML600S-W |
キーボード | FILCO FKBC91MRL/JB2 |
マウス | Logicool M325 |
サーバ・ソフトウェア構成
OS
AlmaLinux 8.4 (Electric Cheetah) aarch64
ソフトウェア・パッケージ
- AlmaLinux-8-aarch64-RaspberryPI-Minimal-4-sda.raw.xz
環境構築
インストール
Raspberry Pi 4のシステムディスク準備
ディストリビューションとバージョン、書き込み先メディアは異なりますが、以下の手順に沿ってラズパイ4用のシステムディスク(USBメモリ)を準備しています。
CentOS 7.8.2003をRaspberry Pi 4のmicroSDカードへインストール
使用したAlmaLinux 8.4のOSイメージは下記ページからダウンロードしました。
AlmaLinux-8-aarch64-RaspberryPI-Minimal-4-sda.raw.xz
設定
タイムゾーンの設定
OSインストール後の初期状態ではタイムゾーンの設定がUTCとなっているので、日本とは時刻が9時間ズレています。 タイムゾーンに東京を設定し、JST(日本標準時)を表示できるように変更します。
# timedatectl Local time: Sat 2021-09-04 08:43:21 UTC Universal time: Sat 2021-09-04 08:43:21 UTC RTC time: n/a Time zone: UTC (UTC, +0000) ←初期設定はUTC System clock synchronized: yes NTP service: active RTC in local TZ: no # timedatectl set-timezone Asia/Tokyo ←タイムゾーンを東京に設定 # timedatectl Local time: Sat 2021-09-04 17:43:40 JST Universal time: Sat 2021-09-04 08:43:40 UTC RTC time: n/a Time zone: Asia/Tokyo (JST, +0900) ←JSTに変わった System clock synchronized: yes NTP service: active RTC in local TZ: no
ロケールとキーマップの設定
OSインストール後の初期状態ではロケールは米国、キーマップも英字キーボードとなっているので、 ロケールを日本、キーマップも日本語キーボードに変更します。
# localectl System Locale: LANG=en_US.UTF-8 ←ロケールは米国 VC Keymap: us ←英字キーボード X11 Layout: n/a # localectl set-locale LANG=ja_JP.utf8 ←ロケールを日本に設定 # localectl set-keymap jp106 ←キーマップを日本語キーボードに設定 # localectl System Locale: LANG=ja_JP.utf8 ←ロケールが日本に変わった VC Keymap: jp106 ←キーマップが日本語キーボードに変わった X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
有線ネットワークの設定
OSインストール後はIPアドレスなどネットワークの設定をDHCPで取得するようになっています。 サーバとして利用するにはIPアドレスが動的に変わると都合が悪いので、ネットワーク設定を固定にします。
# nmcli c ←構成済みのネットワークコネクション名を表示 NAME UUID TYPE DEVICE Wired connection 1 e5d32eab-7330-3ab5-8ec9-da20f9035456 ethernet eth0 ←設定対象のネットワークコネクション名を確認 # ip a 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether dc:a6:32:c7:aa:92 brd ff:ff:ff:ff:ff:ff inet 192.168.0.218/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0 ←変更前のIPアドレス valid_lft 85830sec preferred_lft 85830sec inet6 fe80::cd69:c26d:ef0b:9202/64 scope link noprefixroute valid_lft forever preferred_lft forever # nmcli c mod "Wired connection 1" ipv4.address 192.168.0.108/24 ←IPアドレスの設定 # nmcli c mod "Wired connection 1" ipv4.gateway 192.168.0.1 ←ゲートウェイの設定 # nmcli c mod "Wired connection 1" ipv4.dns 192.168.0.1 ←DNSサーバの設定 # nmcli c mod "Wired connection 1" ipv4.method manual ←ネットワークを手動設定に変更 # nmcli c down "Wired connection 1" && nmcli c up "Wired connection 1" ←設定変更を反映させるためにネットワークの停止・起動 ※TeraTerm等リモート接続の場合はここでネットワーク接続が切れるので新しいIPアドレスで再接続※ # ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether dc:a6:32:c7:aa:92 brd ff:ff:ff:ff:ff:ff inet 192.168.0.108/24 brd 192.168.0.255 scope global noprefixroute eth0 ←変更後のIPアドレス valid_lft forever preferred_lft forever inet6 fe80::cd69:c26d:ef0b:9202/64 scope link noprefixroute valid_lft forever preferred_lft forever
ホスト名の設定
初期状態ではホスト名が localhost になっていますので、任意の名前に変更します 今回は RaspberryPi4B8GB という名前に変更します。
# nmcli general hostname localhost ←変更前のホスト名 # nmcli general hostname RaspberryPi4B8GB # nmcli general hostname RaspberryPi4B8GB ←変更後のホスト名
ルートファイルシステムの拡張
AlmaLinuxのOSイメージをUSBメモリに書き込む方法でOSをインストールした後は、 USBメモリの容量に関係なくルートファイルシステムのサイズが2.4GBとなっていました。 そのうち1.7GBをOSが使用しているので、残りは0.7GBしかなく、 ミドルウェアをインストールしたりログが書かれることを考えると小さすぎます。 また、USBメモリに空きがあるままだともったいないので、空き容量を全て ルートファイルシステムの拡張に使うこととします。 手順としては先にルートパーティションに空き領域を割り当てる形で拡張して、 その後ファイルシステムをパーティションいっぱいまで拡張します。
# parted GNU Parted 3.2 /dev/sda を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) print free モデル: Samsung Flash Drive FIT (scsi) ディスク /dev/sda: 128GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1024B 4194kB 4193kB 空き容量 1 4194kB 304MB 300MB primary fat16 boot, lba 2 304MB 816MB 512MB primary linux-swap(v1) 3 816MB 3216MB 2400MB primary ext4 ←ルートパーティション 3216MB 128GB 125GB 空き容量 ←USBメモリに125GB空きがある (parted) unit s ←表示をバイトからセクタに変更する (parted) print free モデル: Samsung Flash Drive FIT (scsi) ディスク /dev/sda: 250626566s セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 2s 8191s 8190s 空き容量 1 8192s 593919s 585728s primary fat16 boot, lba 2 593920s 1593343s 999424s primary linux-swap(v1) 3 1593344s 6281215s 4687872s primary ext4 6281216s 250626565s 244345350s 空き容量 ←空きセクタの終了位置を確認する (parted) resizepart 3 250626565s ←パーティション番号3の終了位置となるセクタを指定して拡張する (parted) print free モデル: Samsung Flash Drive FIT (scsi) ディスク /dev/sda: 250626566s セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 2s 8191s 8190s 空き容量 1 8192s 593919s 585728s primary fat16 boot, lba 2 593920s 1593343s 999424s primary linux-swap(v1) 3 1593344s 250626565s 249033222s primary ext4 ←空き容量がパーティション番号3に割り当てられた (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。 # resize2fs /dev/sda3 ←パーティション拡張後にファイルシステムを拡張する resize2fs 1.45.6 (20-Mar-2020) Filesystem at /dev/sda3 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 15 The filesystem on /dev/sda3 is now 31129152 (4k) blocks long. # df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/root 117G 1.7G 116G 2% / ←ルートファイルシステムが117Gに拡張された devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 25M 3.8G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 286M 65M 222M 23% /boot tmpfs 782M 0 782M 0% /run/user/0
パスワードの変更
初期状態ではパスワードが almalinux となっています。 そのままだとバレバレでパスワードの意味がないので変更します。
# passwd ユーザー root のパスワードを変更。 新しいパスワード: ←新しいパスワードを入力 新しいパスワードを再入力してください: ←パスワードを再入力 passwd: すべての認証トークンが正しく更新できました。
firewalldの停止
今回はARM版AlmaLinuxを利用してKVMの動作検証目的でOSを準備しているので、firewalldを停止しておきます。 正常に動作しないときに問題の切り分け対象を減らしたいので。 本番運用するときはfirewalldを停止せずに運用します。
# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) ←自動起動有効 Active: active (running) since Fri 2018-06-22 20:12:00 JST; 3 years 2 months ago ←起動状態 Docs: man:firewalld(1) Main PID: 329 (firewalld) Tasks: 2 (limit: 26213) CGroup: /system.slice/firewalld.service mq329 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid 6月 22 20:11:57 localhost systemd[1]: Starting firewalld - dynamic firewall daemon... 6月 22 20:12:00 localhost systemd[1]: Started firewalld - dynamic firewall daemon. 6月 22 20:12:00 localhost firewalld[329]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure config> # systemctl --now disable firewalld.service ←firewalldの自動起動の無効化と停止を同時に実行 Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. # systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) ←自動起動無効 Active: inactive (dead) ←停止状態 Docs: man:firewalld(1) 6月 22 20:11:57 localhost systemd[1]: Starting firewalld - dynamic firewall daemon... 6月 22 20:12:00 localhost systemd[1]: Started firewalld - dynamic firewall daemon. 6月 22 20:12:00 localhost firewalld[329]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure config> 9月 04 18:10:48 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon... 9月 04 18:10:48 localhost.localdomain systemd[1]: firewalld.service: Succeeded. 9月 04 18:10:48 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.
SELinuxの無効化
firewalldと同じ理由で無効化します。 設定変更したあとは変更を反映させるためにOSを再起動します。
# cd /etc/selinux/ # vi config
※以下、該当箇所のみ変更※ SELINUX=enforcing ↓変更 SELINUX=disabled
# shutdown -r 0