VMwareESXiにて仮想マシンを作って検証らを行っているのだが、
仮想マシンの作成を楽にしたいと思ってきた。

調べるとVagrantを習得すべきなのかな?っと思うのだが、基本のkickstartをここでは取り上げる。
方針は、CentOS-7-x86_64-Minimal-1708.isoをベースに調整を施して
MACアドレスから、DNS/DHCP機能を経由して、マシン名・IPアドレスが自動的に決まるブートisoを作る。
BIOSでもUEFIでもどちらでも動くようにする。
またnicの名称はeth0とCentOS6で使っていたような名称にする

kickstart/netinstall NFSサーバにCentOS7のインストールコンテンツを配置してnetinstallで構築
関連PXEboot

kickstart/centos6

材料の調理

まずはベースとなるCentOS-7-x86_64-Minimal-1708.isoを下拵え。
isoファイルは/mnt/isoにマウントさせ、その内容を全て/mnt/kickstart にコピーする。
その/mnt/kickstart に展開されたMinimalに調整を施して専用のisoファイルを作る

[root@c ~]# mkdir /mnt/{iso,kickstart}
[root@c ~]# mount -t iso9660 -o ro,loop /export/CentOS-7-x86_64-Minimal-1708.iso /mnt/iso
 
[root@c ~]# rsync -avz /mnt/iso/  /mnt/kickstart/

isolinux.cfgの調整

まずはBIOSベースなマシン向けの調整

起動後にkickstart設定ファイルをロードさせるために
/mnt/kickstart/isolinux/isolinux.cfgファイルを変更します。

[root@c ~]# diff -u /mnt/iso/isolinux/isolinux.cfg /mnt/kickstart/isolinux/isolinux.cfg
--- /mnt/iso/isolinux/isolinux.cfg      2017-09-05 22:36:38.000000000 +0900
+++ /mnt/kickstart/isolinux/isolinux.cfg        2017-09-25 12:16:21.373694668 +0900
@@ -1,5 +1,5 @@
-default vesamenu.c32
-timeout 600
+default kickstart
+timeout 10
 
 display boot.msg
 
@@ -58,6 +58,12 @@
 menu separator # insert an empty line
 menu separator # insert an empty line
 
+label kickstart
+  menu label ^Kickstart CentOS 7
+  menu default
+  kernel vmlinuz
+  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=cdrom:/ks.cfg net.ifnames=0
+
 label linux
   menu label ^Install CentOS 7
   kernel vmlinuz
@@ -65,7 +71,6 @@
 
 label check
   menu label Test this ^media & install CentOS 7
-  menu default
   kernel vmlinuz
   append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
 
[root@c ~]#

*「inst.stage2=hd:LABEL=CentOS\x207\x20x86_64」のCentOS\x207\x20x86_64は、mkisofsの際の「-V」に繋がる

grub.cfgの調整

次に、UEFI向けの調整として、/mnt/kickstart/EFI/BOOT/grub.cfgファイルを変更します。

[root@c ~]# diff -u /mnt/iso/EFI/BOOT/grub.cfg /mnt/kickstart/EFI/BOOT/grub.cfg
--- /mnt/iso/EFI/BOOT/grub.cfg  2017-09-05 22:36:38.000000000 +0900
+++ /mnt/kickstart/EFI/BOOT/grub.cfg    2017-09-25 12:19:03.991991996 +0900
@@ -14,7 +14,7 @@
 insmod part_gpt
 insmod ext2
 
-set timeout=60
+set timeout=10
 ### END /etc/grub.d/00_header ###
 
 search --no-floppy --set=root -l 'CentOS 7 x86_64'
@@ -24,6 +24,10 @@
        linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
        initrdefi /images/pxeboot/initrd.img
 }
+menuentry 'Install kickstart CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
+       linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=cdrom:/ks.cfg net.ifnames=0
+       initrdefi /images/pxeboot/initrd.img
+}
 menuentry 'Test this media & install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
        initrdefi /images/pxeboot/initrd.img
[root@c ~]#

ks.cfgを作成

kickstartの設定ファイル/mnt/kickstart/ks.cfgを用意します。

[root@c ~]# vi /mnt/kickstart/ks.cfg
cdrom
graphical
ignoredisk --only-use=sda
lang ja_JP.UTF-8
keyboard --vckeymap=jp --xlayouts='jp'
network  --bootproto=dhcp --device=eth0 --noipv6 --activate
auth --enableshadow --passalgo=sha512
rootpw --plaintext xxxxxxx
 
firstboot --disabled
firewall --disabled
selinux --disabled
eula --agreed
 
services --enabled="chronyd"
timezone Asia/Tokyo --isUtc --ntpservers=c.sybyl.local
bootloader --location=mbr --boot-drive=sda --append="net.ifnames=0"
clearpart --drives=sda --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=512
part swap --fstype="swap" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=4096 --grow
part /boot/efi --fstype="efi" --ondisk=sda --size=512 --fsoptions="umask=0077,shortname=winnt"
 
reboot
 
%packages
@^minimal
@core
chrony
-biosdevname
 
%end
[root@c ~]#

再度isoファイルを作成する

修正したisolinux.cfggrub.cfgks.cfgを含む iso ファイルを再度作る
isoファイルを作成する mkisofs は genisoimage パッケージに存在するので、まずはそれをインストール

[root@c ~]# yum install genisoimage

そして、目的のisoファイル(CentOS-7-x86_64-Kickstart-1708.iso) を作成する。

[root@c ~]# cd /mnt/kickstart/
[root@c kickstart]# pwd
/mnt/kickstart
 
[root@c kickstart]# ls -CF
CentOS_BuildTag  EULA  LiveOS/    RPM-GPG-KEY-CentOS-7          TRANS.TBL  isolinux/  repodata/
EFI/             GPL   Packages/  RPM-GPG-KEY-CentOS-Testing-7  images/    ks.cfg
 
[root@c kickstart]# mkisofs \
    -v -r -J -T -l -input-charset utf-8 \
    -o ../CentOS-7-x86_64-Kickstart-1708.iso \
    -b isolinux/isolinux.bin \
    -c isolinux/boot.cat \
    -V 'CentOS 7 x86_64' \
    -no-emul-boot \
    -boot-load-size 4 \
    -boot-info-table \
    -eltorito-alt-boot \
    -e images/efiboot.img \
    -no-emul-boot  ./
 
[root@c kickstart]#
[root@c kickstart]# ls -lh ../CentOS-7-x86_64-Kickstart-1708.iso
-rw-r--r-- 1 root root 792M  9月 25 12:31 ../CentOS-7-x86_64-Kickstart-1708.iso
 
[root@c kickstart]#

-vは詳細表示。-v -vでさらに詳細な情報が表示される。-no-emul-bootが二回使われているがそうゆうものです。他のオプションは http://linux.die.net/man/8/mkisofs 参照

*mkisofsに「-d」を追加すると「Warning: creating filesystem that does not conform to ISO-9660」と言われた


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-09-25 (月) 21:15:53 (2075d)