實驗過程:
本文在一臺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內容一致。。。
參考文章:
http://xiaoli110.blog.51cto.com/1724/1617541