码迷,mamicode.com
首页 > Web开发 > 详细

PXE+Kickstart+Nginx(http)+DHCP无人值守安装Centos6.4系统

时间:2015-04-26 01:45:28      阅读:441      评论:0      收藏:0      [点我收藏+]

标签:pxe+kickstart+nginx(http)+dhcp无人值守安装centos系统

          PXE+Kickstart+Nginx(http)+DHCP无人值守安装Centos系统

1.1 什么是PXE

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTPtrivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

 

严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE ClientPXE 协议可以使计算机通过网络启动。此协议分为 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 上下载所需的文件了.              

1.2 什么是Kickstart

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装.


1.3 PXE+Kickstart 无人值守安装操作系统完整过程如下

技术分享

第一步:PXE ClientDHCP服务器发送请求

首先,将支持PXE的网络接口卡(NIC)的客户端BIOS设置为网络启动,通过PXE BootROM(自启动芯片)会一UDP协议发送一个广播请求,向网络中的DHCP服务器申请一个IP地址信息.

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

DHCP服务器收到客户端请求,验证是否来自PXE Client的请求,验证通过后向客户端回响应信息,包括:客户端IP地址,TFTP Serverpxelinux.0文件名.

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

客户端请求传送启动所需文件,包括pxelinux.0pxelinux. cfg/defaultvmlinuzinitrd.img等文件.

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

TFTP服务器收到客户端请求后,彼此间进行通信应答,确定启动参数,BootROMTFTP通信协议从Boot Server下载启动安装程序所必需文件(pxelinux.0pxelinux.cfg/default).default文件下载完成后,会根据

该文件中定义的引导顺序,启动Linux安装程序的引导内核.

第五步:请求下载Kickstart配置文件

客户端通过pxelinux.cfg/default文件成功的引导Linux运行是因为制订了Kickstart配置文件信息所以当一vmlinuzinitrd.img组成的系统运行成功后系统确定你通过什么安装介质来安装Linux如果是通过网络安装(NFSFTPHTTP)则会在这个时候初始化网络,并请求下载Kickstart配置文件.刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次因为现在已经进入了有vmlinuzinitrd.img等文件组成的系统中了,由于PXE的网络配置并不能传递给这个系统,所以才会进行两次获取IP地址过程.

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

ks.cfg文件下载后,通过该文件找到OS Sserver,并按照该文件的配置请求下载安装过程需要的文件,OS Server和客户端建立连接后,将开始传输文件,客户端将开始安装操作系统,安装完成后,将会根据ks.cfg文件设置来重启或关机注意:安装完成后开机一定要将BIOS修改会从硬盘启动,不然的话又会重复的自动安装操作系统.

1.4 系统环境

试验环境:Vmware Workstation10

网络模式:NAT模式

DHCPTFTPHTTP、等服务在同一台服务其IP:10.0.0.132

[root@PXE ~]# uname -a

Linux PXE 2.6.32-504.12.2.el6.x86_64 #1 SMP Wed Mar 11 22:03:14 UTC2015 x86_64 x86_64 x86_64 GNU/Linux

[root@PXE ~]# cat /etc/redhat-release

CentOS release 6.6 (Final)

[root@PXE ~]# uname -r

2.6.32-504.12.2.el6.x86_64

[root@PXE ~]# uname -m

x86_64

[root@PXE ~]# uname -n

PXE

[root@PXE ~]# /etc/init.d/iptables stop

iptables: Setting chains to policy ACCEPT: filter     [ OK  ]

iptables: Flushing firewall rules:                    [  OK ]

iptables: Unloading modules:                          [  OK ]

[root@PXE ~]# vim /etc/sysconfig/selinux

SELINUX=disabled

1.5 准备工作

生成ks.cfg文件需要system-config-kickstart 工具,而此工具依赖于X Windows,所以我们需要安装X Windows Desktop 并重启系统.

[root@PXE ~]# yum -y groupinstall "X Window System"

安装gnome6.2Desktop就是gnome

[root@PXE ~]# yum groupinstall "Desktop"

安装gnome(6.0以下的系统)

[root@PXE ~]# yum -y groupinstall ‘GNOME Desktop Environment‘

如果需要中文界面我们需要安装中文语言

[root@PXE ~]# yum groupinstall "Chinese Support"

最关键的一步了启动gnome

[root@PXE ~]# startx


1.6 无人值守安装配置过程

1.6.1 配置PXE网络安装的说明及步骤顺序

  • 创建/data/sys目录用于Nginx web目录,用于存放linux系统的安装文件.

  • 配置TFTP服务器,用于提供客户端PXE引导所必须的启动文件

  • 配置DHCP,用于给客户端提供IP地址及其它信息

  • 配置kickstart用于自动应答操作系统安装

  • 安装Pcre

  • 安装Nginx及配置

  • 使用网卡的PXE功能引导客户机


1.6.2 创建/data/sys目录并挂载系统镜像

创建/data/sys目录,并将光盘内容拷贝到共享目录中

[root@PXE ~]# mkdir –p  /data/sys

把光盘放入光驱,也可以把系统ISO文件传到服务器下面解压

技术分享

技术分享


挂载镜像到mnt目录下,再将系统镜像里边的内容拷贝到共享目录/data/sys/中去.

[root@PXE ~]# mount /dev/cdrom /mnt/

mount: block device /dev/sr0 iswrite-protected, mounting read-only

拷贝文件的过程时间略长请大家耐心等待.稍安勿躁!

[root@PXE ~]# cp -a /mnt/* /data/sys/

特别提示:如果使用虚拟机做实验,只需要在vm里使用ISO文件即可.

1.6.3 安装TFTP及Xinetd服务

在安装PXE过程中,客户机通过TFTP协议从TFTP服务器下载引导文件并执行,因此,需要配置TFTP服务器和PXE的引导配置完成这个过程.

如果在yum安装之前执行下面的操作,可以把yum安装的rpm包保存下来

[root@PXE ~]# sed -i‘s#keepcache=0#keepcache=1#g‘ /etc/yum.conf

[root@PXE ~]# yum -y installtftp-server* xinetd

[root@PXE ~]# tree /var/cache/yum/

/var/cache/yum/

`-- x86_64

   `-- 6

       |-- base

       |   |-- packages

        |   |  |-- tftp-server-0.49-7.el6.x86_64.rpm

        |  |   `--xinetd-2.3.14-39.el6_4.x86_64.rpm

配置tftp服务

TFTP服务使用xinetd服务管理,编辑/etc/xinetd.d/tftp文件,将文件中disable的参数由yes改为no.

[root@PXE ~]# vim /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 由原来的yes改为no

       per_source        = 11

       cps              = 100 2

       flags             = IPv4

}

技术分享

配置完后重启xinetd服务使tftp服务器生效!

[root@PXE ~]# /etc/init.d/xinetd start   

Starting xinetd:              [  OK  ]

[root@PXE ~]# chkconfig --level 3 xinetd on

[root@PXE ~]# chkconfig --list xinetd

xinetd   0:off   1:off  2:off   3:on    4:on   5:on    6:off


1.6.4 配置支持PXE引导启动程序

   PXE启动映像文件由syslinux软件提供,CentOS Linux光盘已提供,也可以到syslinux主页http://www.syslinux.org/wiki/index.php/The_Syslinux_Project下载rmp包安装.只要安装了syslinux(默认没有安装),就会生成一个pxelinux.o文件,将这个文件复制到TFTP默认路径即可!

syslinux是一个功能强大的引导加载程序,而且兼容各种介质,更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘.

[root@PXE ~]# yum -y install syslinux

复制pxelinux.0引导文件文件至/var/lib/tftpboot/ 文件夹中

[root@PXE ~]# cp /usr/share/syslinux/pxelinux.0/var/lib/tftpboot/

[root@PXE ~]# ll /var/lib/tftpboot/

total 28

-rw-r--r--. 1 root root 26759 Apr 2414:32 pxelinux.0

用于网络启动的内核文件

CentOS安装光盘目录中的images/pxeboot/{vmlinuz,initrd.img}启动文件复制到某个安装目录,比如/var/lib/tftpboot/

内核文件

[root@PXE ~]# cp/data/sys/images/pxeboot/vmlinuz /var/lib/tftpboot/

驱动文件

[root@PXE ~]# cp/data/sys/images/pxeboot/initrd.img /var/lib/tftpboot/

下面的这个.msg可以不做,在这里我没有复制

[root@PXE ~]# cp/data/sys/isolinux/*.msg /var/lib/tftpboot/

[root@PXE ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg

[root@PXE ~]# cp /data/sys/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default

[root@PXE ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32

默认启动的是"labeltext"中标记的内核

default text

显示boot提示符,"0"时则不提示将会直接启动default参数中指定的内容.

prompt 1

在用户输入之前的超时时间,单位为 1/10

timeout 6

显示某个文件的内容,注意文件的路径.默认是在/var/lib/tftpboot/ 目录下。也可以指定位类似‘/install/boot.msg‘这样的,路径+文件名.

display boot.msg

menu background splash.jpg

menu title Welcome to CentOS 6.6!

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000

 

label linux

  menu label ^Install orupgrade an existing system

  menu default

  kernel vmlinuz

  append initrd=initrd.img

label vesa

  menu label Install systemwith ^basic video driver

  kernel vmlinuz

  append initrd=initrd.img xdriver=vesanomodeset

label rescue

  menu label ^Rescue installedsystem

  kernel vmlinuz

  append initrd=initrd.imgrescue

label local

  menu label Boot from ^localdrive

  localboot 0xffff

label memtest86

  menu label ^Memory test

  kernel memtest

  append –

label指定你在 ‘boot:‘ 提示符下输入的关键字,比如boot: linux[ENTER],这个会启动‘label linux‘ 下标记的kernelinitrd.img 文件

label text

  kernel vmlinuz

告诉系统,从哪里获取ks.cfg文件

  append initrd=initrd.imgks=http://10.0.0.132/ks.cfg

 

1.7 安装及配置DHCP服务

PXE安装过程中,PXE客户机主要通过DHCP服务获取IP地址、PXE引导文件名称,然后在客户机上通过TFTP协议从TFTP服务器下载引导文件并执行,从而启动系统安装程序执行后,接着下载并安装程序启动安装.

1.7.1 Yum方式安装DHCP服务

[root@PXE ~]# yum -y install dhcp*

1.7.2 配置DHCP

/etc/dhcpd.conf中增加tftp-server需要推送给客户端的启动文件(bootstrap:filename pxelinux.0”;因为tftp的默认目录是/var/lib/tftpboot,所以文件的绝对路径是:/var/lib/tftpboot/pxelinux.0

另外需要指定next-server参数,告诉客户端在获取到pxelinux.0文件后去哪里获取其余的启动文件:next-server 10.0.0.132

[root@PXE ~]# cat/etc/dhcp/dhcpd.conf    

# DHCP Server Configuration file.

#  see /usr/share/doc/dhcp*/dhcpd.conf.sample

#  see ‘man 5 dhcpd.conf‘

ddns-update-style interim;

ignore client-updates;

PXE文件名

filename "pxelinux.0";

TFTP服务器地址

next-server 10.0.0.132;

DNS地址

option domain-name-servers202.106.0.20,8.8.8.8;

分配IP地址网段

subnet 10.0.0.0 netmask 255.255.255.0 {

      网关

      option routers       10.0.0.132;

      掩码

      option subnet-mask  255.255.255.0;

      DHCP地址池

      range dynamic-bootp 10.0.0.136 10.0.0.146;

      default-lease-time 21600;

      max-lease-time 43200;

}

1.7.3 创建DHCP服务日志文件启动DHCP服务,并设置开机自启动

[root@PXE ~]# touch /var/log/dhcpd.log

[root@PXE ~]# chmod 600 /var/log/dhcpd.log

[root@PXE ~]# /etc/init.d/dhcpd restart

Starting dhcpd:           [  OK  ]

[root@PXE ~]# chkconfig dhcpd on

[root@PXE ~]# chkconfig --list dhcpd

dhcpd   0:off   1:off  2:on    3:on    4:on   5:on    6:off

1.8 Kickstart安装配置

通常安装操作系统过程中,需要大量得和服务器进行交互操作,为了减少这个交互过程可以使用kickstart。使用kickstart,只需事先定义好一个kickstart自动应答配置文件ks.cfg(通常存放在服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自动从该文件中读取kickstart配置文件,无论使用那种方法无非就是创建一个应答文件。当安装好一台服务器,安装程序都会创建一个kickstart配置文件,记录真实安装配置。如果希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成自己的kickstart配置文件。该文件默认位于/root/anaconda-ks.cfg

生成kickstart配置文件的三种方法:

1、每安装好一台服务器,安装程序都会创建一个kickstart配置文件,记录真实安装配置。如果希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成自己的kickstart配置文件。该文件默认位于/root/anaconda-ks.cfg

2CentOS Linux提供一个图形化的kickstart配置工具,在任何一个安装好的Linux系统上运行该工具,就可以很容易创建自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstartRHEL3)或system-config-kickstartRHEL4RHEL5)。

3、阅读kickstart配置文件手册。用任何一个文本编辑器都可以创建自己的kickstart配置文件。

1.8.1 安装kickstart

我们用kickstart的第二种方法来实现

[root@PXE ~]# yum install system-config-kickstart

[root@PXE ~]# system-config-kickstart

[root@PXE ~]# startx

打开kickstart工具

技术分享

设置语言、键盘、时区、root密码等内容.

技术分享

设置安装方式,我们用的是HTTP方式安装,故选择HTTP

技术分享

技术分享

下面按照下图方式选择,不然安装时候会弹出对话框询问是否清除硬盘数据,这样自动化安装就失败.

技术分享

不按照上图选择安装系统时候的结果!

技术分享技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

配置网络

技术分享

系统认证配置

技术分享

Selinux和防火墙配置

技术分享

图形环境配置

技术分享

软件包安装选择

技术分享

技术分享

技术分享

选择file—preview查看浏览

技术分享

选择file—save保存到/data/sys目录

技术分享

[root@PXE ~]# vim /data/sys/ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# Install OS instead of upgrade

表示安装系统而不是升级

install

# Use network installation

这个选项告诉安装程序,到服务器10.0.0.132dHTTP根目录下寻找安装介质

url --url="http://10.0.0.132/"

# Root password

root用户密码

rootpw --iscrypted $1$Qy3ftD8v$Ic8D3xTgNskYjiPRbSR2s/

# System authorization information

系统认证信息

auth  --useshadow  --passalgo=sha512

# Use text mode install

文本安装方式

text

禁止安装后的Agent设置

firstboot --disable

# System keyboard

键盘布局

keyboard us

# System language

字符集设置

lang en_US

# SELinux configuration

关闭selinux

selinux –disabled

# Installation logging level

设置日志级别

logging --level=info

# Reboot after installation

重启系统

reboot

# System timezone

设置系统时间

timezone  Asia/Shanghai

# Network information

网络配置eth0为第一块网卡,结尾PXE为主机名

network  --bootproto=dhcp--device=eth0 --onboot=on

# System bootloader configuration

系统引导相关信息

bootloader --location=mbr

# Partition clearing information

清除系统所有分区

clearpart --all

# Disk partitioning information

系统的3个分区

part swap --asprimary --fstype="swap" --size=200

part /boot --asprimary --fstype="ext4" --size=200

part / --asprimary --fstype="ext4" --grow --size=1

系统安装的软件包

%packages

@base

@basic-desktop

@compat-libraries

@debugging

@development

%end

######安装完后的简单优化#####

%post

#service configuration

for n in `chkconfig|awk ‘{print $1}‘|egrep -v"crond|rsyslog|network|sshd"`;do chkconfig $n off;done

#config ssh

sed -i s%#Port 22%Port 52113%g /etc/ssh/sshd_config

sed -i s%#PermitRootLogin yes%PermitRootLogin no%g/etc/ssh/sshd_config

sed -i s%#PermitEmptyPasswords no%PermitEmptyPasswords no%g/etc/ssh/sshd_config

sed -i s%#UseDNS yes%UseDNS no%g /etc/ssh/sshd_config

1.9 Pcre安装

[root@PXE ~]# yum -y install openssl openssl-devel

[root@PXE ~]# cd /home/hao/tools/

[root@PXE tools]# wget http://sourceforge.net/projects/pcre/files/pcre/8.30/pcre-8.30.tar.gz

[root@PXE tools]# tar zxf pcre-8.30.tar.gz

[root@PXE tools]# cd pcre-8.30

[root@PXE pcre-8.30]# ./configure

[root@PXE pcre-8.30]# make

[root@PXE pcre-8.30]# make install

1.10 Nginx安装及配置

[root@PXE tools]# useradd nginx -s /sbin/nologin -M

[root@PXE tools]# tar zxf nginx-1.6.2.tar.gz

[root@PXE tools]# cd nginx-1.6.2

[root@PXE nginx-1.6.2]# ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.6.2--with-http_stub_status_module --with-http_ssl_module

[root@PXE nginx-1.6.2]# make

[root@PXE nginx-1.6.2]# make install

[root@PXE nginx-1.6.2]# ln -s /application/nginx-1.6.2//application/nginx

[root@PXE nginx-1.6.2]# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

/usr/local/lib/

[root@PXE nginx-1.6.2]# ldconfig  

[root@PXE nginx-1.6.2]# /application/nginx/sbin/nginx

[root@PXE ~]# cd /application/nginx/conf/

[root@PXE conf]# egrep -v "#|^$" nginx.conf.default>nginx.conf

[root@PXE ~]# cat /application/nginx/conf/nginx.conf

user nginx nginx;

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;

        server_name  localhost;

        location / {

            root   /data/sys; 注意这的目录

            index  index.html index.htm;

        }

        error_page  500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

检查语法

[root@PXE ~]# /application/nginx/sbin/nginx –t

启动Nginx服务

[root@PXE ~]# /application/nginx/sbin/nginx

1.11 新建虚拟机配置客户端PXE引导安装

自动化安装系统配置完毕,下面启动一台新的机器进行测试,网络连接模式选择NAT模式.

技术分享

技术分享

技术分享技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

到此PXE部署大功告成了!




















本文出自 “卓越军” 博客,请务必保留此出处http://wxj121.blog.51cto.com/7136845/1638343

PXE+Kickstart+Nginx(http)+DHCP无人值守安装Centos6.4系统

标签:pxe+kickstart+nginx(http)+dhcp无人值守安装centos系统

原文地址:http://wxj121.blog.51cto.com/7136845/1638343

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!