最終更新日: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進の表示が出てくる。表示の意味は下記の通り
- f = 0b1111 = 全部のCPUに割り込み信号が行くという意味
- 1 = 0b0001 = コア1のみに割り込み信号が行くという意味
- 2 = 0b0010 = コア2のみに割り込み信号が行くという意味
- 4 = 0b0100 = コア3のみに割り込み信号が行くという意味
- 8 = 0b1000 = コア4のみに割り込み信号が行くという意味
あとは上記の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がぶっ壊れてるとか言われて不安定になり、
しまいにはパニクって死ぬ。やっぱりリアルタイムカーネル、面倒ダナー。
完了!
SWL - The Side Warehouse Laboratory, 横倉研究室 - 技術倉庫
Copyright(C), The Side Warehouse Laboratory, All rights reserved.