概述

1.1  说明

本手册用于批量自动化安装Linux操作系统

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工作过程

 

第一步:PXE Client向DHCP发送请求

首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。

第二步:DHCP服务器提供信息

DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

第三步:PXE客户端请求下载启动文件

客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

第四步:Boot Server响应客户端请求并传送文件

当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

第五步:请求下载自动应答文件

客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP,VSFTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。

接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

第六步:客户端安装操作系统

将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根文件系统。

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 安装所需软件及相关文件

xinetd

tftp-server

dhcp

vsftpd(可选httpd或nfs)

syslinux

ks.cfg配置文件

注:一般情况下软件安装包都可以在安装光盘中找到如果法在安装光盘中找到适合的安装包,可以通过yum方式安装。

3.3 安装及配置

3.3.1 安装所需软件

网络安装

yum install vsftpd tftp-server dhcpd xinetd syslinux

本地安装

挂载系统光盘

# 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.imgvmlinuzpxelinux.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

注意:

bootloader --location=mbr --driveorder=cciss/c0d0 

红色部分为HP 磁盘阵列控制器,各个厂商的控制器不同,需要做相应修改,可参考已安装的服务器上的anaconda-ks.cfg

rootpw --iscrypted $1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1  

root密码的设置(红色部分的由来)

[root@localhost ~]# openssl passwd -1

Password: (输入你要设置的密码)

Verifying - Password: (再次输入你要设置的密码)

$1$g3qFyfby$1wzywa/63vqqvZ2NaBBdp1(生成加密后的字符串)

user --name=xxx --password=$1$MPqU6lgH$Zl.nNz7xZBmLYQGW0eqIc. --iscrypted

添加指定的用户xxx,用户密码的设置同上。

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

复制过程等待时间长.....

启动所有相关的服务

#service vsftpd restart

#service xinetd restart

#service dhcpd restart

客户端服务器安装

客户端服务器安装操作系统时,可以单台通过网线直连pxe服务端服务器,也可以多台通过交换机连接到pxe服务端服务器,客户端服务器通电启动时通常按f12(此按键因服务器生产厂家不同而可能不同)键进入pxe自动安装。

附录

ks.cfg文件的配置请参考redhat官方文档:

https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html