#author("2023-07-15T18:12:35+00:00","default:sysosa","sysosa") &color(red){改定中}; #author("2023-07-16T09:17:49+00:00","default:sysosa","sysosa") OSの自動インストールを可能にさせます. ディスクのパーティション、rootのパスワード、パッケージの選択などを事前に決めてブートすればそれらが反映される仕組みです. 利用する局面としては -[[PXEboot]]に調整したkickstartを組み込んでネットワークブート--> OSインストール -調整したkickstart を含む iso ファイルを作成してUSBに焼きこんでboot--> OSインストール っな使い方かなと. ***kickstart ファイルの作成 [#hbb35660] まずは[[PXEboot]]で利用可能なkickstart ファイルを作ってみます. RHEL7向けの書式ですが、下記が参考になるかな [[https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax>+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/>+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」を入れて、クラッシュ時のメモリーイメージは保存させない って内容なら下記になる #code(nonumber){{ 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デバイスを意図してます. &size(10){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」とかとして. #code(nonumber){{ [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]]でいいかなと. ***isoファイルの再構築 [#z5186712] っで次に2つ目. 作成した「kickstart ファイル」を含むisoファイルを作成します. これを仕込んだUSBで起動するとOSが仕上がるって感じです. &size(10){前段は pxeboot を使った場合です. ここは カスタマイズしたisoファイルをusbに入れてusbブートから自動インストールってお話です}; まず目的のOSのisoを用意して、これを一旦ファイルシステム上に展開します ここではisoの展開先を /opt/iso として、そのコピーの /opt/kickstart を作ります. 作った/opt/kickstart に作った kickstart を置いて /opt/kickstart 丸ごと iso にします. #code(nonumber){{ [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向け)を修正します -isolinux/isolinux.cfg(bios向け) &color(orange){/opt/kickstart/isolinux/isolinux.cfg};ファイルを変更します。 #code(diff,nonumber){{ [root@c ~]# diff -u /opt/kickstart/isolinux/isolinux.cfg.orig /opt/kickstart/isolinux/isolinux.cfg --- /opt/kickstart/isolinux/isolinux.cfg.orig 2023-05-12 09:24:29.000000000 +0900 +++ /opt/kickstart/isolinux/isolinux.cfg 2023-07-16 02:58:41.634784037 +0900 @@ -59,13 +59,18 @@ menu separator # insert an empty line label linux + menu label ^Install Rocky Linux 9.2 kickstart + menu default + kernel vmlinuz + append initrd=initrd.img inst.stage2=hd:LABEL=Rocky-9-2-x86_64-dvd-kickstart quiet inst.ks=cdrom:/r9.ks.cfg + +label linux menu label ^Install Rocky Linux 9.2 kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=Rocky-9-2-x86_64-dvd quiet label check menu label Test this ^media & install Rocky Linux 9.2 - menu default kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=Rocky-9-2-x86_64-dvd rd.live.check quiet [root@c ~]# }} -EFI/BOOT/grub.cfg(efi向け) &color(orangered){/opt/kickstart/EFI/BOOT/grub.cfg};ファイルを変更します。 #code(diff,nonumber){{ [root@c ~]# diff -u /opt/iso/EFI/BOOT/grub.cfg /opt/kickstart/EFI/BOOT/grub.cfg --- /opt/iso/EFI/BOOT/grub.cfg 2023-05-12 09:24:29.000000000 +0900 +++ /opt/kickstart/EFI/BOOT/grub.cfg 2023-07-16 02:58:59.163150230 +0900 @@ -24,6 +24,10 @@ linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Rocky-9-2-x86_64-dvd quiet initrdefi /images/pxeboot/initrd.img } +menuentry 'Install Rocky Linux 9.2 kickstart' --class fedora --class gnu-linux --class gnu --class os { + linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Rocky-9-2-x86_64-dvd-kickstart quiet inst.ks=cdrom:/r9.ks.cfg + initrdefi /images/pxeboot/initrd.img +} menuentry 'Test this media & install Rocky Linux 9.2' --class fedora --class gnu-linux --class gnu --class os { linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=Rocky-9-2-x86_64-dvd rd.live.check quiet initrdefi /images/pxeboot/initrd.img [root@c ~]# }} 留意点は「inst.ks=cdrom:/r9.ks.cfg」の追記です. っで「inst.ks=cdrom:/r9.ks.cfg」に該当する&color(orchid){/opt/kickstart/r9.ks.cfg};を作ります. 内容は冒頭とほぼ同じでRockyLinux9向けに調整してます #code(nonumber){{ [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 ~]# }} 修正した&color(orange){isolinux.cfg};と&color(orangered){grub.cfg};と&color(orchid){r9.ks.cfg};を含む iso ファイルを再度作る isoファイルを作成する mkisofs は genisoimage パッケージに存在するので、まずはそれをインストール #code(nonumber){{ [root@c ~]# dnf install genisoimage }} そして、目的のisoファイル(&color(magenta){CentOS-7-x86_64-Kickstart-1708.iso};) を作成する。 #code(nonumber){{ [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すると下記のようになります このisoを使ってbootすると下記のようになります. っでそのままにしておくとRockyLinux9.2がインストールされます. &ref(2023y07m16d_024130912.png,nolink);