这里我们使用红帽提供的kickstart工具来实现,kickstart只是用来生成配置文件的,实际上是anaconda这个程序在工作。实质上我们在安装时候输入的各项参数都被系统记录下来生成一个叫做anaconda.cfg配置文件,最后根据这个配置文件的内容来进行安装,这个文件在全新安装系统之后就保存在/root/anaconda.cfg这里。

安装和启动kickstart

        kickstart这个工具默认没有安装,我们使用 yum install system-config-kickstart安装
打开配置界面system-config-kickstart,接下来会出现一个图形化的配置界面让你选择安装时候的各项参数,最后两项是安装系统前和安装系统之后可以执行的脚本,如果需要的话,直接写在里面就好了,写的时候不需要指定#!/bin/bash

kickstart的配置文件
各项参数选择完毕之后选择file-save,默认保存位置在/root/ks.cfg,我们以系统生成的文件为蓝本进行一些简单的修改如下:
platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr yes
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text       这里是选择以文本的方式来安装
# Firewall configuration
firewall --disabled  不启用防火墙
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
key --skip 在这里我选择跳过输入序列号的步骤,当然你有的话直接把序列号写在这里key xxx
keyboard us
# System language
lang zh_CN
# Installation logging level
logging --level=info 
# Use network installation
url --url=ftp://192.168.1.101/pub 我们在图形化配置的时候输入ftp服务器这样写:
#192.168.1.101  不需要加ftp
#/pub
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on 我这里有DHCP我选择了启动DHCP,这里也可以指定IP地址等信息如
#network --bootproto=static --ip=192.168.1.101 --netmask=255.255.255.0 --gateway=192.168.1.1 --nameserver=
#192.168.1.1
# Reboot after installation
reboot  安装后我们选择自动重启一下
#Root password
rootpw --iscrypted $1$r6XnV.dM$grrK7vTxFZ5ykGS/kLT231
这里是使用MD5加密的root密码
# SELinux configuration
selinux --disabled 禁用selinux
# System timezone
timezone  Asia/Shanghai
# Install OS instead of upgrade
install 开始一个全新的安装而不是升级
# X Window System configuration information
xconfig  --defaultdesktop=KDE --depth=16 --resolution=1024x768 --startxonboot
# Disk partitioning information
zerombr yes  在这里我自己指定的分区信息如下(因为kickstart只支持基本的分区,而不支持lvm和raid,我们手动编辑):
clearpart --all  清除所有分区信息
part swap --size 1024
part /boot --fstype ext3 --size 100
part pv.01 --size 40960
volgroup vol0 --pesize=32768 pv.01
logvol / --fstype ext3 --name=root --vgname=vol0 --size=29984
logvol /home --fstype ext3 --name=home --vgname=vol0 --size=1984

指定KS文件的位置:

 

实现redhat的完全自动化安装_第1张图片

制作启动引导盘

配置文件设置好了之后接下来我们来制作一个启动引导盘
打开系统安装光盘,把isolinux这个目录复制出来,假设我复制到/tmp/iso目录下面,首先我们把ks.cfg文件也复制过来,放在isolinux
目录的外面就可以了,当然位置无所谓,把isolinux/isolinux.cfg文件内容做下修改
label linux
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg 把ks.cfg文件的位置指定一下,告诉系统引导启动的时候到哪里来找这个文件
制作成一个引导光盘
mkisofs -o boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T iso/
好了,可以测试一下,开个虚拟机放入引导盘,直接回车,该干什么干什么吧,等下系统会自动启动等待你登录,是不是方便多了啊!

kickstart分区语法

kickstart使用很简单和很方便,唯一的不足是只能进行基本的磁盘本区,不能够构建lvm或者是raid,但是我们可以通过手动修改的方式来添加,语法如下:

part/partition  (install模式必须)
    建立新分区;
    part  |swap|pv.id|rdid.id  options
    mntpoint:挂载点,是在创建普通分区时指定新分区挂载位置的项;挂载点需要格式正确
    swap: 创建swap分区;
    raid.id:  表示创建的分区类型为raid型;必须用id号进行唯一区别;
    pv.id:  表示所创建的分区类型为LVM型;必须用唯一id号进行区别;
    --size=  设置分区的最小值,默认单位为M,但是不能写单位;
    --grow  让分区自动增长利用可用的磁盘空间,或是增长到设置的maxsize值;
    --maxsize 设置分区自动增长(grow)时的最大容量值,以M为单位,但不能写单位;
    --onpart=/--usepart=     设置使用原有的分区;
    --noformat    设置不格式化指定的分区,在跟—onpart一同使用时,可以避免删除原有分区上的数据,在新安装的系统中保留使用数据;
    --asprimary    强制制定该分区为主分区;若指定失败,分区会失败,导致安装停止;
    --fstype=    新增普通分区时指定分区的类型,可以为ext2、ext3、ext4、swap、vfat及hfs;
    --ondisk=/--ondrive=     设定该分区创建在一个具体的磁盘上;
    --start   指定分区以磁盘上那个磁道开始;需要跟--ondisk参数一块使用;
    --end    指定分区以磁盘上那个磁道结束;需要跟上述两个参数一起使用;
    --recommended:让系统自行决定分区的大小;在创建swap分区时,若RAM<2G,则分区大小为2*RAM;若RAM>=2G时,分区大小为RAM+2G;
    --bytes-pre-inode=    指定分区格式化时inode的大小;默认值为4096
    --fsoptions=    指定创建fstab文件时该分区挂载参数项;
    例:
    part  /boot  --fstype=“ext3” --size=100
    part  swap  --fstype=“swap” –size=512 
    part  /  --bytes-pre-inode=4096  --fstype=“ext4”--size=10000
    part  /data    --onpart=/dev/sdb1  --noformat
    part  raid.100  --size=2000
    part  pv.100     --size=1000
raid  (可选)
    设置RAID。
    raid 挂载点  --level=  --device= 
    挂载点:    选取根/时,注意尽量避免/boot在RAID内,除非为RAID1;
    --level=     设置RAID级别
    --device=  RAID设备名称,如md0,md1...
    --byte-pre-inode=    设置该RAID分区上inode大小;若分区文件系统类型不支持该参数,会静默忽略参数;
    --spares=  设置RAID的热备盘
    --fstype=  设置文件系统类型
    --fsoptions=  设置挂载该文件系统时自定义的一些参数,参数写入fstab文件;
    --useexisting  使用现有的RAID设备并且重新格式化原设备
    --noformat     在使用现有的RAID设备时不格式化原有RAID设备
    例:完整创建一个RAID1设备示例;
    part  raid.10  --size=1000  --ondisk=/dev/sdb
    part  raid.11  --size=1000  --ondisk=/dev/sdc
    raid  /data  --level=1  --device=md0  raid.10  raid.11
volgroup  (可选)
    创建一个LVM卷组VG;
    volgroup  vg_name  partition  [options]
    --useexiting   使用现有的VG并且重新格式化
    --noformat    使用现有的VG时不做格式化
    --pesize          设置PE(physical extents)块大小
    例:
    part pv.11  --size=2000
    volgroup  myvg  pv.11
logvol  (可选)
    创建一个LVM逻辑卷LV;
    logvel  mnt_point  --vgname=vg_name  --size=lv_size  --name=lv_name  [options]
    --useexiting  使用现有的LV并且重新格式化
    --noformat   使用现有的LV时不做格式化
    --fstype=      指定RAID分区类型
    --fsoptions=  设置挂载该文件系统时自定义的一些参数,参数写入fstab文件;
    --byte-pre-inode=    设置该RAID分区上inode大小;
    --precent=    设定LV大小为VG可用空间的比例;
    例:
    part pv.20  --size=5000
    volgroup  mvvg  pv.20
    logvol    /data  --vgname=myvg  --size=3000  --name=mydata

kickstart自动化安装时制作raid的范例:

 

实现redhat的完全自动化安装_第2张图片