1 什么是PXE:
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP简单文件传输协议(trivial file transfer protocol)或MTFTP多路简单文件传输协议(multicast trivial file transfer protocol)下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。
PXE 协议可以使计算机通过网络启动。此协议分为 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 上下载所需的文件了。
2 PXE的工作过程:
(1) PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
(2) DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
(3) PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;(pxelinux.0是一个bootloader,类似于grub,通过它来load kernel)
(4) PXE Client 取得pxelinux.0 文件后之执行该文件;
(5) 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;(加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz))
(6)进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
3 PXE+Kickstart无人值守安装操作系统架构图:
要达成PXE必须要有两个环节:
(1)一个是客户端的网卡必须要支持PXE用户端功能,并且开机时选择从网卡启动,这样系统才会以网卡进入PXE客户端的程序;
(2)一个是PXE服务器必须要提供至少含有DHCP以及TFTP的服务!
且其中:
· DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;
· TFTP则提供客户端的boot loader及kernel file下载路径。
(3)还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务。
二、 什么是Kickstart:
kickstart是一个利用Anconda工具实现服务器自动化安装的方法;通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置;
工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果ks.cfg文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
ks.cfg是一个简单的文本文件,文件包含Anconda在安装系统及安装后配置服务时所需要获取的一些必要配置信息(如键盘设置,语言设置,分区设置等);Anconda直接从该文件中读取必要的配置,只要该文件信息配置正确无误且满足所有系统需求,就不再需要同用户进行交互获取信息,从而实现安装的自动化;但是配置中如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样。一旦用户进行了选择,安装会以非交互的方式(unattended)继续。
使用kickstart优势:
1. 流线化自动化的安装;
2. 快速大量的裸机部署;
3. 强制建立的一致性(软件包,分区,配置,监控,安全性)
4. 减少人为的部署失误
使用Kickstart方法安装的过程:
1. 创建一个kickstart文件
2. 创建有kickstart文件的引导介质或者使这个文件在网络上可用;
3. 筹备一个安装树
4. 开始ks安装:anconda自身启动 -->选取ks安装模式--> 从ks文件读取配置 --> 最后安装
创建kickstart配置文件ks.cfg的方式:
1. 文本编辑器编辑生成:vim
2. 用图形化界面配置:system-config-kickstat(需要安装system-config-kickstart.noarch包)
注:图形化界面配置时,磁盘选项无法创建配置LVM(逻辑卷);
3.文件生成后,推荐使用ksvalidator命令检查配置文件语法及完整性错误;
如: [root@bogon ~]# ksvalidator ks.cfg
not enough arguments for format string
PXE+Kickstart 无人值守安装操作系统完整过程如下:
三.系统安装过程
四. Anaconda简介
Anaconda是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序是把位于光盘或其他源上的数据包,根据设置安装到主机上的一个程序;为实现该定制安装,其提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息);
Anaconda支持的管理模式:
Kickstart提供的自动化安装
对一个RedHat实施upgrade
Rescuse模式对不能启动的系统进行故障排除;
引导有多种方式:
要进入安装步骤,需要先有一个引导程序引导启动一个特殊的Linux安装环境系统;
1. 基于网络方式的小型引导镜像,需要提供小型的引导镜像;
2. U盘引导,通过可引导存储介质中的小型引导镜像启动安装过程;
3. 基于PXE的网络安装方式,要提供PXE的完整安装环境;
4. 其他bootloder引导(如GRUB)
可用的安装方式:
本地CDROM
磁盘驱动器
NFS映像
FTP
HTTP
通过网络方式安装时:
不论通过FTP、HTTP还是NFS方式共享安装,可以将安装光盘先拷贝到网络服务器上保存为iso镜像,然后loop挂载到共享目录或网页目录(当然,拷贝镜像中的所有文件到指定位置或直接挂载到共享目录也可),而通过NFS方式时,可以直接将光盘的iso文件放到共享目录即可,安装程序挂载共享目录后可以自动识别镜像;
五.centos 6 的ISO目录文件介绍:
.discinfo 文件是安装价质的识别信息,安装过程中,anaconda会去读取.discinfo 和.treeinfo文件,获取光盘信息.
.treeinfo 文件是系统版本,创建时间及文件目录树结构信息
CentOS目录存放安装软件包及信息(Centos 6版本的名称是Packages)
base 目录存放定制脚本及包信息
packages就是存放包的目录,对这个目录执行createrepo命令就会生成一个repodata的目录.
repodata精确描述一个RPM包的详细信息,如依赖关系,包含文件,校验码信息等;
TRANS.TBL文件记录当前目录的列表,用mkisofs的-T参数重新生成,主要是为了长文件名称
isolinux 目录存放光盘启动时的安装界面信息
DHCP主要是提供客户端网络参数与TFTP的位置和boot loader的文件名。
编辑/etc/dhcp/dhcpd.conf在subnet的区块内加入TFTP的相关位置和PXE上专门为PXE客户端下载的boot loader文件名称为pxelinux.0。
安装DHCP服务 # yum -y install dhcp
复制配置模板文件到DHCP的配置目录中 # cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
修改/etc/dhcp/dhcpd.conf 配置文件,内容如下:
ddns-update-style interim;
ignore client-updates;
filename "pxelinux.0"; #pxelinux 启动文件位置;
next-server 192.168.111.130; #TFTP Server 的IP地址;
subnet 192.168.111.0 netmask 255.255.255.0 {
option routers 192.168.111.130;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.111.100 192.168.111.200;
default-lease-time 21600;
max-lease-time 43200;
}
启动DHCP服务 # /etc/init.d/dhcpd start
boot loader文件pxelinux.0以及内核相关的配置文件(目录pxelinux.cfg下)主要都是由TFTP来提供的。
TFTP告诉客户端TFTP的根目录在哪里,这样客户端才能找到相关文件。TFTP是由xinetd这个super daemon所管理的,因此设定好TFTP之后,要启动的是xinetd。
2.1 安装tftp-server
yum -y install xinetd
yum -y install tftp-server
2.2 配置tftp 服务,将disable 设置为no
vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
2.3 启动tftp服务 # /etc/init.d/xinetd restart
3.配置支持PXE的启动程序
使用PXE的开机引导的话,需要使用CentOS提供的syslinux包,(syslinux是一个功能强大的引导加载程序,而且兼容各种介质。syslinux是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。)
要安装Linux系统,必须提供Linux内核文件和initrd文件,从系统安装镜像中获取内核相关文件,将内核相关文件放在/tftpboot/目录下。
3.1 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 获取boot loader文件
3.2 复制iso 镜像中的/image/pxeboot/initrd.img 和vmlinux 至/var/lib/tftpboot/ 文件夹中
cp /var/www/html/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/ # 获取Linux内核文件和initrd文件
3.3 复制iso 镜像中的/isolinux/*.msg 至/var/lib/tftpboot/ 文件夹中
cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/ #获取所有菜单说明文件
3.4 在/var/lib/tftpboot/ 中新建一个pxelinux.cfg目录。
pxelinux.cfg是个目录,可以放置默认的开机选项,也可以针对不同的客户端主机提供不同的开机选项。一般来说,可以在pxelinux.cfg目录内建立一个名为default的文件来提供默认选项。
mkdir /var/lib/tftpboot/pxelinux.cfg
3.5 将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default
isolinux.cfg这个文件里提供了开机选项,可以以它作为修改开机选项和菜单的模板,这样修改起来比较容易,也更便捷!cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
3.6 修改default文件
vi /var/lib/tftpboot/pxelinux.cfg/default
default ks #默认启动的是 'label ks' 中标记的启动内核
prompt 1 #显示 'boot: ' 提示符。 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容,'1'则提示。
timeout 6 #在用户输入之前的超时时间,单位为 1/10 秒。
display boot.msg #显示某个菜单说明文件的内容,注意文件的路径。默认是在/var/lib/tftpboot/ 目录下。
F1 boot.msg #按下 'F1' 这样的键后显示的菜单说明文件。
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux #'label' 指定你在 'boot:' 提示符下输入的关键字,比如boot: linux[ENTER],这个会启动'label linux' 下标记的kernel 和initrd.img 文件。
kernel vmlinuz #kernel 参数指定要启动的内核。
append initrd=initrd.img #append 指定追加给内核的参数,能够在grub 里使用的追加给内核的参数,在这里也都可以使用。
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks=http://192.168.111.130/ks.cfg initrd=initrd.img #告诉系统,从哪里获取ks.cfg文件 label local
localboot 1
label memtest86
kernel memtest
append -
4.选择系统的安装方式
系统的安装方式可以选择HTTP、FTP、 NFS,我们这里介绍HTTP方式的安装。
4.1 安装并配置HTTP
# yum install httpd –y
# rpm -qa|grep httpd
开启服务并设置开机启动
# /etc/init.d/httpd start
# chkconfig --level 35 httpd on
4.2 加载ISO镜像,在虚拟机中设置加载ISO镜像,将iso文件挂载至/mnt/cdrom.
4.3 复制光盘全部内容至http 的根目录/var/www/html/ 下
# cp -r /mnt/cdrom/ /var/www/html/
4.4 启动httpd服务
七、生成ks.cfg 文件
7.1 安装Kickstart
yum install system-config-kickstart
7.2 在桌面环境下配置Kickstart,生成ks.cfg 文件,保存在/var/www/html目录下。
7.3 打开/var/www/html/ks.cfg 文件进行查看并做修改。
八.测试安装
创建虚拟机,选择nat模式进行测试安装。
CentOS 6.x下PXE+Kickstart无人值守安装操作系统
原文地址:http://blog.51cto.com/12674559/2107631