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

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

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

kickstart/centos6

材料の調理

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

[root@c ~]# mkdir /mnt/{iso,kickstart}
[root@c ~]# mount -t iso9660 -o loop /export/CentOS-7-x86_64-Minimal-1511.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      2015-12-10 07:33:53.000000000 +0900
+++ /mnt/kickstart/isolinux/isolinux.cfg        2016-02-12 01:23:03.177092299 +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
+
 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  2015-12-10 07:33:53.000000000 +0900
+++ /mnt/kickstart/EFI/BOOT/grub.cfg    2016-02-12 23:01:06.731764519 +0900
@@ -1,4 +1,4 @@
-set default="1"
+set default="0"
 
 function load_video {
   insmod efi_gop
@@ -14,12 +14,16 @@
 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'
 
 ### BEGIN /etc/grub.d/10_linux ###
+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
+       initrdefi /images/pxeboot/initrd.img
+}
 menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
        initrdefi /images/pxeboot/initrd.img
[root@c ~]#

ks.cfgを作成

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

[root@c ~]# vi /mnt/kickstart/ks.cfg
#version=DEVEL
# CentOS7
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --disabled
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang ja_JP.UTF-8
 
# Network information
network  --bootproto=dhcp --device=ens32 --ipv6=auto --activate
 
# Root password
rootpw --plaintext xxxxxxx
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Tokyo --isUtc --ntpservers=c.sybyl.local
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --drives=sda --all --initlabel
# Disk partitioning information
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"
 
eula --agreed
firewall --disabled
selinux --disabled
reboot
 
%packages
@^minimal
@core
chrony
 
%end
[root@c ~]#

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

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

[root@c ~]# yum install genisoimage

そして、目的のisoファイル(CentOS-7-x86_64-Kickstart-1511.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-1511.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-1511.iso
-rw-r--r-- 1 root root 687M  2月 12 12:01 ../CentOS-7-x86_64-Kickstart-1511.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: 2016-05-30 (月) 22:44:25 (358d)