pxe+kickstart无人值守自动安装CentOS6.5
一、什么是PXE?
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术, 工作于Client/Server的网络模式。严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个
PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE
协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
二、Kickstart技术:
Kickstart技术的核心是:自动应答文件(Kickstart文件),就是将本来在安装过程中需要我们手动设置的语言、密码、网络参数等通过读取自动应答文件实现自动设置。也就是说,我们需要事先将对操作系统的设置写入自动应答文件,开始安装操作系统时,指定安装程序读取自动应答文件实现自动安装及部署操作系统。
三、PXE的工作过程
1.客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP
2.DHCP服务器返回分给客户机IP以及bootstrap文件的放置位置(该文件一般是放在一台TFTP服务器上)
3.客户机向本网络中的TFTP服务器索取bootstrap文件
4.客户机取得bootstrap文件后之执行该文件
5.根据bootstrap的执行结果,通过TFTP服务器加载内核和文件系统
6.进入安装画面, 此时可以通过选择FTP,HTTP,NFS方式之一进行安装
四、配置环境:
先将防火墙等全关闭:sed -ri '/^SELINUX/c\SELINUX=disabled' /etc/selinux/config
iptables -F service iptables save 临时关闭:setenforce 0
服务器的ip:192.168.139.136
步骤如下:
(1)安装部署DHCP服务
yum install -y dhcp
修改配置文件:vim /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.139.0 netmask 255.255.255.0 {
range 192.168.139.150 192.168.139.200;
option routers 192.168.139.2;
next-server 192.168.139.136;
filename "pxelinux.0";
配置说明:指定为192.168.139.0/24网络分配动态IP地址,动态地址池从192.168.139.150至192.168.139.200;客户端获取的网关地址为192.168.139.2;TFTP地址为192.168.139.136,启动文件名称为pxelinux.0。
启动DHCP服务:service dhcpd start
(2)安装tftp部署服务
yum install -y tftp-server
修改配置文件:vim /etc/xinetd.d/tftp
service tftp
{
disable = no 启动服务器
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
共享路径为/var/lib/tftpboot。
per_source = 11
cps = 100 2
flags = IPv4
tftp服务器由tftp-server软件包提供,默认由xinetd超级服务进行管理,因此配置文件位于/etc/xinetd.d/tftp。配置时只要将“disable = yes”改为“disable = no”,然后再启动xinetd服务即可。
(3)将客户端所需启动文件复制到TFTP服务器
用于PXE网络安装的引导程序为pxelinux.0,由软件包syslinux提供。安装好软件包syslinux,然后将文件pxelinux.0也复制到tftp服务的根目录下
yum install -y syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
将光盘或ISO挂载到/media中,将安装镜像中的启动镜像文件和启动配置文件复制到TFTP共享目录下
mount /dev/cdrom /media/
cp /media/isolinux/vmlinuz /var/lib/tftpboot/
cp /media/isolinux/initrd.img /var/lib/tftpboot/
启动菜单用来指导客户机的引导过程,包括如何调用内核、如何加载初始化镜像。默认的启动菜单文件为default,应放置在tftp根目录的pxelinux.cfg子目录中,典型的启动菜单配置可参考以下操作手动建立。
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改启动配置文件如下:
vim /var/lib/tftpboot/pxelinux.cfg/default
######################
default vesamenu.c32
#prompt 1 #显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
timeout 600 #在用户输入之前的超时时间
display boot.msg#显示某个文件的内容,注意文件的路径。默认是在/var/lib/tftpboot/ 目录下。也可以指定位类似 '/install/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 linux #'label' 指定你在 'boot:' 提示符下输入的关键字,比如boot: linux[ENTER],这个会启动'label linux' 下标记的kernel 和initrd.img 文件。
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz #kernel 参数指定要启动的内核。
append initrd=initrd.img ks=nfs:192.168.139.136:/ks/ks.cfg
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 -
配置说明:default指定默认引导方式,即下面的以label开头的各种引导方式;kernel指定的是系统内核文件;后面的ks参数可以指定自动应答文件的位置,本例设置为通过访问192.168.139.136的NFS共享方式读取kickstart文件。
重启tftp服务:service xinetd restart
(4) 创建kickstart自动应答文件
mkdir /ks
touch /ks/ks.cfg
(ks.cfg用来配置安装系统时的各种参数,比如用户名密码、如何分区、配置网卡等,可按自己需求进行配置。)
vim /ks/ks.cfg
以下是ks.cfg的自动应答文件内容:
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# 禁用防火墙规则iptables
firewall --disabled
# 安装系统
install
# nfs服务器地址ip,及nfs上的系统镜像路径
nfs --server=192.168.139.136 --dir=/media
# Root 密码(加密的123456)
rootpw --iscrypted $1$16PXgd.m$C4vE6OJCMGfQVadgm0DSe.
# System authorization information
auth --useshadow --passalgo=sha512
# 使用字符界面安装
text
firstboot --disable
# 美式键盘
keyboard us
# 系统语言
lang en_US
# 关闭Selinux
selinux --disabled
# 不配置图形界面
skipx
# 安装日志记录级别为 info
logging --level=info
# 安装完成后重启
reboot
# 系统时区
timezone Asia/Shanghai
# 网络配置:动态获取ip、网卡名称eth0,开机自动启动网络服务,不开启ipv6,主机名(自定义,可以不写,默认localdomain:localhost)
network --bootproto=dhcp --device=eth0 --onboot=on --noipv6 --hostname=CentOS04
# 系统启动引导配置:mbr引导
bootloader --location=mbr
# 磁盘分区,zerombr:一定要有,不然安装的时候会停在格式化分区界面
zerombr
clearpart --all --initlabel #删除所有分区后再重新分区
# 磁盘分区方式
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
# 安装完成后要执行的脚本
%post
/sbin/chkconfig --level 2345 atd off
/sbin/chkconfig --level 2345 httpd off
/sbin/chkconfig --level 2345 cups off
/sbin/chkconfig --level 2345 smartd off
/sbin/chkconfig --level 2345 bluetooth off
/sbin/chkconfig --level 2345 sshd on
/sbin/chkconfig --level 2345 snmpd on
/usr/sbin/useradd tomcat
mkdir /root/.ssh/
chmod -R 600 /root/.ssh/
%end
# 自定义一些软件包,比如vim、开发工具
%packages
@additional-devel
@development
@core
vim-common
vim-enhanced
vim-minimal
wget
lrzsz
%end
(5)部署NFS服务
修改NFS配置文件如下:vim /etc/exports
/ks 192.168.139.0/255.255.255.0(ro)
/media 192.168.139.0/255.255.255.0(ro)
启动NFS服务: service nfs start
(6)开启客户机
对于首次安装的客户机来说,不需要进入BIOS更改启动顺序,从CD-ROM或硬盘找不到自然会从网络寻找安装源。
自动安装如下图所示:
注:
一、Kickstart文件简介
==即把整个安装过程中要回答或做的事全部体现在应答文件中。。。
• Kickstart 安装选项:包含语言,防火墙,密码,网络,分区的设置等;
• %Pre部分:安装前解析的脚本,通常用来生成特殊的ks配置,比如由一段程序决定磁盘分区等;
• %Package部分:安装包的选择,可以是@base 这样的组的形式,也可以是这样 http-* 包的形式;
• %Post部分:安装后执行的脚本,通常用来做系统的初始化设置。比如启动的服务,相关的设定等。
二、创建ks文件,并共享
方法一: 手动安装一台服务器,会自动生成ks文件,修改!
方法二: 使用system-config-kickstart生成(进入本机服务器去获取而不是远程,远程就打不开图形化界面)
[[email protected] ~]# yum -y install system-config-kickstart