定製centos 6.5自動安裝光碟片
一、製作環境準備
實驗環境:
VMware Workstation
CentOS-6.5-x86_64-minimal 迷你安裝
安裝後,我們會使用系統 /root 目錄下 install.log 和 anaconda-ks.cfg 這兩個檔案(在此基礎上修改比較方便)
1.光碟片目錄結構
*isolinux 目錄存放光碟片啟動時的安裝介面資訊
*images 目錄包括了必要的開機映像檔案
*Packages 目錄存放安裝軟體包及資訊
*.discinfo 檔案是安裝價質的識別資訊
MediaCentOS 目錄存放媒體中心安裝包
Repodata 目錄存放rpm包依賴資訊
5.x 系列, boot.iso 存在於 images/ 這個目錄
6.x 系列, 存放於 /isolinux 目錄下
6.x 網路安裝需要在官網下載:netinstall.iso 鏡像檔案
2. 定製步驟
(1)安裝最小化的作業系統.包括基本的系統和所需要的工具等(我這先實現最小化自動安裝)
比如:對於http,mysql等軟體,建議使用編譯的方式安裝, 然後打包放進去,可以減少許多依賴包的麻煩.
(2)安裝系統後,收集系統已安裝的軟體包,使用指令碼統一轉存到一個目錄中.
(3)在安裝光碟片複製images鏡像,從光碟片啟動centos安裝所需的檔案等.
(4)定義自己的kickstart安裝指令碼.
(5)按照之前轉存的軟體(rpm)包, 重建光碟片的repodata資訊.
(6)打包產生ISO檔案,及MD5效驗碼.
二、操作過程記錄:
1、安裝所需工具包
1
#yum-yinstallanacondarepodatacreaterepomkisofsrsync
2、 掛載並拷貝檔案
目錄規劃:
掛載目錄為: /mnt
定製光碟片檔案目錄: /root/iso
[root@linuxidc ~]# pwd
/root
[root@linuxidc ~]# mkdir iso # 建立iso檔案製作目錄
[root@linuxidc ~]# mkdir -p ./iso/{Packages,repodata} # 建立軟體包目錄和repodata目錄
[root@linuxidc ~]# mount /dev/cdrom /mnt # 掛載 DVD
mount: block device /dev/sr0 is write-protected, mounting read-only
# 拷貝 源DVD鏡像中,除了Packages,repodata 目錄外的所有檔案到 iso 目錄
[root@linuxidc ~]# /usr/bin/rsync -a --exclude=Packages --exclude=repodata /mnt/ ./iso/
[root@linuxidc ~]# ls iso
CentOS_BuildTag GPL Packages RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6
EFI images RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL
EULA isolinux repodata RPM-GPG-KEY-CentOS-Security-6
# 參考當前系統的安裝包,拷貝
[root@linuxidc ~]# awk '/Installing/ {print $2}' install.log | xargs -i cp /mnt/Packages/{}.rpm ./iso/Packages/ #如果安裝系統時選了安裝語文為中文這裡Installing會亂碼
[root@linuxidc ~]# ls iso/Packages/ | wc -l
205
# 執行createrepo程式產生repodata下的comps.xml檔案(重要)
#comps.xml 檔案中包含了安裝時使用者所見到的與rpm相關的所有內容,它會檢查Packages下
# 的RPM包的依賴關係,安裝時如果缺少依賴包,它會提示您哪個RPM 包需要哪些依賴庫。
[root@linuxidc ~]# pwd
/root
# 編輯 shell 指令碼, 並執行
#!/bin/bash
ISO_DIR=/root/iso
cd ${ISO_DIR}
declare -x discinfo=$(head -1 .discinfo)
cp /mnt/repodata/*-minimal-x86_64.xml ${ISO_DIR}/repodata/minimal-x86_64.xml
createrepo -g ${ISO_DIR}/repodata/minimal-x86_64.xml ${ISO_DIR}
createrepo -u "media://$discinfo" -g ${ISO_DIR}/repodata/*-minimal-x86_64.xml ${ISO_DIR}
到這裡,comps.xml檔案和其他相關聯的檔案已被重建到repodata目錄下。
Tips:如果你新增或刪除了Packages目錄的RPM包,請重建comps.xml檔案。
3、製作 ks.cfg 指令碼
ks檔案由系統安裝所建立的 anaconda-ks.cfg進行修改,當然也可以用system-config-kickstart工具製作而得。可以根據需要和實際情況進行修改:
編寫.cfg檔案
將~/anaconda-ks.cfg複製到~/ios/isolinux/ks.cfg
修改後Ks.cfg的內容如下
#Kickstartfileautomaticallygeneratedbyanaconda.
#version=DEVEL
install
#text
cdrom
#設定安裝語言
#langen_US.UTF-8
langzh_CN.UTF-8
keyboardus
#skiptheXconfiguration
skipx
network--onbootno--deviceeth0--bootprotodhcp--noipv6
#設定root密碼,此處為:centos
rootpw--iscrypted$6$q4pbJVjqD7ZmOEEq$f7C0H8gIBf3rlKXqVn0UOVfOYqYIG8kFU2yBghH5lc0uVjmU0mFTSgHe4MwZGuXvHWZOyXxhnBoIK9yIuDBt20
firewall--service=ssh
authconfig--enableshadow--passalgo=sha512
selinux--enforcing
timezone--utcAsia/Chongqing
bootloader--location=mbr--driveorder=sda--append="crashkernel=autorhgbquiet"
#Thefollowingisthepartitioninformationyourequested
#Notethatanypartitionsyoudeletedarenotexpressed
#heresounlessyouclearallpartitionsfirst,thisis
#notguaranteedtowork
#clearpart--linux--drives=sda
#volgroupVolGroup--pesize=4096pv.008002
#logvol/--fstype=ext4--name=lv_root--vgname=VolGroup--grow--size=1024--maxsize=51200
#logvolswap--name=lv_swap--vgname=VolGroup--grow--size=1984--maxsize=1984
#part/boot--fstype=ext4--size=500
#partpv.008002--grow--size=1
#clearpart--linux--drives=sda
#clearpart--all--initlabel
clearpart--all --initlabel #此命令必須添加,否則系統會讓使用者手動選擇是否清除所有資料
#所有硬碟的分割表通通被清除!clearpart--all#僅清除vda硬碟的分割表,其他的硬碟不要清除分割表!clearpart--drives=vda--all
#此處設定分區
part/boot--fstype=ext4--size=300 --ondisk=sda
part/home--fstype=ext4--grow--size=1 --ondisk=sda #使用剩下的所有空間
part/opt--fstype=ext4--size=3000 --ondisk=sda
part/var--fstype=ext4--size=2000 --ondisk=sda
part/ --fstype=ext4--size=8000 --ondisk=sda
partswap--recommended --ondisk=sda
#repo--name="CentOS"--baseurl=cdrom:sr0--cost=100#這句一定要注釋掉不然會提示找不到名為CentOS的有效repo
#要安裝的軟體包@開頭的為group,也可寫單個包名如vim
%packages
@core
@server-policy
@workstation-policy
%end
#%post--nochroot
#mountcdrom
#/bin/mkdir-p/mnt/cdrom
#/bin/mount-r-tiso9660/tmp/cdrom/mnt/cdrom
#umountcdrom
#/bin/umount/mnt/cdrom
%post#這部分是安裝完系統之後執行的步驟,可自訂
/bin/echo"mount-n-oremount,ro/">>/etc/rc.local
/bin/echo"tmpfs/tmptmpfsdefaults00">>/etc/fstab
%end
#--Rebootthehostafterinstallationisdone
reboot
4、修改 isolinux.cfg 設定檔,指定 ks 路徑
注意,編輯這個檔案,需要強制儲存。 :wq!
# vi ./iso/isolinux/isolinux.cfg
defaultauto
#defaultvesamenu.c32
#prompt1
timeout600
displayboot.msg
menubackgroundsplash.jpg
menutitleWelcometoCentOS6.5!
menucolorborder0#ffffffff#00000000
menucolorsel7#ffffffff#ff000000
menucolortitle0#ffffffff#00000000
menucolortabmsg0#ffffffff#00000000
menucolorunsel0#ffffffff#00000000
menucolorhotsel0#ff000000#ffffffff
menucolorhotkey7#ffffffff#ff000000
menucolorscrollbar0#ffffffff#00000000
labelauto
kernelvmlinuz
appendks=cdrom:/isolinux/ks.cfginitrd=initrd.img
labellinux
menulabel^Installorupgradeanexistingsystem
menudefault
kernelvmlinuz
appendinitrd=initrd.img
labelvesa
menulabelInstallsystemwith^basicvideodriver
kernelvmlinuz
appendinitrd=initrd.imgxdriver=vesanomodeset
labelrescue
menulabel^Rescueinstalledsystem
kernelvmlinuz
appendinitrd=initrd.imgrescue
labellocal
menulabelBootfrom^localdrive
localboot0xffff
labelmemtest86
menulabel^Memorytest
kernelmemtest
append-
5、產生iso鏡像,並產生 MD5校正碼
#cd ~/iso
#mkisofs-R-J-T-r-l-d-joliet-long-allow-multidot-allow-leading-dots-no-bak-o../myos-0.1-x86.iso\
-bisolinux/isolinux.bin-cisolinux/boot.cat-no-emul-boot-boot-load-size4-boot-info-table./
9.修改光碟片背景,文字等資訊9.1修改系統自動安裝過程中顯示的背景圖片.修改光碟片背景,文字等資訊
#進入光碟片images目錄cd/data/ISO/images/#install.img鏡像中包含了光碟片安裝過程中使用到的背景圖片,掛載此img檔案mount-oloop-tsquashfsinstall.img/mnt/installmkdirtmp#掛載的install.img不能編輯,需要拷貝一份,修改後替換原install.img檔案rsync-av/mnt/install/tmp/#進入背景圖片所在目錄,選擇需要修改的圖片,並替換(主機圖片尺寸,格式需要與原來的相同),圖片位置為:tmp/install/usr/share/anaconda/pixmaps#重新建立新的install.imgmksquashfstmp/install_v1.img-all-root#替換install.imgcptmp/install_v1.imginstall.img
9.2 修改安裝過程中的歡迎語
mkdir/data/ISO/isolinux/tmp#解壓initrd.img鏡像xz-dc../initrd.img|cpio-id#修改歡迎語.buildstamp檔案,把其中的CentOS替換為PowerSoftvim.buildstamp#建立新的initrd.img並替換find.|cpio-c-o|xz-9--format=lzma>../initrd.img
附件下載:
ks.cfg :http://xiexiaojun.blog.51cto.com/2305291/1632139