OSの自動インストールを可能にさせます.
ディスクのパーティション、rootのパスワード、パッケージの選択などを事前に決めてブートすればそれらが反映される仕組みです.
利用する局面としては
っな使い方かなと.
まずはPXEbootで利用可能なkickstart ファイルを作ってみます.
RHEL7向けの書式ですが、下記が参考になるかな
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax
https://docs.fedoraproject.org/en-US/fedora/f36/install-guide/appendixes/Kickstart_Syntax_Reference/
英語モードで、ただしキーボードは日本語キーボードとして、ipはdhcp由来で、ntpは「ntp.nict.jp」を参照させて、
HDDは/boo(2GB)、/boot/efi(50MB)、swap(128MB)として残りはすべてroot(/)に配置.
パッケージは基本形にプラス「development」を入れて、クラッシュ時のメモリーイメージは保存させない
って内容なら下記になる
eula --agreed
graphical
firstboot --disabled
ignoredisk --only-use=sda
keyboard --vckeymap=jp --xlayouts='jp'
lang en_US.UTF-8 --addsupport=ja_JP.UTF-8
network --bootproto=dhcp --device=link --noipv6 --activate --onboot=on
reboot
# OSによって参照先を変更してください
url --url="http://192.168.0.3/os/c7/"
# rootのパスワード定義. rootのパスワードを定義せず別のアカウントからsudoでするのが今流?
#rootpw --plaintext xxxxxxx
rootpw --lock
group --name=fgo --gid=5000
user --name=saber --gid=5000 --uid=5000 --groups=wheel --plaintext --password=emiya
services --enabled="chronyd"
timezone Asia/Tokyo --utc --ntpservers=ntp.nict.jp
#timezone Asia/Tokyo --utc *RHEL9以降
#timesource --ntp-server ntp.nict.jp *RHEL9以降
bootloader --location=mbr --boot-drive=sda
clearpart --drives=sda --all --initlabel
part /boot/efi --fstype="efi" --ondisk=sda --size=50 --fsoptions="umask=0077,shortname=winnt"
part /boot --fstype="xfs" --ondisk=sda --size=2048
part swap --fstype="swap" --ondisk=sda --size=128
part / --fstype="xfs" --ondisk=sda --size=4096 --grow
#パッケージグループの指定でRHEL8以降は「@^minimal」を「@^minimal-environment」とする
%packages
@^minimal
@development
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%post
echo `hostname -i` `hostname -f` `hostname -s` >> /etc/hosts
%end
「network」行の「--device=link」は初めに見つかったnicデバイスを意図してます. eno1、enp196とか構成によってバラつくのでデバイス名を指定せず定義したいから
「%addon com_redhat_kdump --disable --reserve-mb='auto'」はcoreダンプの無効を意図してます.
これを「/var/lib/tftpboot/pxelinux.cfg/default」や「/var/lib/tftpboot/grub.cfg」に「inst.ks=」を使って組み込みます.
httpで参照させるのが楽なので「inst.ks=http://192.168.0.3/os/c7.ks.cfg」とかとして.
[root@c ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
:
append initrd=/centos7.9/initrd.img ip=dhcp inst.repo=https://ftp.riken.jp/Linux/centos/7.9.2009/os/x86_64/
↓
append initrd=/centos7.9/initrd.img ip=dhcp inst.repo=https://ftp.riken.jp/Linux/centos/7.9.2009/os/x86_64/ inst.ks=http://192.168.0.3/os/c7.ks.cfg
:
[root@c ~]#
[root@c ~]# vi /var/lib/tftpboot/grub.cfg
:
:
linuxefi /centos7.9/vmlinuz ip=dhcp inst.repo=https://ftp.riken.jp/Linux/centos/7.9.2009/os/x86_64/
↓
linuxefi /centos7.9/vmlinuz ip=dhcp inst.repo=https://ftp.riken.jp/Linux/centos/7.9.2009/os/x86_64/ inst.ks=http://192.168.0.3/os/c7.ks.cfg
:
[root@c ~]#
これでマシンを起動すると自動的にOSまでインストールされます. 以降の細かい設定はAnsibleでいいかなと.
っで次に2つ目. 作成した「kickstart ファイル」を含むisoファイルを作成します.
これを仕込んだUSBで起動するとOSが仕上がるって感じです.
前段は pxeboot を使った場合です. ここは カスタマイズしたisoファイルをusbに入れてusbブートから自動インストールってお話です
まず目的のOSのisoを用意して、これを一旦ファイルシステム上に展開します
ここではisoの展開先を /opt/iso として、そのコピーの /opt/kickstart を作ります.
作った/opt/kickstart に作った kickstart を置いて /opt/kickstart 丸ごと iso にします.
[root@c ~]# mkdir /opt/{iso,kickstart}
[root@c ~]# mount -o loop,ro -t iso9660 /export/Rocky-9.2-x86_64-dvd.iso /opt/iso
[root@c ~]# rsync -a /opt/iso/ /opt/kickstart/
展開し終えたら boot 後に kickstart を読み込むように isolinux.cfg(bios向け)とgrub.cfg(efi向け)を修正します
|
|
留意点は「inst.ks=cdrom:/r9.ks.cfg」の追記です.
っで「inst.ks=cdrom:/r9.ks.cfg」に該当する/opt/kickstart/r9.ks.cfgを作ります.
内容は冒頭とほぼ同じでRockyLinux9向けに調整してます
[root@c ~]# vi /opt/kickstart/r9.ks.cfg
eula --agreed
graphical
firstboot --disabled
ignoredisk --only-use=sda
keyboard --vckeymap=jp --xlayouts='jp'
lang en_US.UTF-8 --addsupport=ja_JP.UTF-8
network --bootproto=dhcp --device=link --noipv6 --activate --onboot=on
reboot
url --url="http://192.168.0.3/os/r9/"
rootpw --lock
group --name=fgo --gid=5000
user --name=saber --gid=5000 --uid=5000 --groups=wheel --plaintext --password=emiya
services --enabled="chronyd"
timezone Asia/Tokyo --utc
timesource --ntp-server ntp.nict.jp
bootloader --location=mbr --boot-drive=sda
clearpart --drives=sda --all --initlabel
part /boot/efi --fstype="efi" --ondisk=sda --size=50 --fsoptions="umask=0077,shortname=winnt"
part /boot --fstype="xfs" --ondisk=sda --size=2048
part swap --fstype="swap" --ondisk=sda --size=128
part / --fstype="xfs" --ondisk=sda --size=4096 --grow
%packages
@^minimal-environment
@development
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%post
echo `hostname -i` `hostname -f` `hostname -s` >> /etc/hosts
%end
[root@c ~]#
修正したisolinux.cfgとgrub.cfgとr9.ks.cfgを含む iso ファイルを再度作る
isoファイルを作成する mkisofs は genisoimage パッケージに存在するので、まずはそれをインストール
[root@c ~]# dnf install genisoimage
そして、目的のisoファイル(CentOS-7-x86_64-Kickstart-1708.iso) を作成する。
[root@c ~]# cd /opt/kickstart/
[root@c kickstart]# ls -CF
AppStream/ COMMUNITY-CHARTER EFI/ images/ LICENSE RPM-GPG-KEY-Rocky-9
BaseOS/ Contributors EULA isolinux/ media.repo RPM-GPG-KEY-Rocky-9-Testing
[root@c kickstart]# mkisofs \
-v -r -J -T -l -input-charset utf-8 \
-o ../Rocky-9.2-x86_64-dvd-kickstart.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-V 'Rocky-9-2-x86_64-dvd-kickstart' \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-e images/efiboot.img \
-no-emul-boot ./
[root@c kickstart]# ls -lh ../Rocky-9.2-x86_64-dvd-kickstart.iso
-rw-r--r-- 1 root root 9.0G Jul 16 02:47 ../Rocky-9.2-x86_64-dvd-kickstart.iso
[root@c kickstart]#
このisoを使ってbootすると下記のようになります. っでそのままにしておくとRockyLinux9.2がインストールされます.