原理介绍
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
了解整个安装流程
1、pxe 启动,就去广告寻找dhcp 服务器获取ip 地址pxelinux.0 文件
2、client 通过tftp 连接到服务器,下载pxelinux.0 文件。
3、client 下载成功pxelinux.0 文件后,系统还会下载控制pxelinux.0 的配置文件,叫default。然后client 就会按照default 的配置来执行pxelinux.0 文件。
4、现在client 端会在获取一次IP 地址。并且根据DHCP 服务器配置文件找到kickstart 配置文件并下载。也是使用的tftp 协议。
5、pxelinux.0 文件定义的想服务器请求linux 内核,根文件系统之类的参数。运行这个文件,client 就会向服务器请求相关的文件并下载,都里使用的都是tftp 协议。
6、文件下载成功后,client 就会启动linux 内核,这就进入了我们安装时候看见的第一个图形界面,这个界面和自己安装看见的第一个画面一样,回车就是图形安装,输入text 就是文本安装那里。如果使用了kickstart,这个界面消失很快,可能看不见。到这里PXE 启动就完成了。
7、下面就该主角kickstart 出场了。其实kickstart 在第四步已经出现了,当按照default 要求运行pxelinux.0 文件,系统读取内核,挂在根文件系统以后,的任务就都交给了kickstart 了。包括安装介质来源、语言、时区、分区、安装哪些包等,都是在kickstart 文件中定义。只要进入这一步,kickstart 配置文件正确,我们的无人值守安装已经成功了。
原理:通过kickstart生成ks.cfg文件,过滤掉安装过程中人工干预的部分,最终达到从网卡启动后能够自动安装系统直到完成从而实现了大规模部署安装操作系统.
PXE服务器安装
第一步:配置yum环境
挂载镜像文件
[root@pxesv ~]# mount /dev/cdrom /mnt/cdrom/ //挂载光盘镜像文件
mount: block device /dev/sr0 is write-protected, mounting read-only
配置YUM库,指向镜像文件挂载位置.
第二步:安装无人值守所需要的服务及软件包
包括: dhcp,xinetd,tftp,nfs, system-config-kickstart syslinux
[root@pxesv Packages]# yum -y install dhcp xinetd tftp-server nfs* syslinux system-config-kickstart //安装所有需要的包
查看安装的包是否安装成功:
[root@pxesv Packages]# rpm -qa dhcp //为pxe网卡提供网络参数并指向tftp服务器文件
dhcp-4.1.1-31.P1.el6.i686
[root@pxesv Packages]# rpm -qa xinetd //tftp服务依赖服务
xinetd-2.3.14-34.el6.i686
[root@pxesv Packages]# rpm -qa tftp-server //提供启动安装需要的内核文件
tftp-server-0.49-7.el6.i686
[root@pxesv Packages]# rpm -qa nfs-utils //提供安装需要的系统文件
nfs-utils-1.2.3-26.el6.i686
[root@pxesv Packages]# rpm -qa syslinux //提供pexlinux.0文件
syslinux-4.02-7.el6.i686
[root@pxesv Packages]# rpm -qa system-config-kickstart //生成ks.cfg文件
system-config-kickstart-2.8.6.4-1.el6.noarch
第三步:配置tftp
[root@pxesv tftpboot]# vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the ISOation process for some operating systems.
service tftp
{
disable = no //将yes改成no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
[root@pxesv tftpboot]# service xinetd restart
[root@pxesv tftpboot]#chkconfig xinetd on
第四步:配置dhcp服务器
复制模版进行配置
[root@pxesv ~]# cp -p /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf //复制dhcpd.conf配置模版
添加tftp服务器地址及pexlinux.0文件
[root@pxesv ~]# vi /etc/dhcp/dhcpd.conf //配置DHCP服务器
# dhcpd.conf
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.128.0 netmask 255.255.255.0
{
option routers 192.168.128.254;
option subnet-mask 255.255.255.0;
next-server 192.168.128.101; //指向tftp服务器
filename "pxelinux.0"; //tftp根目录的相对路径
option time-offset -18000;
range dynamic-bootp 192.168.128.100 192.168.128.200;
default-lease-time 21600;
max-lease-time 43200;
}
[root@pxesv ~]#chkconfig dhcpd on
[root@pxesv ~]#service dhcpd restart
第五步:复制安装系统需要的核心文件及光盘镜像
复制初始化安装需要的系统内核等文件到tftp根目录下,并通过模版创建default文件.
[root@pxesv ~]# cd /var/lib/tftpboot/ //tftp的目录跟RHEL5位置不同
[root@pxesv isolinux]# pwd
/mnt/cdrom/isolinux
[root@pxesv isolinux]# cp vmlinuz initrd.img boot.msg vesamenu.c32 splash.jpg /var/lib/tftpboot/ //复制所需要的文件到tftp服务器根目录
[root@pxesv /]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxesv /]# mkdir /var/lib/tftpboot/pxelinux.cfg //创建pxelinux.cfg目录
[root@pxesv /]# cp -p /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default //复制default文件
第六步创建image文件夹
[root@pxesv ~]# cd /var/lib/tftpboot
[root@pxesv tftpboot]# mkdir image
[root@pxesv tftpboot]# ls
boot.msg image initrd.img pxelinux.0 pxelinux.cfg splash.jpg vesamenu.c32 vmlinuz
进入image文件夹,创建对应系统的pxe启动文件夹
[root@pxesv tftpboot]# cd image/
[root@pxesv image]# ls
RH63_64 RH64_64 centos63_64 centos64_64
第七步:共享NFS文件
[root@pxesv ~]# vi /etc/exports
/mnt/nfs *(ro,async)
重启服务
[root@pxesv /]#chkconfig nfs on
[root@pxesv /]#service nfs restart
第八步:创建安装系统文件夹,ks文件夹
[root@pxesv ~]# cd /mnt/nfs
[root@pxesv nfs]# ls
iso ks
[root@pxesv ~]# cd /mnt/nfs/iso/
[root@pxesv iso]# ls
RH63_64 RH64_64 centos63_64 centos64_64
在对应文件夹下面存放系统光盘的所有安装文件(copy方式)
[root@pxesv ~]# cd /mnt/nfs/ks/
[root@pxesv iso]# ls
RH63_64 RH64_64 centos63_64 centos64_64
在对应文件夹下面存放该系统ks.cfg文件,系统安装时调用ks文件可以实现全自动安装
第九步:编辑default文件
编辑default文件,多余部分可以删除,也可以不删除,创建label RH53_32标签,内容指向内核及ks.cfg位置[root@pxesv /]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to Pxeboot Server!
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 local //默认从本地硬盘启动,防止正常服务器重启中进入PXE安装,毁坏系统。
menu label Boot from ^local drive
localboot 0xffff
label redhat64_64_ks //后面跟了ks文件路径的可以实现系统无人值守安装
kernel image/redhat64_64/vmlinuz
append initrd=image/redhat64_64/initrd.img ks=nfs:192.168.128.101:/mnt/nfs/ks/redhat64_64/ks.cfg
label centos65_64_ks //后面跟了ks文件路径的可以实现系统无人值守安装
kernel image/centos65_64/vmlinuz
append initrd=image/centos65_64/initrd.img ks=nfs:192.168.128.101:/mnt/nfs/ks/centos65_64/ks.cfg
label redhat61_32 //后面没有跟ks文件的,需要手动指定系统安装方式,如NFS安装,后面有说明
kernel image/redhat61_32/vmlinuz
append initrd=image/redhat61_32/initrd.img
··············
到此,pxeboot引导安装到此结束
附:配置ks.cfg
安装ks图形化配置界面:
rpm -ivh system-config-kickstart-2.6.19.6-1.el5.noarch.rpm
[root@pxesv /]# system-config-kickstart
根据个人需要配置。配置完成后保存一下文件,并且放到/mnt/nfs/Ks 下对应系统目录
Kick Start是网络安装无人值守按照预定要求自动安装的脚本。文件名称为 ks.cfg,此文件必须为可读的文本文件。获得此文件的方式有两种,一种为通过Kick Start
程序手工创建,而且使用那一个发行版只能用那一个发行版的 Kick Start程序来创建。另外一种是更为直接的通过安装完成后的anaconda-ks.cfg修改得到,anaconda-ks.cfg是在安装过程中有anaconda 程序自动生成的ks.cfg文件,通过修改安装介质(修改CDRom行为 nfs --server=192.168.128.101 --dir=/mnt/nfs/iso/redhat64_64)和去掉分区前面的“#”得到ks.cfg。
[root@pxeserver ~]# cat /mnt/nfs/ks/redhat64_64/ks.cfg
#version=DEVEL
install
nfs --server=192.168.128.101 --dir=/mnt/nfs/iso/redhat64_64
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto static --ip 192.168.128.123 --netmask 255.255.255.0 --gateway 192.168.128.1 --noipv6 --hostname rhel64
rootpw --iscrypted $6$XVtpTT79LYB.y8/z$kH5GvD9isP/TwitUXaeYvAOOa/nuFu26aPNo8X/JxC4RUC0bquiTkZ4Le1hLZPIC8hSEawHXJzTrQvZyDEagM0
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Chongqing
text
reboot
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
clearpart --all --drives=sda
part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1
volgroup vg_rhel64 --pesize=4096 pv.008002
logvol /home --fstype=ext4 --name=lv_home --vgname=vg_rhel64 --grow --size=100
logvol / --fstype=ext4 --name=lv_root --vgname=vg_rhel64 --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_rhel64 --grow --size=4000 --maxsize=4000
%packages
@additional-devel
@base
@cifs-file-server
@chinese-support
@client-mgmt-tools
@compat-libraries
@console-internet
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@desktop-platform-devel
@development
%end
配合前面配置的PXE服务器通过NFS安装linux系统(需要人工干预)
服务器安装设置从网卡启动打开后启动如下界面
等待进入选择需要安装的系统版本界面
选择需要安装的系统版本等待进入系统安装界面
按照提示步骤安装操作系统,到下面这步选择NFS directory
选择网卡,配置网卡自动获取ip地址
NFS安装linux:注意NFS mount options这一行空着就行
进入安装图形界面和正常安装系统一样