キックスタートでゲストCentOS8を完全自動インストール
- AlmaLinux8
更新
ホストCentOS8で非推奨になった文法
install
: 代わりに、cdrom
,harddrive
,url
など可能auth
: 代わりに任意のauthselect
ハッシュ化パスワードの準備
- パスワードの記述は、プレインテキストではなくハッシュ化したもの(推奨)
python
コマンドで作成
python3 -c \
'import crypt,getpass; pw=getpass.getpass(); print(crypt.crypt(pw) \
if (pw==getpass.getpass("確認: ")) else exit())'
# 出力例
$6$PJT7Bq5loUD0k2X6$64ZfEV040jfBFaBftVss37LDNCPQMIQDwxd6d32DBHCcsOdZg40vT8ZwaAzAgKK.6sDhL86wUQP.t37eGP.Q0/
キックスタートファイル: CentOS8 NATモード
- 完全自動のサーバインストール
- テキストモード: 途中経過は
virsh console
で - NATモードのDHCP利用
rootpw
とuser
コマンドの「ハッシュ化パスワード」の部分を置き換える
# c8-server.ks
# インストール画面: テキストモード
text
# 光学ドライブからインストール
cdrom
# インストール後: 電源停止
poweroff
# キーボード
keyboard --vckeymap=jp --xlayouts=jp
# 言語(ただし、テキストモードのインストール中表示は英語)
lang ja_JP --addsupport=en_US
# タイムゾーン
timezone Asia/Tokyo
# ネットワーク: DNSはvirbr0(例192.168.122.0/24)からアクセスできること
network --activate --bootproto=dhcp --hostname=guest0
# 認証: パスワードはSHA512でハッシュ化
# root
rootpw --iscrypted ハッシュ化パスワード
# ユーザ: alice
user --iscrypted --name=alice --password=ハッシュ化パスワード
# パーティション: 自動
clearpart --all --initlabel --disklabel=gpt
autopart --type=plain
# ブートローダ
# シリアル・仮想コンソール: GRUBシェルもLinuxブート中も利用、/etc/default/grubにも反映
# KVMの仮想ディスクは通常vdaという名前
bootloader --append="console=tty0 console=ttyS0" --boot-drive=vda
# パッケージ
%packages
# Environment Group: 最小限のインストール
@^minimal-environment
%end
# Kdump無効
%addon com_redhat_kdump --disable
%end
# 各段階のスクリプト: ログ場所(再起動後) /var/log/anaconda/ks-script-*.log
# キックスタートファイル読込直後のスクリプト
# ネットワークやパーティションの特別な設定(例外的に)
%pre
echo "-----------Kickstart pre-----------"
sleep 1
%end
# インストール直前のスクリプト
# ネットワーク、パーティション(指示通りの)設定後
%pre-install
echo "---------Kickstart pre-install-----"
sleep 1
%end
# キックスタート後スクリプト(ユーザ作成後)
# chroot環境
%post
echo "-----------Kickstart post-----------"
# アップデート
dnf -y upgrade
# スタートアップファイル
echo 'alias hello="echo Hello, Kickstart♪"' >> /home/alice/.bashrc
echo "-----------Kickstart post end-------"
%end
自動パーティションの結果例
Filesystem Size Used Avail Use% Mounted on
/dev/vda4 8.0G 1.5G 6.6G 19% /
/dev/vda2 1014M 212M 803M 21% /boot
lang ja_JP
の結果
/etc/locale.conf
:LANG="ja_JP.UTF-8"
になる- インストールされる言語パッケージ:
glibc-langpack-ja
,langpacks-ja
localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp
virt-installの実行
変数例
- AlmaLinux8(
AlmaLinux-8.3-rc-1-x86_64-minimal.iso
)でも動作確認
# ゲストの名前: 重複しないこと(virsh list --all)
name=c8-server
# プールパス: ボリューム保存ディレクトリ
pool=/path/to/pool
# ボリュームパス: 拡張子例.qcow
path=$pool/$name.qcow
# メモリサイズMiB
memory=1024
# ディスクサイズGiB
size=10
# CPUの数
cpu=2
# Linux種類
linux=centos8
# ネットワーク
network="network=default" # NATモード
# ISOファイル・ロケーション
iso=CentOS-8.3.2011-x86_64-dvd1.iso
location=/path/to/$iso
# キックスタート・ファイル名
ks_name=c8-server.ks
# ホストパス
ks_path=/path/to/$ks_name
実行、コンソール接続
virt-install --name $name --memory $memory --vcpus $cpu \
--os-variant $linux --noreboot --network $network \
--disk path=$path,size=$size \
--location $location --initrd-inject $ks_path \
--extra-args "inst.ks=file:/$ks_name console=tty0 console=ttyS0 inst.keymap=jp" \
--noautoconsole && virsh console $name # そのままコンソール接続
# (訂正): 「inst.lang=jp」を間違いのため削除済み