一、制作环境准备 实验环境: 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 -y install anaconda repodata createrepo mkisofs rsync 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 的内容如下 # Kickstart file automatically generated by anaconda. #version=DEVEL install #text cdrom #设置安装语言 #lang en_US.UTF-8 lang zh_CN.UTF-8 keyboard us #skip the X configuration skipx network --onboot no --device eth0 --bootproto dhcp --noipv6 #设置root密码,此处为:centos rootpw --iscrypted $6$q4pbJVjqD7ZmOEEq$f7C0H8gIBf3rlKXqVn0UOVfOYqYIG8kFU2yBghH5lc0uVjmU0mFTSgHe4MwZGuXvHWZOyXxhnBoIK9yIuDBt20 firewall --service=ssh authconfig --enableshadow --passalgo=sha512 selinux --enforcing timezone --utc Asia/Chongqing bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work #clearpart --linux --drives=sda #volgroup VolGroup --pesize=4096 pv.008002 #logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200 #logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1984 --maxsize=1984 #part /boot --fstype=ext4 --size=500 #part pv.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 part swap --recommended --ondisk=sda #repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 #这句一定要注释掉不然会提示找不到名为CentOS 的有效的repo #要安装的软件包@ 开头的为group,也可写单个包名如 vim %packages @core @server-policy @workstation-policy %end #%post --nochroot #mount cdrom #/bin/mkdir -p /mnt/cdrom #/bin/mount -r -t iso9660 /tmp/cdrom /mnt/cdrom #umount cdrom #/bin/umount /mnt/cdrom %post #这部分是安装完系统之后执行的步骤,可自定义 /bin/echo "mount -n -o remount,ro /" >> /etc/rc.local /bin/echo "tmpfs /tmp tmpfs defaults 0 0" >> /etc/fstab %end #--Reboot the host after installation is done reboot 4、修改 isolinux.cfg 配置文件,指定 ks 路径 注意,编辑这个文件,需要强制保存。 :wq! # vi ./iso/isolinux/isolinux.cfg default auto #default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.5! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label auto kernel vmlinuz append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest 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 \ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./ 9.修改光盘背景,文字等信息 9.1修改系统自动安装过程中显示的背景图片.修改光盘背景,文字等信息 #进入光盘images目录 cd /data/ISO/images/#install.img镜像中包含了光盘安装过程中使用到的背景图片,挂载此img文件mount -o loop -t squashfs install.img /mnt/install mkdir tmp #挂载的install.img不能编辑,需要拷贝一份,修改后替换原install.img文件 rsync -av /mnt/install/ tmp/#进入背景图片所在目录,选择需要修改的图片,并替换(主机图片尺寸,格式需要与原来的相同),图片位置为:tmp/install/usr/share/anaconda/pixmaps #重新创建新的install.img mksquashfs tmp/ install_v1.img -all-root #替换install.imgcp tmp/install_v1.img install.img 9.2 修改安装过程中的欢迎语 mkdir /data/ISO/isolinux/tmp #解压initrd.img镜像 xz -dc ../initrd.img | cpio -id#修改欢迎语.buildstamp文件,把其中的CentOS替换为PowerSoft vim .buildstamp #创建新的initrd.img并替换find . | cpio -c -o | xz -9 --format=lzma > ../initrd.img 附件下载: ks.cfg 下载地址:http://xiexiaojun.blog.51cto.com/2305291/1632139 (责任编辑:IT) |