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.cfgとgrub.cfgとks.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」と言われた