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

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

CentOS 8.2.2004をRaspberryPi 4 Model Bへインストール後の初期設定

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

目次

概要

 Raspberry Pi 4 Model Bを購入後、使いみちを考えた結果、 開発したアプリケーションの構成管理サーバとして利用することにしました。 OSは使い慣れているRed Hat系で無料のものが良かったのでCentOS 8を選定。 今後手始めにGitLabをインストール予定ですが、その前にOSの初期設定を行ったので その時の作業メモを残しておきます。

 初めて利用するミドルウェアをインストールして検証するため、 firewalldの停止やSELinuxの無効化などセキュリティレベルをあえて下げていますが、 検証が終わって本格利用する時は元に戻す予定です。

構成

サーバ・ハードウェア構成

 ハードウェアはRaspberry Pi 4 Model Bのメモリ4GBモデルを利用しました。 ハードウェアスペックは以下のとおりです。 記載を省略していますが、モニタ、キーボード、マウスもラズパイに接続しています。

■ハードウェアスペック
項目内容
SoCBroadcom BCM2711
CPUARM Cortex-A72 1.5GHz
GPUBroadcom VideoCore VI Dual Core 500MHz
メモリLPDDR4 SDRAM 4GB
有線ネットワークGigabit Ethernet
microSDカード(システム用)microSDHCカード 32GB

サーバ・ソフトウェア構成

OS

CentOS Linux release 8.2.2004 (Core)

ソフトウェア・パッケージ

  • CentOS-Userland-8-aarch64-RaspberryPI-Minimal-4-sda.raw.xz

環境構築

インストール

Raspberry Pi 4のシステムディスク準備

 OSのバージョンは異なりますが、以下の手順に沿ってラズパイ4用のシステムディスク(microSDカード)を準備しています。

 CentOS 7.8.2003をRaspberry Pi 4のmicroSDカードへインストール

 使用したCentOS 8.2.2004のOSイメージは下記ページからダウンロードしました。

 CentOS-Userland-8-aarch64-RaspberryPI-Minimal-4-sda.raw.xz

設定

タイムゾーンの設定

 OSインストール後の初期状態ではタイムゾーンの設定がUTCとなっているので、日本とは時刻が9時間ズレています。 タイムゾーンに東京を設定し、JST(日本標準時)を表示できるように変更します。

# timedatectl
               Local time: Tue 2021-04-13 21:44:56 UTC
           Universal time: Tue 2021-04-13 21:44:56 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: Wed 2021-04-14 06:46:22 JST
           Universal time: Tue 2021-04-13 21:46:22 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

ルートファイルシステムの拡張

 CentOSのOSイメージをmicroSDカードに書き込む方法でOSをインストールした後は、 microSDカードの容量に関係なくルートパーティションのサイズが2.2GBとなっています。 そのうち70%をOSが使用しているので、残りは30%(約650MB)しかなく、 ミドルウェアをインストールしたりログが書かれることを考えると小さすぎます。 また、microSDカードに空きがあるままだともったいないので、空き容量を全て ルートファイルシステム(ルートパーティション)の拡張に使うこととします。

# fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 29.2 GiB, 31322013696 bytes, 61175808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09fa559b

Device         Boot   Start     End Sectors  Size Id Type
/dev/mmcblk0p1 *       8192  593919  585728  286M  c W95 FAT32 (LBA)
/dev/mmcblk0p2       593920 1593343  999424  488M 82 Linux swap / Solaris
/dev/mmcblk0p3      1593344 6281215 4687872  2.2G 83 Linux ←ルートパーティションは2.2GB
# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        2241560 1536760    664980  70% / ←ルートファイルシステムはOSだけで70%使用済み
devtmpfs         1911148       0   1911148   0% /dev
tmpfs            1944428       0   1944428   0% /dev/shm
tmpfs            1944428   24964   1919464   2% /run
tmpfs            1944428       0   1944428   0% /sys/fs/cgroup
/dev/mmcblk0p1    292696   54872    237824  19% /boot
tmpfs             388884       0    388884   0% /run/user/0
# rootfs-expand ←ルートファイルシステムの拡張

/dev/mmcblk0p3 /dev/mmcblk0 3
Extending partition 3 to max size ....
CHANGED: partition=3 start=1593344 old: size=4687872 end=6281216 new: size=59582431,end=61175775
Resizing ext4 filesystem ...
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/mmcblk0p3 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/mmcblk0p3 is now 7447803 (4k) blocks long.

Done.
# fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 29.2 GiB, 31322013696 bytes, 61175808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x09fa559b

Device         Boot   Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *       8192   593919   585728  286M  c W95 FAT32 (LBA)
/dev/mmcblk0p2       593920  1593343   999424  488M 82 Linux swap / Solaris
/dev/mmcblk0p3      1593344 61175774 59582431 28.4G 83 Linux ←ルートパーティションが28.4GBに拡張された
# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root       29259424 1542352  27677252   6% / ←ルートファイルシステムも拡張され使用率6%となった
devtmpfs         1911148       0   1911148   0% /dev
tmpfs            1944428       0   1944428   0% /dev/shm
tmpfs            1944428   24968   1919460   2% /run
tmpfs            1944428       0   1944428   0% /sys/fs/cgroup
/dev/mmcblk0p1    292696   54872    237824  19% /boot
tmpfs             388884       0    388884   0% /run/user/0

有線ネットワークの設定

 OSインストール後はIPアドレスなどネットワークの設定をDHCPで取得するようになっています。 サーバとして利用するにはIPアドレスが動的に変わると都合が悪いので、ネットワーク設定を固定にします。

# nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  b9f7a826-6728-32e7-abaa-6698b85bb041  ethernet  eth0 ←設定対象の有線ネットワークコネクション名を確認
# ip a ←設定変更前のネットワーク設定・状態を確認
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 ←設定変更対象の有線ネットワーク
    link/ether dc:a6:32:8f:0d:37 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.252/24 brd 192.168.0.255 scope global dynamic noprefixroute eth0
       valid_lft 82693sec preferred_lft 82693sec
    inet6 fe80::a08c:88fc:1fbf:e040/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
# nmcli connection modify "Wired connection 1" ipv4.address 192.168.0.106/24 ←IPアドレスの設定
# nmcli connection modify "Wired connection 1" ipv4.gateway 192.168.0.1 ←ゲートウェイの設定
# nmcli connection modify "Wired connection 1" ipv4.dns 192.168.0.1 ←DNSサーバの設定
# nmcli connection modify "Wired connection 1" ipv4.method manual ←ネットワークを手動設定に変更
# nmcli connection down "Wired connection 1" ←設定変更を反映させるためにネットワークの停止
# nmcli connection up "Wired connection 1" ←ネットワークの起動
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
# ip a ←設定変更後のネットワーク設定・状態を確認
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:8f:0d:37 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.106/24 brd 192.168.0.255 scope global noprefixroute eth0 ←設定変更が反映されている
       valid_lft forever preferred_lft forever
    inet6 fe80::a08c:88fc:1fbf:e040/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

firewalldの停止

 今回はARM版ミドルウェアの動作検証目的で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:07 JST; 2 years 9 months ago ←起動状態
     Docs: man:firewalld(1)
 Main PID: 316 (firewalld)
    Tasks: 2 (limit: 23888)
   CGroup: /system.slice/firewalld.service
           mq316 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

 6月 22 20:12:00 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
 6月 22 20:12:07 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
 6月 22 20:12:07 localhost firewalld[316]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure config>
# systemctl disable firewalld.service ←firewalldの自動起動無効化
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
# systemctl stop firewalld.service ←firewalldの停止
# 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:12:00 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
 6月 22 20:12:07 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
 6月 22 20:12:07 localhost firewalld[316]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure config>
 4月 14 21:30:01 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
 4月 14 21:30:02 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