AlmaLinuxを Raspberry Pi 3 Model B Plusインストールし一通りセットアップしてみた
Contents
概要
こんにちは。
AlmaLinuxを Raspberry Pi 3 Model B Plus Rev 1.3
に対してOSを書き込んで一通りセットアップしてみたいと思います。
imageファイルダウンロード
AlmaLinux-8-RaspberryPi-8.5-20211111.aarch64.raw.xz
最新版を使用したい場合は、AlmaLinux-8-RaspberryPi-latest.aarch64.raw.xz こちらです。
ssh接続
almalinuxのイメージファイルを解凍ソフトで展開すると、AlmaLinux-8-RaspberryPi-8.5-20211111.aarch64.raw
のような、拡張子 .xz
が外れたイメージができます。
こちらをラズパイに書き込むSDカードに対して、 SD Card Formatter
等でフォーマットし、 DD for Windows
で書き込みます。
その後、書き込んだSDカードをラズパイに差し込んで、LANケーブルで接続後、電源を入れて起動します。
数分後、 ssh
できるようになるので、ラズパイのIPに対して以下情報でリモート接続します。
ユーザ名 | パスフレーズ |
---|---|
root | almalinux |
※ラズパイのIPが分からない場合は、HDMIを使用し外部ディスプレイに映し、IPアドレスを確認してください。
SDカードの拡張
/(ルート)
領域で使用率が 77%
となっており、筆者が使用しているSDカードは32GBですが、 2.2GB
しか確保されていない為、確保領域を拡張します。
df -PTh
Filesystem Type Size Used Avail Use% Mounted on
/dev/root ext4 2.2G 1.6G 514M 77% /
devtmpfs devtmpfs 422M 0 422M 0% /dev
tmpfs tmpfs 455M 0 455M 0% /dev/shm
tmpfs tmpfs 455M 18M 438M 4% /run
tmpfs tmpfs 455M 0 455M 0% /sys/fs/cgroup
/dev/mmcblk0p1 vfat 286M 88M 198M 31% /boot
tmpfs tmpfs 91M 0 91M 0% /run/user/0
READMEファイルを見ると、 /(ルート)
領域のサイズを変更したい場合、 rootfs-expand
を打てと記載がありますので、実行します。
cat /root/README
== AlmaLinux 8 ==
If you want to automatically resize your / partition, just type the following (as root user):
rootfs-expand
実行すると以下のように自動的に拡張されます。
rootfs-expand
/dev/mmcblk0p3 /dev/mmcblk0 3
Extending partition 3 to max size ....
CHANGED: partition=3 start=788480 old: size=4687872 end=5476352 new: size=61545439 end=62333919
Resizing ext4 filesystem ...
resize2fs 1.45.6 (20-Mar-2020)
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 7693179 (4k) blocks long.
Done.
/(ルート)
領域の使用率が、 6%
となり、確保領域が、 29GB になったことが確認できます。
df -PTh
Filesystem Type Size Used Avail Use% Mounted on
/dev/root ext4 29G 1.7G 28G 6% /
devtmpfs devtmpfs 422M 0 422M 0% /dev
tmpfs tmpfs 455M 0 455M 0% /dev/shm
tmpfs tmpfs 455M 12M 444M 3% /run
tmpfs tmpfs 455M 0 455M 0% /sys/fs/cgroup
/dev/mmcblk0p1 vfat 286M 88M 198M 31% /boot
tmpfs tmpfs 91M 0 91M 0% /run/user/0
OSアップデート
dnf -y update
→OSアップデートを実施します。
ネットワーク設定
nmtui コマンドを使用し、固定IPで接続できるようにします。
[Edit a connection]→[Wired connection 1]→[<Edit...>]
の順に進み以下項目を埋めます。
全部埋めたら、適用して、 reboot
コマンドで再起動し、先ほど設定した固定IPでssh接続できてばOKです。
項目 | 設定値 |
---|---|
IPv4 CONFIGURATION | <Manual> |
Addresses | {固定IPv4アドレス} |
Gateway | {ゲードウェイIPv4アドレス} |
DNS servers | {DNSサーバIPv4アドレス} |
Ignore automatically obtained routes | スペースキーを押し X ←チェックマークする。 |
Ignore automatically obtained DNS parameters | スペースキーを押し X ←チェックマークする。 |
Require IPv4 addressing for this connection | スペースキーを押し X ←チェックマークする。 |
Automatically connect | スペースキーを押し X ←チェックマークする。 |
Available to all users | スペースキーを押し X ←チェックマークする。 |
日本語化
再度、ssh接続します。
localectl set-locale LANG=ja_JP.UTF-8
→日本語に設定します。
source /etc/locale.conf
→設定を適用させます。
echo $LANG
ja_JP.UTF-8
→ ja_JP.UTF-8
になっていれば問題ありません。
時刻設定
タイムゾーン変更
timedatectl set-timezone Asia/Tokyo
→日本時間へ変更。
date
2022年 2月 8日 火曜日 13:30:52 JST
→JSTになっていれば問題ありません。
同期先変更
chronyの設定で同期先が、 2.cloudlinux.pool.ntp.org
になっているので、 ntp.nict.jp
へ変更します。
cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.cloudlinux.pool.ntp.org iburst
cp -p /etc/chrony.conf /etc/chrony.conf.org
cp -p /etc/chrony.conf /etc/chrony.conf_$(date +%Y%m%d)
sed -i 's/2.cloudlinux.pool.ntp.org/ntp.nict.jp/g' /etc/chrony.conf
systemctl restart chronyd
設定変更後、以下のように、 ntp.nict.jp
になっていれば問題ありません。
chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ ntp-b2.nict.go.jp 1 6 17 58 +304us[ +304us] +/- 4864us
^- ntp-k1.nict.jp 1 6 17 58 +345us[ +345us] +/- 9560us
^- ntp-a3.nict.go.jp 1 6 17 58 +110us[ +110us] +/- 5124us
^* ntp-a2.nict.go.jp 1 6 17 59 -125us[ -188us] +/- 5446us
sysstatの設定
sysstatのインストール・起動
サーバのCPUやDisk I/Oなど各種情報を記録してくれる sysstat
のインストールします。
dnf -y install sysstat
→インストール
systemctl start sysstat
→起動
1分毎に記録するようにする
以下コマンドを全選択してペーストし、設定ファイルへ書き込みます。
/usr/lib64/sa/sa1
や root /usr/lib64/sa/sa2
が存在することを事前に ls
コマンド等で確認しておきます。
echo -n '# Run system activity accounting tool every 10 minutes
*/1 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A' > /etc/cron.d/sysstat
hostnameの変更
以下、コマンドでホスト名が変更できるので任意のホスト名へ変更します。
後にOS再起動をおこなうので、現在のセッションのホスト名は再起動後、もしくは、ログアウト、ログインですることで適用されます。
変更後、 uname -a
コマンド等で確認が可能です。
hostnamectl set-hostname {設定したいホスト名}
Selinuxの無効化
プログラムの動作にSelinuxが邪魔することがあるので、機能を無効化します。
mkdir -p ~/BACKUP_$(date +%Y%m%d)
→バックアップディレクトリを作成します。
cp -p /etc/sysconfig/selinux ~/BACKUP_$(date +%Y%m%d)/selinux_$(date +%Y%m%d)
→設定ファイルをバックアップします。
cp -p /etc/selinux/config ~/BACKUP_$(date +%Y%m%d)/config_$(date +%Y%m%d)
→設定ファイルをバックアップします。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
→Selinuxを無効に置換します。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
→Selinuxを無効に置換します。
書き換え後、以下のようにdisabledになっていれば問題ありません。
diff -s -u ~/BACKUP_$(date +%Y%m%d)/selinux_$(date +%Y%m%d) /etc/sysconfig/selinux
--- /root/BACKUP_20220208/selinux_20220208 2021-11-12 05:24:52.882997206 +0900
+++ /etc/sysconfig/selinux 2022-02-08 14:17:29.560144567 +0900
@@ -4,7 +4,7 @@
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
-SELINUX=enforcing
+SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
diff -s -u ~/BACKUP_$(date +%Y%m%d)/config_$(date +%Y%m%d) /etc/selinux/config
--- /root/BACKUP_20220208/config_20220208 2021-11-12 05:24:52.882997206 +0900
+++ /etc/selinux/config 2022-02-08 14:17:38.492125962 +0900
@@ -4,7 +4,7 @@
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
-SELINUX=enforcing
+SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
これだけでは、無効できないのでOS再起動後、Selinuxの機能が無効になっていることを確認します。
以下、コマンドでOS再起動をします。
shutdown -r now
Selinuxが無効になっているか確認
再度、ssh接続します。
以下、コマンドでDisabledになっていることが確認できれば問題ありません、
getenforce
Disabled
最後に updatedb
コマンドで、 locateコマンドのdb情報を更新しておきます。
Wi-Fi電源管理をOFFにする
電源管理の状態を確認するため、iwconfigパケッジを導入します。
AlmaLinux標準レポジトリに該当パッケージが存在しないのでソースからインストールする形となることに注意します。
上記、リンク中[Wireless Tools latest versions]項目、[Download the latest wireless tools package]をクリックするとソースパッケージをダウンロードできます。
wget https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz
現時点で最新のパッケージをダウンロードします。
tar -zxvf wireless_tools.29.tar.gz
⇒解凍します。
cd wireless_tools.29/
⇒解凍したディレクトリへ移動します。
make
⇒ビルドします。
make install
⇒ビルドしたソースをインストールします。
パス情報が入っていないと実行時に怒られますので、以下記載のように設定ファイルへ追記します。
※ファイルが存在しない場合は新規作成となります。
vi /etc/ld.so.conf.d/custom.conf
/usr/local/include
/usr/local/lib
/usr/local/sbin
ldconfig
⇒設定を適用します。
以下のように実行に必要なライブラリが読み込まれていることを確認します。
ldconfig -p | grep libiw.so
libiw.so.29 (libc6,AArch64) => /usr/local/lib/libiw.so.29
libiw.so (libc6,AArch64) => /usr/local/lib/libiw.so
以下、コマンドでWi-Fi電源管理が有効になっているか確認できます。
Power Management:on
になっている場合、電源管理が有効になっているのでこちらを無効に後術記載のコマンドで実施します。
iwconfig wlan0
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
usr/sbin/iw dev wlan0 set power_save off
⇒こちらのコマンドで電源管理を無効にすることが可能です。
このままですと再起動した際に有効になってしまいますので以下スクリプトを設置し、cron定期実行で自動的に無効になるようにします。
vi wifi-power-management.sh
#!/usr/bin/env bash
# /**************************************************************************
# *
# * init modify : 2022年11月26日(土)
# * modify : 2022年11月26日(土)
# * summary : Raspberry Pi Wifi パワーマネージメント機能を無効化するスクリプト。
# * : Cron Execute Example : */1 * * * * /root/scripts/wifi-power-management.sh > /dev/null 2>&1
# *
# **************************************************************************/
scriptDir=$(dirname "$0")
log_name="wifi-power-management"
std_out_log_dir="$scriptDir/$log_name.log"
manage_str="$(/usr/local/sbin/iwconfig wlan0 | grep "Power Management:on")"
is_power_manage="false"
date_fmt="$(date +%Y%m%d_%H:%M)"
if [ -e "$std_out_log_dir" ]; then
rm -f "$std_out_log_dir"
fi
if [ -n "$manage_str" ]; then
is_power_manage="true"
fi
echo -e "実行時刻:$date_fmt" >> "$std_out_log_dir" 2>&1
if [ "$is_power_manage" = "true" ]; then
{
if /usr/sbin/iw dev wlan0 set power_save off; then
echo -e "\nwifi パワーマネージメント機能無効化に成功しました。"
else
echo -e "\nwifi パワーマネージメント機能無効化に失敗しました。"
fi
} >> "$std_out_log_dir" 2>&1
fi
{
echo -e "\n現在のパワーマネージメント機能状態\n"
/usr/local/sbin/iwconfig wlan0
} >> "$std_out_log_dir" 2>&1
chmod 700 wifi-power-management.sh
⇒スクリプトに実行権限を付与します。
後は、cronに仕込んで定期実行させるだけです。
試しにOS再起動等をおこなってWi-Fi電源管理が無効になっていることを確認するのをお勧めします。
まとめ
almalinuxに対して一通り、セットアップしてみました。
一連の設定をスクリプト化すればもっとスマートにいけますね。
ディスカッション
コメント一覧
まだ、コメントがありません