Skip to content

自分用・検証用 RockyLinux8 作成手順メモ(2022/02/07 版)

以前に以下のメモを書きました。

今回は RockyLinux をベースに検証用 Linux を作成する手順をメモしておきます。

前提

このメモは以下を前提にしています。

  • vSphere 上に作成する仮想マシンである
  • ベースは RockyLinux 8.5 (amd64) とする
  • 最小構成でインストールする
  • 作成した仮想マシンはテンプレート化する

インストールパラメータ

NTP サーバは time.cloudflare.comのご紹介 で言及されている CloudFlare の NTP サーバを指定します。

項目
タイムゾーン 2.Asia73.Tokyo
NTP サーバ 1 162.159.200.123
NTP サーバ 2 162.159.200.1

SSH 接続時の警告時を表示しない

別のホストへ SSH 接続する際、警告が表示されないように設定しておきます。 また「Unable to negotiate with 192.168.1.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1」等のエラーを回避する為に、必要な鍵交換アルゴリズムを追加しておきます。

1
2
3
4
5
6
cat << EOF > /etc/ssh/ssh_config.d/99_lab.conf
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers aes128-cbc,aes256-ctr
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
EOF

SSH 公開鍵をコピーする

ログイン処理をセキュア、且つ簡略化する為に公開鍵をコピーしておきます。

1
2
3
4
cat << 'EOS' >> ~/.ssh/authorized_keys
(公開鍵)
EOS
chmod 600 ~/.ssh/authorized_keys

/root に存在する不要ファイルを削除する

インストール直後は /root 配下に *.cfg が存在します。 不要であれば削除しておきます (Kickstart 用の設定ファイルとして参考にしたい場合はコピーするなり、退避しておきます)。

1
rm /root/anaconda-ks.cfg

NTP サーバを指定する

(インストール時に指定していない場合は) NTP サーバを指定しておきます。 /etc/chrony.conf に時刻同期したいサーバを指定します。 検証環境に併せたサーバを指定すれば良いと思いますが、特に指定が無く、インターネットにアクセス可能な場合は Google Time Server 等で良いと思います (設定変更を反映したい場合は chronyd を再起動しておきます)。

1
2
3
4
server 216.239.35.12 iburst
server 216.239.35.8 iburst
server 216.239.35.4 iburst
server 216.239.35.0 iburst

NTP サーバとの同期状態は chronyc sources で確認します。

1
2
3
4
5
6
7
8
# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* time4.google.com              1   8   377   216   +795us[ +368us] +/-   18ms
^+ time3.google.com              1   8   377    26  +8126us[+8126us] +/-   25ms
^+ time2.google.com              1   8   377    89  +3367us[+3367us] +/-   24ms
^+ time1.google.com              1   8   377   410  +2815us[+2366us] +/-   21ms

firewalld を停止する

firewalld は停止しておきます。

1
2
systemctl stop firewalld
systemctl disable firewalld

設定変更が反映されていることを確認しておきます。

1
2
3
4
5
# systemctl status firewalld
● 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)

SELinux を停止する

SELinux は停止しておきます。

1
sed -i -e "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

プロンプトの色を変更する

一般ユーザのプロンプトは緑色に、root ユーザのプロンプトは赤色に変更します。

1
2
3
4
5
6
7
cat << 'EOS' >> /etc/profile.d/prompt.sh
if [ `id -u` = 0 ]; then
    PS1="[\[\033[1;31m\]\u@\h\[\033[00m\] \W]\\$ "
else
    PS1="[\[\033[1;36m\]\u@\h\[\033[00m\] \W]\\$ "
fi
EOS

対話的な alias を無効化する

検証環境ではコマンドを実行する度に対話的な確認は不必要なので、alias を無効化しておきます。

1
2
3
sed -i -e "s/alias rm='rm -i'/#alias rm='rm -i'/g" /root/.bashrc
sed -i -e "s/alias cp='cp -i'/#alias cp='cp -i'/g" /root/.bashrc
sed -i -e "s/alias mv='mv -i'/#alias mv='mv -i'/g" /root/.bashrc

GRUB のタイムアウト時間を短くする

デフォルトでは GRUB のタイムアウト時間が 5 秒になっています。 検証環境の仮想マシンは少しでも早く起動して欲しいので、タイムアウト時間を 1 秒に縮めます。

1
2
sed -i -e "s/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=1/g" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

基本的なパッケージを追加する

普段、よく使うであろうパッケージを追加しておきます。 パッケージの選定はお好みですが open-vm-tools は必ずインストールしておきます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
dnf -y install \
    bash-completion \
    bind-utils \
    git \
    lsof \
    open-vm-tools \
    psmisc \
    tcpdump \
    tree \
    unzip \
    vim-enhanced \
    wget \
    zip

vi → vim の alias を追加する

root ユーザでも vi とタイプしたら vim が起動するようにエイリアスを設定しておきます。

1
echo "alias vi='vim'" >> /root/.bashrc

.vimrc も好みで設定しておきます。

1
2
3
4
5
6
7
8
9
cat << EOF > /root/.vimrc
set hlsearch
set ignorecase
set incsearch
set paste
set syntax=on
set tabstop=4
set wrap
EOF

英語設定を行う

必要であれば LANG 環境変数を明示的に定義しておきます。

1
echo "export LANG=C.UTF-8" >> /root/.bashrc

パッケージを最新にする

インストールされているパッケージを最新にします。 カーネルがアップデートされている場合を想定し、併せて再起動しておきます。

1
2
3
dnf -y update
dnf clean all
reboot

古いカーネルを削除する

古い世代のカーネルを削除します。

1
dnf -y remove $(dnf repoquery --installonly --latest-limit=-1 -q)

追加パッケージのインストール

fping / nmap (EPEL)

必要であれば、EPEL からパッケージを追加しておきます。 以下は fping や nmap を追加する例です。

1
2
3
4
dnf -y install epel-release
dnf -y install \
    fping \
    nmap

uncmnt

1
2
curl -L https://github.com/sig9org/uncmnt/releases/download/v0.0.2/uncmnt_v0.0.2_linux_amd64 -o /usr/local/bin/uncmnt
chmod 755 /usr/local/bin/uncmnt

docker

1
2
3
4
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker

docker compose

1
2
3
mkdir -p /usr/local/lib/docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

docker purge

1
2
3
4
5
mkdir -p /usr/local/lib/docker/cli-plugins/
curl -SL \
  https://github.com/sig9org/docker-purge/releases/download/v0.0.1/docker-purge_v0.0.1_linux_amd64 \
  -o /usr/local/lib/docker/cli-plugins/docker-purge
chmod +x /usr/local/lib/docker/cli-plugins/docker-purge

Python3

1
2
dnf install -y python39
alternatives --set python /usr/bin/python3.9

キャッシュ / コマンド実行履歴を削除しておく

テンプレート化する際には不要なので dnf のキャッシュとシェルのコマンド実行履歴を削除しておきます。 ここまで完了したら仮想マシンの電源をオフにします。

1
2
3
dnf clean all
history -c
poweroff

VM から DVD メディアを取り出しておく

テンプレート化する前に仮想マシンの光学ドライブから CentOS8 のインストールに利用した DVD メディアを取り出しておきます。

テンプレート化する

ここまで用意が出来たら仮想マシンをテンプレート化します。 以降、検証用の仮想マシンを作成したい場合はこのテンプレートから複製します。