OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

AlmaLinux 8.4をRaspberry Pi 4 Model Bへインストール後の初期設定

カテゴリ:OSSセットアップ | ソフトウェア:Linux | タグ:
最終更新日:2021/09/05 | 公開日:2021/09/05

目次

概要

 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モデルを利用しました。 ハードウェアスペックは以下のとおりです。

■ハードウェアスペック
項目内容
SoCBroadcom BCM2711
CPUARM Cortex-A72 1.5GHz
GPUBroadcom 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
ファイル名:/etc/selinux/config
※以下、該当箇所のみ変更※
SELINUX=enforcing
   ↓変更
SELINUX=disabled
# shutdown -r 0

参考にしたサイト