定制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、安装所需工具包

#  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# �H清除 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


参考链接:

http://www.cnblogs.com/jython/p/4301924.html

http://blog.chinaunix.net/uid-20648944-id-4357518.html

http://www.linuxidc.com/Linux/2015-04/115808.htm


你可能感兴趣的:(linux)