在工作环境中,批量安装、无键盘鼠标、无显示器、无光驱安装操作系统都需要采用非交互式安装。
pxe安装就是可以通过网络自动加载系统内核,并启动安装程序,再配合kickstart配置文件,完成无交互式安装的方式。
一、基本概念
dhcp
动态主机设置协议(dynamic host configuration protocol, dhcp)是一个局域网的网络协议,使用udp协议工作在67号端口,主要用途是给网络中的设备自动分配ip地址。
tftp
tftp(trivial file transfer protocol,简单文件传输协议)是用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。使用udp协议端口号69。由于使用udp协议,建议使用环境在网络传输质量高的局域网中使用,且传输文件小而少。不支持用户交互,即不能列出服务器目录内容。服务运行依赖超级守护进程xinetd。
xinetd
超级守护进程(extended internet serivices daemon),它是一个管理其它提供网络服务进程的进程,常驻内存。它管理一些不经常启动的网络服务,一旦客户端发起请求,它启动相应的处理服务进程,用完关闭。
这样节省了系统资源的占用,但是有请求时才启用,就不能做到快速响应。对于频繁发起服务的请求,就会频繁创建关闭服务进程,反而导致性能下降。
pxe
pxe,预启动执行环境(preboot execution environment,也被称为预执行环境)提供了一种使用网络接口(network interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
pxe设备可以通过网络接口卡(nic),使用dhcp、tftp协议来搜寻网络服务器上的引导程序。
pxelinux.0
pxe通过网络查找加载的引导程序,称为网络引导程序nbp。
pxelinux.0就是一种nbp。它主要作用是装载执行指派的预引导工作所需的操作系统。
pxelinux.0 文件是 syslinux 这一开放源代码项目的一部分的改进版本。虽然 pxelinux.0 主要是 linux 加载器,但它也可以装载其他操作系统。它的工作方式是使用位于 tftp 服务器上的配置文件来提供引导指令。
kickstart安装
由红帽公司创建的安装方式,通过kickstart,系统管理员能够使用自动化方式完成系统安装。
有一个文件/root/anaconda-ks.cfg ,它是红帽系安装过程中生成的简单的kickstart文件。
kickstart文件分为三个部分,命令段、软件包段、脚本段,各部分要遵循一定的顺序。
需要了解的命令: install命令 告诉系统是安装一个全新的系统而不是升级存在的系统(默认)。安装时,你可以从cdrom、硬盘驱动器、nfs、或者url(ftp,http安装)中指定安装类型。install命令和安装方法必须在不同的行设置。 url命令 支持通过ftp和http从远程服务器安装。通常要使用--url选项。例如,url --url=url repo命令 配置另外的yum仓库,多个repo命令指定多个yum源。
可以使用图形配置界面system-config-kickstart来配置kickstart, 可以基于/root/anaconda-ks.cfg文件,通过图形化窗口再次修改后得到新的kickstart文件。使用yum -y install system-config-kickstart安装此工具。
使用ksvalidator来验证语法。
二、实验环境的准备
前提:
安装虚拟机软件vmware,或者其他虚拟机软件,例如virtualbox开源小巧功能齐全,实验演示的配置都大同小异。 将centos光盘挂载到/media/cdrom,配置本地yum源备用。配置yun请参看博主博文 《linux的程序安装和包管理》,此类博文很多,这里不再赘述。 pxe启动还需要pxelinux.0,需要安装syslinux包。 自动化安装,需要提供kickstart文件,可以采用http/ftp协议提供此文件url。还需要在kickstart文件中指明repo仓库。
环境搭建:
1、安装实验系统并设置实验网络环境
在虚拟机中安装centos 6.5和windows xp系统。
按右下角网络设置centos和xp的网络连接为vmnet2,这样2台虚拟机就可以在一个虚拟网络中通信了。
实验环境采用192.168.23.0/24,centos地址为192.168.23.1,在/etc/sysconfig/network-scripts/ifcfg-eth0修改参数,如下:
检查centos的网络配置
2、检查centos的tftp服务和tftp客户端。
这里没有安装,使用yum list all tftp*,查看后安装相关包,yum –y install tftp* 。
安装完成如下,共有三个包安装了,tftp客户端、tftp-server服务和tftp-server所依赖的xinetd服务包。
3、检查centos的dhcp服务。安装方法同上,包名dhcp
4、关闭iptables防火墙服务。
5、安装syslinux包
6、安装httpd包。默认已安装,否则请参照上面方法安装
到此,实验环境已经搭建成功。
三、服务准备
1、dhcp服务配置
启动失败,什么原因,查看vim /etc/dhcp/dhcpd.conf
原来dhcp管理的网段不在本机网段,修改配置文件
再次启动dhcp,成功
使用xp测试dhcp,成功。至此就可以使用这台xp中的xshell来完成其它操作。
2、tftp服务配置
查看xinetd服务,配置xinet,并启动之
由上查询的包信息可知配置文件路径和tftp的根目录
上面的多步操作中,修改了配置文件/etc/xinetd.d/tftp,将其中的disable改为no,见下图
然后启动了xinetd,也可以在xinetd启动后,修改了配置文件,采用重新装载xinetd,如下:
将测试文件test.txt放在tftp的根目录/var/lib/tftpboot下
测试成功,删除根目录的测试文件
3、修改dhcp配置文件
修改并重新装载。next-server被用来指定一台服务器的主机地址,这台主机是filename指定的启动文件所在的服务器。
4、配置web服务器
四、pxe启动安装
1、pxelinux.0
2、在tftp服务的根目录中添加配置文件目录
名称为pxelinux.cfg。pxelinux搜索配置文件有一定的规则,pxelinux.cfg中的配置文件命名为default。而这个文件可以修改isolinux.cfg文件获得
3、复制配置文件依赖的文件
4、复制内核文件、ramdisk(注意文件的位置是pxeboot目录)
5、提供安装树
将kickstart文件、安装源、yum源挂载到web站点目录中,使pxe启动过程可以通过http协议访问url指向的资源。
6、再次修改配置文件
1)修改/var/www/html/centos/6/centos6.cfg文件,全文如下
2)修改/var/lib/tftpboot/pxelinux.cfg/default
在缺省项后面增加ks=http://192.168.23.1/centos/6/centos6.cfg
7、启动http服务
8、创建新虚拟机,调整bios,让从网卡启动,网络处于vmnet2中,网卡自动获取ip地址。
至此,pxe安装系统成功!
特别提醒:如果在bios中设置了网卡为启动第一项设备,一旦系统在硬盘安装成功,如果还是从网卡启动,有可能循环安装。
参考资料
http://www.novell.com/zh-cn/documentation/zcm10/zcm10_preboot_imaging/data/bvb2dvw.html
pxelinux
http://www.syslinux.org/wiki/index.php/pxelinux
kickstart
https://fedoraproject.org/wiki/anaconda/kickstart/zh-cn#chapter_7._.e8.ae.a9.e5.ae.89.e8.a3.85.e6.a0.91.e5.8f.af.e7.94.a8