#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);
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS