linux安装大致可以分为2个阶段
第一阶段:anaconda 阶段
此阶段是linux的预安装环境,提供linux安装选项的一个接口,可以将它比作是window中的PE环境
第二阶段:install 阶段
该阶段系统会按照anaconda 阶段设定的参数自动安装
anaconda有两种模式:
交互式 :和普通安装一样,按照提示选择选项一步步的安装
非交互式:通过读取kickstart文件的配置,进行自动安装
而在安装linux过程中,获取ks.cfg文件的方式有多种,如直接在cdrom中获取,常见的形式还有http,ftp,nfs等方式
cdrom和硬盘:
ks=cdrom:/dir/ks.cfg
ks=hd:/dir/ks.cfg
http和ftp:
ks=http://domain.com/dir/ks.cfg
ks=ftp://domain.com/dir/ks.cfg
NFS:
ks=nfs:domain.com:/dir/ks.cfg
在使用ks.cfg之前,需要先引导启动环境,引导方式有cdrom、usb、PXE等。在引导进入anaconda后,即可通过读取ks.cfg来进行系统的自动安装 ks.cfg文件会在安装linux后,根据用户的安装选项自动生成在root家目录,即anaconda_ks.cfg ks.cfg文件组成大致分为3段
1.命令段:
键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项
2.软件包段:
%packages
@groupname #指定安装的包组
package_name #指定安装的包
-package_name #指定不安装的包
3.脚本段(可选):
%pre :预安装脚本 (由于只依赖于启动镜像,支持的命令很少)
%post:后安装脚本 (基本支持所有命令)
[root@rhel6 ~]# cat /var/ftp/pub/ks.cfg
######################################################################
############## 1 Main Begin
############## 1.1 Text,Key,Keyboard,Lang,Net Begin
# platform=x86, AMD64, 或 Intel EM64T # 通过文本界面进行安装
text
# 安装/升级
install
# 如果是RHEL5的系统,会要求输入key,这里配置为跳过,如果不配置安装时会停在那里要求用户输入key
key --skip
# 安装方式(cdrom/hdisk/http/ftp/nfs),指定安装源的路径
nfs --server=192.168.0.90 --dir=/var/ftp/pub
lang en_US.UTF-8
keyboard us
# 通过DHCP获取IP地址
network --bootproto dhcp
############## 1.1 Text,Key,Keyborad,Lang,Net End
############## 1.2 Partition Begin
# Partition 10000M
%include /tmp/partitioning
############## 1.2 Partition End
############## 1.3 Timezone,X,passwd,security,bootloader Begin
timezone --utc Asia/Shanghai
graphical
# 设置root用户的密码
rootpw redhat
# 禁用防火墙
firewall --disabled
authconfig --useshadow --passalgo=md5
# 激活SELINUX
selinux --enforcing
# 首次引导时,禁用设置代理
firstboot --disable
# 安装Grub到MBR
bootloader --location=mbr
# 安装完成后重启
reboot
############## 1.3 Timezone,X,passwd,security,bootloader End
############## 1 Main End
############## 2 Packages Begin
%packages
# 安装软件包组
@Base
@Core
@basic-desktop
@desktop-debugging
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@legacy-x
@remote-desktop-clients
@x11
# 安装软件包
coreutils
elfutils
elfutils-libelf
elinks
enscript
firefox
gcc
gimp
gimp-data-extras
gimp-print-plugin
gnome-icon-theme
gstreamer
gstreamer-tools
libIDL
libcap
libgsf
libraw1394
mutt
nautilus-cd-burner
ntp
openmotif
openssh
openssh-clients
openssh-server
pyorbit
samba-client
samba-common
startup-notification
ttmkfdir
vim-enhanced
vnc
%end
############## 2 Packages End
############## 3 Post Begin
############## Network Begin
######################################################################
%post
# 固定安装后系统的IP地址
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=XXX
GATEWAY=192.168.0.90
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
EOF
# 提取IP地址
v_ip=`ifconfig eth0 | head -n 2 | tail -n 1 | cut -d ':' -f 2 | cut -d ' ' -f 1`
# 替换ifcfg-eth0文件中IPADDR的xxx为$v_ip
perl -pi -e "s,XXX,$v_ip," /etc/sysconfig/network-scripts/ifcfg-eth0
############## Network End
############## 3 Post End
%pre
echo "Starting PRE" > /dev/tty2
# 以下两行在push 64位系统的时候是必须的(Bug)
cd /mnt/
ln -s Source/Packages ./
v_pci0=$(udevinfo -ap /sys/class/net/eth0 | grep 'ID==' | head -n 1)
v_driver0=$(udevinfo -ap /sys/class/net/eth0 | grep 'DRIVER==' | head -n 1)
v_mac0=$(ifconfig eth0 | grep HWaddr | cut -d ' ' -f 11)
v_ip_short=$(grep $v_mac0 /mnt/stage2/workstation.list | cut -d '-' -f 1)
v_ip=192.168.0.$v_ip_short
if [ ! -z $v_ip_short ]
then
ifconfig eth0 $v_ip
fi
# partitions
if
grep -q hda /proc/partitions
disktype=hda
else
disktype=sda
# 设置分区
cat >> /tmp/partitioning <<EOF
# 清除主引导记录MBR
zerombr yes
# 清除所有的分区
clearpart --all
# 设置/boot分区为50MB,文件系统格式为ext4
part /boot --fstype=ext4 --size=50
# 设置swqp分区为512MB
part swap --size=512
# 创建8GB的PV
part pv.Lrhel6 --size=8000
# 创建 VG
volgroup Lrhel6 --pesize=32768 pv.Lrhel6
# 创建 LV ,并挂载到根分区中
logvol / --vgname=Lrhel6 --size=7000 --name=root
EOF
%end
本文转自Vnimos51CTO博客,原文链接:http://blog.51cto.com/vnimos/1091631,如需转载请自行联系原作者