PXE安装详解

 PXE安装详解

PXE称为网络批量部署安装,且可支持多版本选择安装,方便快捷。
一、PXE部署的准备工作:

1、DHCP服务器       要求可以正常分配ip并且指定TFTP服务器

2、TFTP 服务器       存放系统安装所需要的引导文件pxelinux.0文件、启动菜单、内核vmlinuz及initrd.img、ks无人值守配置文件

                               说明:以上除ks无人值守配置以外其他文件都可以在/usr/lib/syslinux目录中找到

                                        pxelinux.0     pxe专用启动引导文件,直接存放在TFTP要目录即可(也可在/etc/dhcpd.conf中修改路径)

                                        启动菜单:有两种菜单类型可以选择

                                                      a、menu.c32为菜单主程序(不可修改),添加配置文件即可

                                                      b、boot.msg  general.msg  options.msg  param.msg  rescue.msg为菜单配置,可手动修改

                                                           并配以背景文件splash.lss(可手动制作)
3 、准备可下载镜像解压文件的服务器及 无人值守安装ks.cfg,如:FTP  NFS  Samaba 等都可以。
  二、PXE开始部署:
注:首先关闭防火墙(service iptables stop)和SElinux (setenforcing 0)
下面以部署Centos5.5版本系统默认图形、text(字符)、ks(无人值守)三种安装模式及rescue(援救)模式的PXE为例
1 、安装并配置DHCP服务器:
    yum -y install dhcpd

    vim /etc/dhcpd.conf

ddns-update-style interim;
ignore client-updates;
allow booting;           #定义可以PXE方式启动
allow bootp;              #定义支持boottp
class "pxeclients" {                                                                          
match if substring(option vendor-class-identifier,0,9) = "PXEClient";
filename "/pxelinux.0";           #pxelinux.0启动引导文件存放路径
next-server 10.212.212.30;   #TFTP服务器ip地址,所以dhcpd与TFTP服务器不一定在一个机器上
}   

subnet 10.212.212.0 netmask 255.255.255.0 {         #DHCP服务器自身网段及子网掩码

# --- default gateway
        option routers 10.212.212.1;                                 #DHCP服务器所在网段网关及子网掩码

                     option subnet-mask 255.255.255.0;

        option nis-domain "domain.org";
        option domain-name "domain.org";
        option domain-name-servers 218.198.176.71;     #域名服务器ip,可以不使,但最好设置一个免得安装中提示

        option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;

        range dynamic-bootp 10.212.212.130 10.212.212.132;    #DHCP地址池
        default-lease-time 21600;
        max-lease-time 43200;

        # we want the nameserver to appear at a fixed address
# host ns {                       #这个字段可以为指定MAC地址的机器指定固定的ip,也可不使
# next-server marvin.redhat.com;
# hardware ethernet 12:34:56:78:AB:CD;
# fixed-address 207.175.42.254;
# }
}

启动DHCP:service dhcpd start

设置开机启动:chkconfig dhcpd on
2 、TFTP、syslinux、xinetd相关配置

yum -y install tftp-server  syslinux  xinetd

chkconfig tftp on
service xinetd on

注:验证TFTP是否正常,可以尝试本机登陆:tftp 127.0.0.1,如果出现"tftp>  "字样说明正常

配置TFTP:  vim /etc/xinet.d/tftp
service tftp
{

disable = no                                      #默认是YES(即关闭状态),改成NO(开启)

socket_type =dgram

protocol        =udp

wait              =yes

user              =root

server            =/usr/sbin/in.tftpd

server_args    =-u nobody -s /tftpboot  #tftp 目录的根目录##-s 参数指定chroot# -c 参数指定tftp可以创建文件

per_source     =11

cps                =100  2

flags               =IPv4

}
注:如果系统中没有自动创建 /tftpboot 目录,现在手动创建:cp mkdir /tftpboot,下面实验将以此为准
3 、为tftp准备PXE所需文件

拷贝启动引导文件:cp  /usr/lib/syslinux/pxelinux.0  /tftpboot

启动菜单配置文件:mkdir /tftpboot/pxelinux.cfg

                             touch default
准备启动菜单文件:A、B两种选择

                             A、使用menu.c32程序:cp  /usr/lib/syslinux/menu.c32  /tftpboot

                                                               vim  /tftpboot/pxelinux.cfg/default    详细配置点此

                             B、使用boot.msg等菜单:将/usr/lib/syslinux/下的boot.msg  general.msg  options.msg  param.msg  rescue.msg拷贝至/tftpboot

                                                               vim  /tftpboot/pxelinux.cfg/default    详细配置点此

创建存放内核目录:mkdir /tftpboot/image

                             mkdir /tftpboot/image/centos5.5 
拷贝系统内核文件:将centos5.5版本的vmlinuz  initrd.img文件拷贝到刚才创建的内核目录对应位置
其他文件拷贝说明:/usr/lib/syslinux下还有以下一些文件可供选择

                             memdisk       内存检测工具

                             mboot.c32    暂时未知

                             chain.c32     暂时未知

4、安装并配置FTP、NFS  Samaba 之一

下面以FTP为例:
配置过程略过,PXE使用的FTP帐户可以是匿名(anonymous或ftp)也可以是本地帐户,在使用中会让选择,
无人值守配置文件ks.cfg文件的存放:将ks.cfg文件存放在FTP、NFS、Samaba服务器的内可访问目录下
如下:假设FTP文件存放路径为/var/ftp/   操作如下:

mkdir /var/ftp/centos5.5           #创建centos5.5版本镜像存放目录,名称随意,然后将镜像解压文件拷贝进来

vim /var/ftp/centos5.5/ks.cfg  #创建ks.cfg文件  详细配置点此
在内核正常引导安装过程中会出现如下选择界面,则可依据不同的情况选择安装方式

 

选择完介质包类型会出现如下界面,可通过DHCP为本机配置一个可用ip(默认),也可手动配置----在刚开机时临时分配的ip已被清除 

 
上一步填写正确,确认后会出现如下FTP、NFS、Samaba服务器登陆提示,下面以FTP为例:

 
此后将是一般的安装,略过……
进阶内容
讲解 menu.c32 *.msg 两种菜单的区别及分别对应的 /tftpboot/pxelinux.cfg/default 配置文件的格式及 无人值守ks.cfg 文件配置
一、menu.c32与*.msg两种菜单实例与区别
menu.c32是菜单主程序,存放在/usr/lib/syslinux目录下,该类菜单最大的优点是简洁并且可以通过配置多个配置文件支持多层次分类显示的效果
主次界面如下(其中每行中高亮显示的单个字母为快捷键,可直接跳转至该行):

 

*.msg是菜单文件,如:boot.msg  general.msg  options.msg  param.msg  rescue.msg,其存放在/usr/lib/syslinux目录下,例如boot.msg

         

 
vim boot.msg

 
其中需要注意的是boot.msg中高亮部分:

”(vim编辑模式下先按“ctrl+V”再按“ctrl+L”),是控制序列

”(vim编辑模式下先按“ctrl+V”再按“ctrl+O”),其成对出现,括起来的文字将配以不同色彩高亮显示

”,上加载背景图片,对应的背景文件“splash.lss”,即上图蓝色图片

”(vim编辑模式下先按“ctrl+V”再按“ctrl+X

注:除boot.msg以外其他 .msg 文件可能不包含“ ”,如果需要也可添加以在对应菜单下背景图片。

 
二、menu.c32菜单的 /tftpboot/pxelinux.cfg/default 配置:
下面以配置两层菜单为例,菜单结构如下

主菜单:default                              子菜单1:Linux Instal Menu                   子菜单2:Toolsbox For System

    内容:Boot local hard drive          内容:Return to Main Menu                     内容:Return to Main Menu

                 Linux Install Menu                            Centos5.5 Install                                         Memtest86 For System

                 Toolsbox For System                      Centos5.5 text Install                                 (当然还可以放更从东西

                                                                                Centos5.5 ks Install                                    此处仅举一例仅供参考)

                                                                                Centos5.5 rescue

vim /tftpboot/pxelinux.cfg/default    

default menu.c32                     #加载菜单主引导程序
prompt 0
timeout 300                              #设置超时时间
ONTIMEOUT local                   #设置超时默认操作为本地启动

MENU TITLE Main Menu        #设置主菜单标题
MENU INCLUDE pxelinux.cfg/graphics.conf     #设置菜单、背景及字体样式配置文件路径
MENU AUTOBOOT Starting Local System in 300 seconds
LABEL local                                                             #设置本地启动命令符
        MENU LABEL ^Boot local hard drive           #设置本地启动显示标题
        LOCALBOOT 0                                               #设置本地启动命令参数
LABEL Linux System Install                                   #设置子菜单跳转命令符
        MENU LABEL ^Linux System install Menu  #设置菜单显示标题
        kernel menu.c32                                              #设置跳转需要的主菜单程序路径
        append pxelinux.cfg/install                             #设置子菜单配置文件路径
LABEL Tools                                                            
        MENU LABEL ^ToolsBox Menu for System 
        kernel menu.c32                                               
        append pxelinux.cfg/tools   

vim /tftpboot/pxelinux.cfg/install

MENU TITLE Linux System Install Menu                    #设置子菜单主标题
LABEL Main Menu                                                       #设置返回主菜单自定义命令符
        MENU LABEL Return to ^Main Menu              #设置返回主菜单屏幕显示标题及快捷键
        kernel menu.c32                                                   #设置引导主程序路径
        append pxelinux.cfg/default                                 #设置主菜单配置文件路径
LABEL centos                                                              #设置普通图形安装自定义命令符
        MENU LABEL ^CentOS 5.5                               #设置选项的屏幕显示标题及快捷键
        kernel images/centos5.5/vmlinuz                       #设置内核vmlinuz路径
        append initrd=images/RHEL5.5/initrd.img       #设置内核辅助文件initrd.img路径
LABEL centostext
        MENU LABEL CentOS 5.5 ^text
        kernel images/centos5.5/vmlinuz
        append initrd=images/centos5.5/initrd.img  text    #比普通模式添加text参数

LABEL centosks
        MENU LABEL CentOS 5.5 ^ks
        kernel images/centos5.5/vmlinuz
        #append ks=nfs:****/centos5.5/ks.cfg  initrd=image/centos-5.5/initrd.img    #initrd.img及ks.cfg路径,使用nfs

        #append ks=http://****/centos5.5/ks.cfg  initrd=image/centos-5.5/initrd.img #使用web访问方式安装
        append ks=ftp://****/centos5.5/ks.cfg  initrd=image/centos-5.5/initrd.img     #使用ftp访问方式

LABEL centosrescue

        MENU LABEL CentOS 5.5 ^Rescue

        kernel images/centos5.5/vmlinuz 

        append initrd=images/centos5.5/initrd.img  rescue  #比普通模式添加rescue参数

vim /tftpboot/tools

MENU TITLE Toolsbox Menu For Linux System       #设置子菜单主标题
LABEL Main Menu                                                       #设置返回主菜单自定义命令符
        MENU LABEL ^Return to Main Menu                #设置返回主菜单屏幕显示标题及快捷键
        kernel menu.c32                                                   #设置引导主程序路径
        append pxelinux.cfg/default                                 #设置主菜单配置文件路径

LABEL memtest86

       MENU LABEL ^Memtest For Syetem

       kernel memtest

三、 boot.msg 菜单的/tftpboot/pxelinux.cfg/default配置
vim /tftpboot/pxelinux.cfg/default

#default linux             #配置初始Enter默认安装选项为linux
default centos           #设置Enter默认安装选项为centos

prompt 1
timeout 600
display boot.msg     #设置默认显示主菜单
F1 boot.msg            #设置菜单跳转快捷键
F2 options.msg       #同上
F3 general.msg       #同上
F4 param.msg         #同上
F5 rescue.msg         #同上
label centos                                                          #设置普通安装选项
  kernel  image/centos-5.5/vmlinuz                    #设置内核vmlinuz在TFTP上的存储路径
  append initrd=image/centos-5.5/initrd.img    #设置initrd.img在TFP上的存储路径
label centostext                                                          #设置centos的字符安装
  kernel image/centos-5.5/vmlinuz                           #设置内核在TFTP存储路径
  append initrd=image/centos-5.5/initrd.img text   #设置initrd.img路径并添加 text 参数

label centosrescue                                                           #设置centos的救援模式
  kernel image/centos-5.5/vmlinuz                                  #设置内核在TFTP存储路径
  append initrd=image/centos-5.5/initrd.img  rescue   #设置initrd.img路径并添加 recuse 参数
label centosks                                                                                                          #设置centos无人值守安装
  kernel image/centos-5.5/vmlinuz                                                                         #设置内核在TFTP存储路径
  #append ks=nfs:****/centos5.5/ks.cfg  initrd=image/centos-5.5/initrd.img    #设置initrd.img及ks.cfg文件路径,使用nfs

  #append ks=http://****/centos5.5/ks.cfg  initrd=image/centos-5.5/initrd.img #使用web访问方式安装
  append ks=ftp://****/centos5.5/ks.cfg  initrd=image/centos-5.5/initrd.img     #使用ftp访问方式
label local              #设置本地启动
  localboot 1
label memtest86   #加载内存检测工具
  kernel memtest

注:本配置文件中分别配置了centos-5.5的 普通安装、字符安装、救援模式、无人值守安装
        label 后的字符串 既是菜单名称也是在主菜单下面 "boot:" 后可以输入并直接进入如上对应模式的 命令字符
 
四、/tftpboot/ks.cfg文件配置
ks.cfg 可以使安装过程全自动,尤其适用于批量部署
vim /tftpboot/ks.cfg

install                           #选择安装
#cdrom                       #选择安装文件存储方式及路径
lang zh_CN.UTF-8    #选择默认系统语言
keyboard us               #选择键盘类型
xconfig --startxonboot
network --device eth0 --bootproto dhcp       #设置网络为dhcp也可以设置成static将ip依照格式写下
rootpw --iscrypted $1$ns0NuXd7$mdsg9vAEjb9EbYq030yTv.
firewall --enabled --port=22:tcp                     #设置防火墙为开启
authconfig --enableshadow --enablemd5
selinux --enforcing                                           #设置selinux为开启
timezone --utc Asia/Shanghai                       #设置时区
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
# 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 --linux --drives=sda
#part /boot --fstype ext3 --size=100 --ondisk=sda   #此外设置分区,默认不开启需要手动分区,当然也可在此设定好
#part pv.2 --size=0 --grow --ondisk=sda
#volgroup VolGroup00 --pesize=32768 pv.2

#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow --maxsize=2048
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

%packages                                   # 以下为定制各种需要自动安装的软件包
@base
@chinese-support
@core
@dialup
@editors
@gnome-desktop
@games
@graphical-internet
@graphics
@office
@printing
@sound-and-video
@text-internet
@base-x
keyutils
trousers
fipscheck

device-mapper-multipath
libsane-hpaio
xorg-x11-server-Xnest

你可能感兴趣的:(linux,pxe)