AlmaLinux9.3 Setup for ARCS6 FRONT PAGE
最終更新日:2024/10/01

コレは何?/What is this?

AlmaLinuxでARCS6を動かすためのセットアップ手順。AlmaLinux9.3Minimal導入手順Ver1。 リアルタイム性を何よりも重視した設定になってます。
注意:本手順は「端末を安全なネットワークに接続すること」を前提にしています。

手順書の読み方

灰色背景

はコマンドを示し,

Italic斜体文字

は設定ファイルの編集内容を示します。 puttyなどでwindows端末から接続し,コマンドか編集内容をCtrl+Cでコピー, puttyの画面上にフォーカスを移して右クリックでペースト,そうするとラクに作業ができます。

1. インストール

https://almalinux.org/からMinimal版のISOをDLしてDVD-Rに焼く。 そんで、AlmaLinux-9.3-x86_64-minimal.iso を普通にインストール。
注:インストール時にrootパスワードを設定、「パスワードによるroot SSHログインを許可」にチェック。

2. ネットワーク接続の設定

2.1 NICが認識されてるか確認

ip a

loだけでなく enp**s0 が出現していればNICは認識されている

2.2 ネットワーク設定

nmtui

画面に従って適宜設定
[x] Automatically connect
↑にチェックして,Activateも実行
ホスト名も適宜設定

2.3 外に出れるか確認

ping www.google.co.jp

2.4 Windows端末からputtyを使ってSSHで繋げるか確認

以降,すべてSSH経由でWindows端末から操作する
コマンドは,[Ctrl+C]でコピーして,puttyの画面上で[右クリック]すると簡単

3. SElinuxを切る

怒り狂う方も居るだろうが,

vi /etc/selinux/config
SELINUX=enforcing → SELINUX=disabled

上記に変更。もちろん安全な信頼の置けるネットワーク環境のみでやってネ。我々はリアルタイム性を第一にしている。

4. 時刻合わせ

この手順は舐めて飛ばしてはいけない。gccのコンパイルが不完全になる可能性がある。

4.1 chronyのインストール

dnf install chrony

4.2 設定ファイルをいじる

vi /etc/chrony.conf
pool 2.cloudlinux.pool.ntp.org iburst ←先頭に#を付けてコメントアウト

代わりに以下を追記(長岡技大の例)

server ntps.nagaokaut.ac.jp iburst

4.3 chrony起動

systemctl start chronyd

4.4 時刻をNTPで合わせて同期状態を確認

chronyc makestep 1 -1
chronyc tracking

4.5 タイムゾーン設定

timedatectl set-timezone Asia/Tokyo

4.6 時刻確認

date

5.4 ハードウェアクロックも合わせる

hwclock -w

下記のエラーがでるときはハードウェアクロックを持っていない計算機(ラズパイなど)なので諦める
hwclock: Cannot access the Hardware Clock via any known method.

5. アップデート

dnf update
dnf upgrade

6. 不要なデーモン・サービスの停止

6.1 まず,バックグラウンドで動作中のデーモンを見てみる

systemctl list-unit-files -t service

こいつらはリアルタイム性を阻害するので,可能な限り消していくのがここでの目標。

6.2 enabledになっているのを片っ端から可能な限り止めていく

systemctl disable auditd.service
systemctl disable firewalld.service
systemctl disable irqbalance.service
systemctl disable kdump.service
systemctl disable lvm2-monitor.service
systemctl disable microcode.service
systemctl disable nis-domainname.service
systemctl disable rsyslog.service
systemctl disable selinux-autorelabel-mark.service
systemctl disable sssd.service

注意:autovt@.service と dbus-broker.service は止めないこと。正常起動できなくなる。
(firewalldの行は安全な信頼の置けるネットワーク環境のみでやってネ)

6.3 disabledになったか確認

systemctl list-unit-files -t service

6.4 念のための再起動

shutdown -r now

正常起動すれば問題ない。

7. 不要なカーネルモジュールの停止

7.1 起動しているカーネルモジュールを見てみる

lsmod

ズラズラっと出てくるこいつらも止める

7.2 ブラックリストへの追加

vi /etc/modprobe.d/blacklist.conf

下記を追記

blacklist ledtrig_audio blacklist snd_hda_codec_realtek blacklist snd_hda_codec_generic blacklist snd_hda_codec_hdmi blacklist snd_hda_intel blacklist snd_intel_dspcfg blacklist snd_intel_sdw_acpi blacklist snd_hda_codec blacklist snd_hda_core blacklist snd_hwdep blacklist snd_pcm blacklist snd_timer blacklist snd blacklist soundcore blacklist acpi_cpufreq blacklist intel_rapl_msr blacklist intel_rapl_common blacklist joydev

(※上記を実施しておくlogin画面で出てくる付随した警告メッセージなども消えるようである)

7.3 念のための再起動

shutdown -r now

正常起動すれば問題ない

7.4 モジュールのチェック

lsmod

これでだいぶ減ったことを確認

8. Sambaの設定

8.1 sambaをインストール

dnf install samba

8.2 共有ディレクトリの作成と権限を多少ガバにする

cd /
mkdir expsrc
chmod 664 expsrc

8.3 設定ファイルの編集

vi /etc/samba/smb.conf

下記のように編集

workgroup = MCLAB load printers = no

[homes] の部分を全てコメントアウト
[printers] の部分も全てコメントアウト
[print$] の部分も全てコメントアウト

一番最後に以下を追記

[expsrc] comment = Experimental Source Code Files browseable = yes writable = yes path = /expsrc valid users = root directory mode = 0664 create mask = 0664

8.4 sambaの起動

systemctl start smb.service
systemctl start nmb.service
systemctl enable smb.service
systemctl enable nmb.service

8.5 sambaパスワードの設定

smbpasswd -a root

所望のパスワード入力

8.6 ここで再起動

shutdown -r now

8.7 動作確認

他のWindows端末から \\ipアドレス で接続でき且つファイルが書き込めるか確認
ダメそうなときは,大抵セキュリティ関係が悪さをしている

9. 画面真っ暗対策とプロンプトの色付け

一定時間経過すると画面が消えてうざい&プロンプトに色を付けたいので,シェルの設定に書き込む。

vi ~/.bashrc

下記を追記

setterm -blank 0 export PS1="\[\e[1;32m\][\u@\h \W]\\$ \[\e[m\]"

10. ARCS6環境構築のための各種インストール

yumコマンドはdnfコマンドに移行されたので読み替えてネ。

10.1 make/gcc/g++/gitのインストール

dnf install make gcc gcc-c++ git

10.2 バージョン確認

make --version
gcc --version
g++ --version

7.3以上になっていればおk。

10.3 ncurses/pngのインストール

dnf install ncurses* libncurses* libpng*

10.4 カーネルソースのインストール

dnf install kernel-devel-`uname -r`

11. 割り込み先CPUを1番目のコアに変更

制御ループ内で勝手に割り込みが入るとリアルタイム性を著しく阻害する。 なので,できるだけ割り込みが1番目のCPUのみに行くように指定して,CPU1番コアには犠牲になってもらう。

11.1 割り込み先CPUのチェック

cat /proc/irq/default_smp_affinity
cat /proc/irq/*/smp_affinity

ズラズラっと16進の表示が出てくる。表示の意味は下記の通り

あとは上記のORで如何様にも設定可

11.1 割り込み先CPUを1番のコアに変更

そこでなるべくコア1に割り込み信号を集中させてリアルタイム性の向上を狙う

vi /etc/profile.d/irqdest.sh

下記を書き込み。

#!/bin/bash (echo 1 > /proc/irq/default_smp_affinity) > /dev/null 2>&1 for i in {0..127}; do (echo 1 > /proc/irq/$i/smp_affinity) > /dev/null 2>&1 done for i in {0..127}; do (echo 1 > /proc/irq/$i/smp_affinity) > /dev/null 2>&1 done for i in {0..127}; do (echo 1 > /proc/irq/$i/smp_affinity) > /dev/null 2>&1 done

上記の同じfor文を3回繰り返している意図は,1回だけだとどうもコア割り込み設定が変わらないのもあるようなので
(ただアレだな,インターフェース系の割り込みだけは別コアにした方がよいかもしれない)

11.3 一旦再起動

shutdown -r now

11.4 割り込み先が1番目のコアになってるかチェック

cat /proc/irq/default_smp_affinity
cat /proc/irq/*/smp_affinity

変えられないのもあるが,おおよそ1番目のコアになってれば大丈夫

12. ARCS6を導入&動作チェック

12.1 ARCS6のインストール

ARCS6の導入方法を参照してARCS6を導入する

12.1 ARCS6の動作チェック

ARCS6のコンパイルと実行を参照してコンパイルして動作できるか確認
011_リアルタイム性の測定 のサンプルコードを用いてリアルタイム性も守れているかチェック

番外編. リアルタイムカーネルの導入(オプション)

PREEMPT_RTのリアルタイムカーネルを入れる場合の手順。 ただし、長岡技大モーション研では使用していません。
現在起動中のカーネルを確認

uname -a

Linux mclab-x 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC …後略

下記でRTカーネルを入れる。

dnf --enablerepo=rt install kernel-rt

インストールされているカーネル情報。+rtが付いてるのが増える

grubby --info=ALL

現在のデフォルトのカーネル

grubby --default-kernel

再起動して、起動時のカーネルの選択画面で「+rt」が付いているものを選ぶ。 現在起動中のカーネルを確認。PREEMPT_RTになっちえるのでオーケー。

uname -a

Linux mclab-x 5.14.0-362.24.2.el9_3.x86_64+rt #1 SMP PREEMPT_RT …後略

しかしPREEMPT_RTにすると手元の環境では、しばらく起動しておくと、 SATAが死に始め、TSCがおかしい&BIOSがぶっ壊れてるとか言われて不安定になり、 しまいにはパニクって死ぬ。やっぱりリアルタイムカーネル、面倒ダナー。

完了!