1 概述
1.1 说明
本手册用于批量自动化安装Linux操作系统。
2 PXE介绍
2.1 什么是PXE
PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000,linux等。
2.2 PXE工作过程
l 第一步:PXE Client向DHCP发送请求
首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。
l 第二步:DHCP服务器提供信息
DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
l 第三步:PXE客户端请求下载启动文件
客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
l 第四步:Boot Server响应客户端请求并传送文件
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
l 第五步:请求下载自动应答文件
客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP,VSFTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。
接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
l 第六步:客户端安装操作系统
将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。
OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。
在上面介绍中PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server和VSFTP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核都放置在Linux Server上TFTP服务器的根目录下。
PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
3 PXE安装
3.1 安装环境
服务端操作系统:RedHat Enterprise Linux AS 5 update 4
服务端ip地址是:192.168.0.251 子网掩码是:255.255.255.0
注:本次安装PXE,所有服务端程序均安装在一台服务器上,服务端需要关闭iptables和selinux服务。客户端批量安装的操作系统为RedHat Enterprise Linux AS 5 update 4。
3.2 安装所需软件包及相关文件
l xinetd
l tftp-server
l dhcp
l vsftpd(可选httpd或nfs)
l syslinux
l ks.cfg配置文件
注:一般情况下软件安装包都可以在安装光盘中找到,如果无法在安装光盘中找到适合的安装包,可以通过yum方式安装。
3.3 安装及配置
3.3.1 安装所需软件包
l 网络安装
yum install vsftpd tftp-server dhcpd xinetd syslinux
l 本地安装
挂载系统光盘
# mount /dev/cdrom /mnt
进入软件包存放目录安装
# rpm -ivh vsftpd tftp-server dhcpd xinetd syslinux
3.3.2 配置IP地址
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 BOOTPROTO=static TYPE=Ethernet ONBOOT=yes IPADDR=192.168.0.251 NETMASK=255.255.255.0 |
配置完毕,重启网络服务生效。
#service network restart
3.3.3 配置dhcp服务
#vi /etc/dhcpd.conf
ddns-update-style interim; ignore client-updates; allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.130 192.168.0.250; } option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; default-lease-time 21600; max-lease-time 43200; Next-server 192.168.0.251; Filename "/pxelinux.0"; |
配置完毕,重启dhcp服务生效。
# service dhcpd restart
3.3.4 配置tftp服务
tftp是为了给待安装的客户端机器发送启动文件(包括initrd.img、vmlinuz、pxelinux.0、default)的简单文件传输服务。这个配置比较简单,只需把配置文件中的disable那项的yes改成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 } |
配置完毕,重启xinetd服务生效
# service xinetd restart
3.3.5 配置syslinux
配置tftpboot目录内的文件
复制 RedHat Enterprise Linux AS 5 update 4 安装光盘中 /p_w_picpaths/pxeboot/ 目录下的initrd.img和vmlinuz到/tftpboot目录下。
#mount /dev/cdrom /mnt
#cp /mnt//p_w_picpaths/pxeboot/vmlinuz /tftpboot
#cp /mnt/p_w_picpaths/pxeboot/initrd.img /tftpboot
#cp /usr/lib/syslinux/pxelinux.0 /tftpboot
#mkdir /tftpboot/pxelinux.cfg
#cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
#chmod 755 /tftpboot/pxelinux.cfg/default
#vi /tftpboot/pxelinux.cfg/default
default linux prompt 1 timeout 600 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux kernel vmlinuz append initrd=initrd.img ks=ftp://192.168.0.251/ks.cfg ksdevice=eth0 # append initrd=initrd.img ks=http://192.168.0.251/ks.cfg ksdevice=eth0 label text kernel vmlinuz append initrd=initrd.img text label ks kernel vmlinuz append ks initrd=initrd.img label local localboot 1 label memtest86 kernel memtest append - |
/tftpboot 目录下的内容如下:
-rw-r--r-- 1 root root 4266944 Feb 1 10:05 initrd.img -rw-r--r-- 1 root root 1545551 Feb 1 10:05 vmlinuz -rwxr-xr-x 1 root root 16466 Feb 1 10:04 pxelinux.0 -drwxr-xr-x 2 root root 4096 Feb 5 11:31 pxelinux.cfg .----------rwxr-xr-x 1 root root 103 Feb 5 11:31 default(此文件在pxelinux.cfg目录下) |
3.3.6 配置vsftp或者http服务
默认安装,无需配置,启动服务。
# service vsftpd start
# service httpd start
3.3.7 配置ks.cfg文件
ks.cfg是待安装机器的所有的配置文件,ks.cfg文件的获取方式由两种:一种是使用kickstart软件在图形界面下设置生成ks.cfg文件;另一种方法是在安装过linux系统的服务器,/root目录下都会自动生成一个anaconda-ks.cfg文件,里面记录了在安装系统的时候所做的所有操作,可以使用这个文件进行编辑生成需要的ks.cfg文件。
将配置好的ks.cfg放置在/var/ftp目录下或放置/var/www/html目录下。
#cp ks.cfg /var/ftp/
#chmod 755 /var/ftp/ks.cfg
#cp ks.cfg /var/www/html/
#chmod 755 /var/ftp/ks.cfg
注:通过修改anaconda-ks.cfg 编辑出自己所要的ks.cfg一下使用的ks.cfg针对(RHEL5.4- HP DL360G7)
# Kickstart file automatically generated by anaconda. install url --url=ftp://192.168.0.251/rhel5u4 #url --url=http://192.168.0.251/rhel5u4 key 6efd911e6fea5d91 lang en_US.UTF-8 keyboard us network --device eth0 --bootproto dhcp network --device eth1 --onboot no --bootproto dhcp network --device eth2 --onboot no --bootproto dhcp network --device eth3 --onboot no --bootproto dhcp rootpw --iscrypted $1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1 firewall --disabled authconfig --enableshadow --enablemd5 selinux --disabled timezone Asia/Shanghai reboot services --disable auditd,autofs,avahi-daemon,bluetooth,cups,firstboot,iptables,ip6tables,kudzu,lm_sensors,lvm2-monitor,netfs,nfslock,pcscd,portmap,rhnsd,rpcgssd,rpcidmapd,sendmail,xfs,yum-updatesd user --name=wgliu --password=$1$MPqU6lgH$Zl.nNz7xZBmLYQGW0eqIc. --iscrypted bootloader --location=mbr --driveorder=cciss/c0d0 # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --all --initlabel --drives=cciss/c0d0 part /boot --fstype ext3 --size=200 part swap --size=4096 part / --fstype ext3 --size=100 --grow %packages @base @chinese-support @core @development-libs @development-tools @editors @ftp-server @legacy-software-development @legacy-software-support @system-tools @text-internet fipscheck device-mapper-multipath sgpio imake emacs audit net-snmp-utils sysstat iptraf -bluez-hcidump |
注意:
l bootloader --location=mbr --driveorder=cciss/c0d0
红色部分为HP 磁盘阵列控制器,各个厂商的控制器不同,需要做相应修改,可参考已安装的服务器上的anaconda-ks.cfg。
l rootpw --iscrypted $1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1
root密码的设置(红色部分的由来)
[root@localhost ~]# openssl passwd -1
Password: (输入你要设置的密码)
Verifying - Password: (再次输入你要设置的密码)
$1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1(生成加密后的字符串)
l user --name=xxx --password=$1$MPqU6lgH$Zl.nNz7xZBmLYQGW0eqIc. --iscrypted
添加指定的用户xxx,用户密码的设置同上。
l url --url=ftp://192.168.0.251/rhel5u4
网络安装源的设置,可以根据实际情况进行修改。
3.3.8 设置网络安装目录树
vsftp版安装目录树
#mount /dev/cdrom /mnt
#mkdir /var/ftp/rhel5u4
#cp -rf /mnt/* /var/ftp/rhel5u4
复制过程等待时间较长.....
http版安装目录树
#mount /dev/cdrom /mnt
#mkdir /var/ftp/rhel5u4
#cp -rf /mnt/* /var/www/html/rhel5u4
复制过程等待时间较长.....
4 启动所有相关的服务
#service vsftpd restart
#service xinetd restart
#service dhcpd restart
5 客户端服务器安装
客户端服务器安装操作系统时,可以单台通过网线直连pxe服务端服务器,也可以多台通过交换机连接到pxe服务端服务器,客户端服务器通电启动时通常按f12(此按键因服务器生产厂家不同而可能不同)键进入pxe自动安装。
6 附录
ks.cfg文件的配置请参考redhat官方文档:
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html