您的位置:首页 > 运维架构 > Linux

定制centos 6.5自动安装光盘

2015-04-14 10:57 519 查看
一、制作环境准备
实验环境:
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、安装所需工具包
#  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=DEVELinstall#textcdrom#设置安装语言#lang en_US.UTF-8lang zh_CN.UTF-8keyboard us#skip the X configurationskipx
network --onboot no --device eth0 --bootproto dhcp --noipv6#设置root密码,此处为:centosrootpw --iscrypted $6$q4pbJVjqD7ZmOEEq$f7C0H8gIBf3rlKXqVn0UOVfOYqYIG8kFU2yBghH5lc0uVjmU0mFTSgHe4MwZGuXvHWZOyXxhnBoIK9yIuDBt20firewall --service=sshauthconfig --enableshadow --passalgo=sha512selinux --enforcingtimezone --utc Asia/Chongqingbootloader --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=sdapart /home --fstype=ext4 --grow --size=1 --ondisk=sda #使用剩下的所有空间part /opt --fstype=ext4 --size=3000 --ondisk=sdapart /var --fstype=ext4 --size=2000 --ondisk=sdapart / --fstype=ext4 --size=8000 --ondisk=sdapart 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 donereboot4、修改 isolinux.cfg 配置文件,指定 ks 路径
注意,编辑这个文件,需要强制保存。 :wq!# vi ./iso/isolinux/isolinux.cfg default auto #default vesamenu.c32#prompt 1timeout 600 display boot.msg menu background splash.jpgmenu title Welcome to CentOS 6.5!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000 label auto kernel vmlinuz append ks=cdrom:/isolinux/ks.cfg initrd=initrd.imglabel linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.imglabel vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodesetlabel rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescuelabel local menu label Boot from ^local drive localboot 0xfffflabel 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


参考链接:
/article/5614448.html
http://blog.chinaunix.net/uid-20648944-id-4357518.html
http://www.linuxidc.com/Linux/2015-04/115808.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: