以前に以下のメモを書きました。
- 自分用・検証用 CentOS 作成手順メモ(2017/01/14 版)
- 自分用・検証用 CentOS8 作成手順メモ(2019/10/02 版)
- 検証用 Amazon Linux2 初期設定メモ(2019/10/10 版)
- 自分用・検証用 CentOS8 作成手順メモ(2020/01/31 版)
- 自分用・検証用 Ubuntu21 作成手順メモ(2021/09/20 版)
- 自分用・検証用 RockyLinux8 作成手順メモ(2021/11/03 版)
- vSphere7 へ RockyLinux8 をテキストモードインストールする
今回は RockyLinux をベースに検証用 Linux を作成する手順をメモしておきます。
前提
このメモは以下を前提にしています。
- vSphere 上に作成する仮想マシンである
- ベースは RockyLinux 8.5 (amd64) とする
- 最小構成でインストールする
- 作成した仮想マシンはテンプレート化する
インストールパラメータ
NTP サーバは time.cloudflare.comのご紹介 で言及されている CloudFlare の NTP サーバを指定します。
項目 | 値 |
---|---|
タイムゾーン | 2.Asia → 73.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
」等のエラーを回避する為に、必要な鍵交換アルゴリズムを追加しておきます。
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 公開鍵をコピーする
ログイン処理をセキュア、且つ簡略化する為に公開鍵をコピーしておきます。
cat << 'EOS' >> ~/.ssh/authorized_keys
(公開鍵)
EOS
chmod 600 ~/.ssh/authorized_keys
/root に存在する不要ファイルを削除する
インストール直後は /root
配下に *.cfg
が存在します。 不要であれば削除しておきます (Kickstart 用の設定ファイルとして参考にしたい場合はコピーするなり、退避しておきます)。
rm /root/anaconda-ks.cfg
NTP サーバを指定する
(インストール時に指定していない場合は) NTP サーバを指定しておきます。 /etc/chrony.conf
に時刻同期したいサーバを指定します。 検証環境に併せたサーバを指定すれば良いと思いますが、特に指定が無く、インターネットにアクセス可能な場合は Google Time Server 等で良いと思います (設定変更を反映したい場合は chronyd を再起動しておきます)。
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
で確認します。
# 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 は停止しておきます。
systemctl stop firewalld
systemctl disable firewalld
設定変更が反映されていることを確認しておきます。
# 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 は停止しておきます。
sed -i -e "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
プロンプトの色を変更する
一般ユーザのプロンプトは緑色に、root ユーザのプロンプトは赤色に変更します。
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 を無効化しておきます。
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 秒に縮めます。
sed -i -e "s/^GRUB_TIMEOUT=5/GRUB_TIMEOUT=1/g" /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
基本的なパッケージを追加する
普段、よく使うであろうパッケージを追加しておきます。 パッケージの選定はお好みですが open-vm-tools
は必ずインストールしておきます。
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 が起動するようにエイリアスを設定しておきます。
echo "alias vi='vim'" >> /root/.bashrc
.vimrc も好みで設定しておきます。
cat << EOF > /root/.vimrc
set hlsearch
set ignorecase
set incsearch
set paste
set syntax=on
set tabstop=4
set wrap
EOF
英語設定を行う
必要であれば LANG
環境変数を明示的に定義しておきます。
echo "export LANG=C.UTF-8" >> /root/.bashrc
パッケージを最新にする
インストールされているパッケージを最新にします。 カーネルがアップデートされている場合を想定し、併せて再起動しておきます。
dnf -y update
dnf clean all
reboot
古いカーネルを削除する
古い世代のカーネルを削除します。
dnf -y remove $(dnf repoquery --installonly --latest-limit=-1 -q)
追加パッケージのインストール
fping / nmap (EPEL)
必要であれば、EPEL からパッケージを追加しておきます。 以下は fping や nmap を追加する例です。
dnf -y install epel-release
dnf -y install \
fping \
nmap
uncmnt
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
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
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
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
dnf install -y python39
alternatives --set python /usr/bin/python3.9
キャッシュ / コマンド実行履歴を削除しておく
テンプレート化する際には不要なので dnf のキャッシュとシェルのコマンド実行履歴を削除しておきます。 ここまで完了したら仮想マシンの電源をオフにします。
dnf clean all
history -c
poweroff
VM から DVD メディアを取り出しておく
テンプレート化する前に仮想マシンの光学ドライブから CentOS8 のインストールに利用した DVD メディアを取り出しておきます。
テンプレート化する
ここまで用意が出来たら仮想マシンをテンプレート化します。 以降、検証用の仮想マシンを作成したい場合はこのテンプレートから複製します。
コメント