Pxe+kickstart制动安装系统
所需环境 pxe+kickstart+dhcp+tftp+(vsftp或www或nfs或nfs+vsftp)
由于本人在redhat6上环境中实验可能于rehat5有所不同,重要不同的地方我都有标注
一.概念
Pxe
Pxe是一种引导的方式,安装pxe要求网卡的支持,pxe分为S,C端,C端将pxe的安装在网卡的rom中,当计算机引导时,bios把pxe调入内存执行,C端将放置S端的文件通过(tftp)下载到本地运行,这时想两主机互通就必须要有IP地址 就需要dhcp来对C端分配IP地址。所以pxe要基于(ptftp+dhcp)。
Kickstart
Kickstart是一种无人值守的安装方式,kickstart通过记录典型的安装过程所需要人工干预填写的各种参数,生成一个模板文件ks.cfg(可任意取名)当在制动装机的时候,会按ks.cfg的参数来安装,没有所需参数时要手工干预。
二.部署过程
1.先安装好所需的服务
#yum install *tftp*
#yum install *kickstart*
#yum install *dhcp*
#yum install *nfs*
2.dhcp配置文件
原先是什么内容也没有,可以cat 样板文件到配置文件
#cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |tee /etc/dhcp/dhcpd.conf
(redhat5的dhcp.d在/etc下)根据自己所需进行修改
#netstat -nulp | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 29927/dhcpd
说明开启了dhcp
查看下dhcpd的配置文件
#cat /etc/dhcp/dhcpd.conf
# dhcpd.conf
# option definitions common to all supported networks...
option domain-name "lin.com"; 域名
#option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600; 默认租凭时间
max-lease-time 7200; 最长租凭时间
# Use this to enble / disable dynamic dns updates globally.
ddns-update-style none;
作用:定义所支持的dns动态更新类型。
none :表示不支持动态更新。
interim :表示DNS互动更新模式。
ad-hoc :表示特殊的DNS更新模式。
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative; 设置为高优先级的dhcp服务器
next-server 192.168.50.4; 引导文件的主机地址
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7; 设置日志的路径
dhcp服务器的地址池:(dhcp服务器的ip要在这范围内)
subnet 192.168.50.0 netmask 255.255.255.0 {
range 192.168.50.250 192.168.50.240;
dhcp服务器服务器的分配的地址池
option domain-name-servers 192.168.50.4;
dhcp服务器的地址
option domain-name "lin.com";
dhcp服务器的域名
option routers 192.168.50.254;
dhcp发配下去的的网关
option broadcast-address 192.168.50.255;
广播地址
default-lease-time 600;
max-lease-time 7200;
filename "/pxelinux.0";指定客户端启动要载入的初始启动文件
}
3.tftp的配置
配置文件:/etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
#netstat -nulp |grep 69
udp 0 0 0.0.0.0:69 0.0.0.0:* 9650/xinetd
说明tftp已经开启
把iso挂载在/mnt 或者直接把ios复制在/mnt下 不要每次都去挂载,这里我是把 ios复制在/mnt下
#cd /tftpboot
#cp -rv /mnt/iso5/isolinux/*
#mkdir pxelinux.cfg
#cp ioslinux.cfg ./pxelinux.cfg/default
#cp /usr/share/syslinux/pxelinux.0 ./
Kickstart的使用
打开xmanager的被动模式
#export DISPLAY=192.168.50.5:0
#system-config-kickstart
设置安装选项
保存
生成一个ks.cfg文件
#cat ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
nfs --server=192.168.50.4 --dir=/mnt/iso5
# Root password
rootpw --iscrypted $1$/zcqnuN1$dtOz0N9i5DEHsUgn8AdKm/
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System authorization information
auth --useshadow --passalgo=md5
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="ext3" --size=100
part swap --asprimary --fstype="swap" --size=4096
part / --asprimary --fstype="ext3" --grow --size=1
在自动安装过程中,有遇到手工干预,调试这个文件,实现全自动。
三.nfs的配置
因为我这里是在rehat6上,所以portmap与nfs已经结合,跟rehat5不一样的启动nfs就自动启动portmap。
#cat /etc/export
/mnt/iso5 192.168.50.0/24(ro,sync)
/tftpboot 192.168.50.0/24(ro,sync)
# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/tftpboot 192.168.50.0/24
/mnt/iso5 192.168.50.0/24
#service nfs restart
四.在修改下启动文件
#cat /tftp/pxelinux.cfg/default
default linux 默认启动 下面的label linux
prompt 1 显示boot提示符,如果改成0 。直接启动default
timeout 10 超时10s
display boot.msg 显示某个文件内容 默认路径是/tftpboot
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz 指定启动内核 默认路径/tftpboot
append ks=nfs:192.168.50.4:/tftpboot/ks.cfg initrd=initrd.img
append指定追加给内核的参数,ks指定kickstart文件的位置
Initrd 指定initrd.img文件,默认路径是/tftpboot
(什么是initrd.img文件这里简单解释下:系统内核 vmlinuz 被加载到内存后开始提供底层支持,在内核的支持下启动各种模块,服务等被加载运行。但是如果你的硬盘是scsi接口而内核又不支持这种接口,你就要重新编译内核文件代替原来的vmlinuz。这样就很麻烦,这里就用到了ininrd.img,ininrd就是initialized ram disk,是ram disk 的映像文件,内核加载这个文件,来加载各种模块,然后在去加载真正的root分区。)
label text
kernel vmlinuz
append initrd=initrd.img
label ks
kernel vmlinuz
append ks initrd=initrd.img ks=nfs:19.168.50.4:/tftpboot/ks.cfg
label local
localboot 1
label memtest86
kernel memtest
append -
确保以上服务都开启就可以开始测试了,使用http或ftp思想都是一样。