實驗過程:
本文在一台RHEL6.5機器上,通過向原生CentOS7.2 iso中添加kickstart啟動腳本ks.cfg和讀取腳本的開機選項,再對該iso鏡像重新封裝的方式,完成CentOS7.2自動安裝光盤的制作,並新建一台虛擬機掛載該光盤,來驗證操作系統的自動安裝。
所需工具:
1. 一台RHEL6.5主機(虛擬機也可以,但本文涉及要在該主機上新建虛擬機,因此建議該主機應支持KVM或別的虛擬機技術)
2. virt-manager 可視化的虛擬機管理工具
3. virt-install 虛擬機安裝工具
4. qemu-img QEMU磁盤工具,用於建立虛擬機磁盤
5. CentOS-7-x86_64-DVD-1511.iso CentOS官網下載的iso鏡像
6. mkisofs(genisoimage) 制作光盤工具
實驗步驟:
1. 掛載鏡像:
mount -o loop -t iso9660 /root/CentOS-7-x86_64-1511.iso /mnt
2. 復制目錄的中所有內容到其他本地目錄:
cp -a /mnt/* /cloud/iso/centos7.2/
3. 復制編寫的可以完成自動安裝的ks.cfg腳本到目錄中。
cp /root/ks.cfg /cloud/iso/centos7.2/
4. 進入復制的目錄,編輯isolinux/isolinux.cfg文件,仿照其他啟動菜單格式,加入如下開機選項:
label ks
menu label Install CentOS 7 by the ^kickstart
menu default
kernel vmlinuz
append initrd=initrd.img inst.ks=cdrom:/ks.cfg inst.stage2=hd:LABEL=asika
5. 編輯EFI/BOOT/grub.conf文件,仿照其他啟動菜單格式,加入如下內容:
menuentry 'Install CentOS 7 by kickstart' --class Fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.ks=cdrom:/ks.cfg inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
initrdefi /images/pxeboot/initrd.img
}
6. 使用genisoimage命令制作光盤
genisoimage -v -cache-inodes -joliet-long -R -J -T -V asika \
-o ./CentOS-x86_64-7-1511-my-ks.iso \
-c isolinux/boot.cat -b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot -b images/efiboot.img -no-emul-boot ./centos7.2/
7. 建立虛擬機,並測試該鏡像
qemu-img create -f qcow2 CentOS7-ks-test.img 20G
virt-install --name CentOS7-ks-test --vcpus=2 --ram 2048 \
--disk path=/cloud/vm_imgs/CentOS7-ks-test.img,format=qcow2,bus=virtio \
--network network:default --os-type=linux --vnc --autostart \
--cdrom /cloud/iso/CentOS-x86_64-7-1511-my-ks.iso \
--keymap=en-us
注:
1. inst.ks的內容應指定為ks.cfg在cdrom中的路徑。比如你的ks.cfg文件放置在isolinux目錄下,inst.ks應等於cdrom:/isolinux/ks.cfg。
2. 制作光盤時指定的光盤ID ,即-V選項的內容應與isolinux.cfg中添加的label中hd:LABEL選項內容一致,多次實驗中,表明內容不一致導致系統無法從光盤中正常加載,同時實驗表明光盤ID無需同BOOT/grub.conf中添加行的hd:LABEL內容一致。