如来神掌第一式第十八招----PXE 详解

###############################################################################
# Name : Mahavairocana                                                                                                                                           
# Author : Mahavairocana                                                                                                                                         
# QQ : 10353512                                                                                                                                                    
# WeChat : shenlan-qianlan                                                                                                                                      
# Blog : http://www.cnblogs.com/Mahavairocana/                                                                                                       
# Description : You are welcome to reprint, or hyperlinks to indicate the                                                                        
#                    source of the article, as well as author information.                                                                                ###############################################################################

一、 PXE概念:
  严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE(Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 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。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
二 、KickStart 概念:
  KickStart 是一种无人职守安装方式。KickStart 的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件;在其后的安装过程中(不只局限于生成 KickStart 安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果 KickStart 文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安
装。

三 、PXE + KickStart 安装的条件
  执行 PXE + KickStart 安装需要的设备为:
  • DHCP 服务器;
  • TFTP 服务器;
  • KickStart 所生成的 ks.cfg 配置文件

    详细流程:
    1、PXE client 发送请求道DHCP服务器,由DHCPserver判断是否为来自PXE client的合法dhcp请求,如盒饭,则返回IP地址和bootstrap
    2、pxeclient 请求传送bootstrap 消息发送到TFTPserver,TFTPserver 同意后发送bottstrap;
    3、PXEclient 执行bootstrap(pxelinux.0)请求传送配置文件pxelinuxcfg/<IP_addr>
    4、读取配置文件,用户根据情况选择,请求传送Linux内核以及根文件系统;
    5、启动Linux 内核;


四 、安装步骤
系统:centos
ip 地址:192.168.137.10
两台 vm,一台 server 一台用来装系统

        1.加载光盘到/mnt/下
        mount /dev/cdrom /mnt/
        cp -rf /mnt/* /var/www/html/   #拷贝光盘里面的所有内容到 apache 根目录下,作为安装源
        2.安装 tftp-server
        yum install tftp-server*
        配置 tftp
        vim /etc/xinetd.d/tftp
        service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot #开机必需的程序路径(根据的         tftpboot 路径更改) disable = yes #把这边的 yes 改为 no per_source = 11 cps = 100 2 flags = IPv4 }
        3.配置 tftpboot 的内容
        mkdir /tftpboot
        cp /usr/share/syslinux/pxelinux.0 /tftpboot/
        cp /mnt/images/pxeboot/initrd.img /tftpboot/
        cp /mnt/images/pxeboot/initrd.img /tftpboot/
        cp /mnt/isolinux/*.msg /tftpboot/ #开机引导文件
        mkdir /tftpboot/pexlinux.cfg
        cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
        vi /etc/xinetd.d/tftp
             service tftp
            {
             disable = no
            socket_type = dgram
             protocol = udp
            wait = yes
            user = root
            server = /usr/sbin/in.tftpd
            server_args = -u nobody -s /tftpboot
             per_source = 11
            cps = 100 2
             flags = IPv4
             }
            需要修改1个地方
            disable = yes 修改为no 即可!


        4.安装配置 DHCP server
        yum install dhcp*
        vim /etc/dhcp/dhcpd.conf
        ddns-update-style interim; ignore client-updates; next-server 192.168.137.10; #tftp server 的 ip 地址 filename "/pxelinux.0"; subnet 192.168.137.0 netmask         255.255.255.0 { option routers 192.168.137.10; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.137.100 192.168.137.150; default-lease-time 21600;         max-lease-time 43200; }
        
        5.安装配置 HTTPD
        yum install httpd*
        vim /etc/httpd/conf/httpd.conf
        找到 #ServerName www.example.com:80 这一行 ,把注释去掉
        
        6.安装配置 kickstart
        yum install system-config-kickstart
        yum install desktop* #安装桌面环境,当然也不需要那么费事,也可以用原有的
        ks.cfg 也就是/root/anaconda-ks.cfg,当然适当的位置要进行修改
        用 kickstart 自己定制 ks.cfg 保存在/var/www/html/下
        vi   pxelinux.cfg/default 修改配置如下
        default vesamenu.c32
        #prompt 1
        timeout 600
        display boot.msg
        menu background splash.jpg
        menu title Welcome to CentOS 6.0!
        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
        kernel vmlinuz
        append ks=ks=http://192.168.137.10/ks.cfg ksdevice=eth0         initrd=initrd.img
        label vesa
          menu label Install system with ^basic video driver
          kernel vmlinuz
          append initrd=initrd.img xdriver=vesa nomodeset
        label rescue
          menu label ^Rescue installed system
          kernel vmlinuz
          append initrd=initrd.img rescue
        label local
          menu label Boot from ^local drive
          localboot 0xffff
        label memtest86
          menu label ^Memory test
          kernel memtest
          append -
        修改如上两个红色地方即可:【设置timeout 10 /*超时时间为10S */;ksdevice        =etho代表当我们有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定        的话,安装的时候系统会让你选择,那就不叫全自动化了,192.168.1.55是kicks        tart服务器,/centosinstall 是nfs共享linux镜像的目录,也是linux存放安装        文件的路径,ks.cfg是kickstart主配置文件,稍后会详细配置】
        自此tftp配置完毕!         我们可以启动它,它是非独立服务,需要借助xinetd启动如下:
        chkconfig    tftp  --level 35 on  && service  xinetd  restart 即可!
        

        7.修改 ks.cfg
        chmod -R 777 /tftpboot/
        vim /tftpboot/pxelinux.cfg/default
        在最后面添加一下内容:
        label linux
        kernel vmlinuz
        append initrd=initrd.img ks=http://192.168.137.10/ks.cfg #ks.cfg 的路径
        8.关闭防火墙
        /etc/init.d/iptables stop
        getenforce 来检测 selinux 是否开启 ,如果开启 getenforce 0来进行关闭。
        9.启动服务
        /etc/init.d/dhcpd start
        /etc/init.d/xinetd start
        /etc/init.d/httpd start
        
    找一台需要安装linux系统机器,进入bios把第一启动项设置为LAN 也即是网卡启动!然后启动,系统会自动查找本地pxe 服务器然后,自动安装,最后自动启动系统,我们只需要登录就可以了

        

 cobbler 安装;

第一步  下载安装

[root@s ~]# wget http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

[root@s ~]# rpm -ivh epel-release-6-5.noarch.rpm

[root@s ~]# yum -y install tftp-server httpd dhcp yum-utils dhcp cman

[root@s ~]# yum -y install cobbler

[root@s ~]# service xinetd start

[root@s ~]# service httpd start

[root@s ~]# chkconfig tftp on

[root@s ~]# service cobblerd start

 

第二步 配置文件

1. 配置tftp-server

[root@s ~]# vi /etc/xinetd.d/tftp 

disable = no

ks=http://192.168.100.254/cobbler/default.ks            #把后面生成好的 default.ks 放在 apache 的这个目录下,以供访问用。注:就因为这步,cobbler研究3天才搞定

2. 配置cobber

[root@s ~]# vi /etc/cobbler/settings

server: 192.168.100.254

next_server: 192.168.100.254

manage_dhcp: 1

3. 配置DHCP模版文件

[root@s ~]# vi /etc/cobbler/dhcp.template

把里面的网段改成你的网段就可以了

subnet 192.168.100.0 netmask 255.255.255.0 {
     option routers             192.168.100.1;
     option domain-name-servers 192.168.100.1;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.100.100 192.168.100.254;
     filename                   "/pxelinux.0";
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                192.168.100.254;
}
4. 修改rsync

[root@s ~]# vi /etc/xinetd.d/rsync

disable = no

5. 执行检查

[root@s ~]# cobbler check

把出现的问题解决掉,除了下面2个

service dhcpd is not running      #这个错误只要执行第3步,然后 cobbler sync 就可以解决
debmirror package is not installed, it will be required to manage debian deployments and repositories

6. 修改密码

[root@s www]# openssl passwd -1 -salt 'wujie' 'wujie'    #第一个 wujie 为干扰码
$1$wujie$GS3Rw2/0dfvQ7xJ7smLmu0

然后把上面那段复制到 /etc/cobbler/settings 中的 default_password_crypted 段

7. 生成system-config-kickstart

进入图形界面,yum system-config-kickstart 后,运行它,按照图形提示生成 default.ks。

然后把 default.ks 覆盖 /var/lib/cobbler/kickstarts/ 下,然后

[root@s www]# chmod 755 default.ks

[root@s www]# cobbler profile edit --name=CentOS-i386 --distro=CentOS-i386 --kickstart=/var/lib/cobbler/kickstarts/default.ks     #注意,这里是名字重复所以用 edit 不同则用 add 。据我实验发现,配置文件默认为default.ks 但是用 cobbler report 显示 ks 内容时发现是读取的 sample.ks

8. 当 cobbler check 检测基本没问题后

[root@s log]# service cobblerd restart
[root@s log]# cobbler sync

看到如下提示表示成功了

running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***

[root@s log]# service dhcpd start

9.修改启动文件路径

[root@s tftpboot]# vi /var/lib/tftpboot/pxelinux.cfg/default

ks=http://192.168.100.254/cobbler/ks_mirror/CentOS-i386

10. 导入CentOS安装DVD ISO中的文件

[root@s ~]# mkdir /mnt/cdrom
[root@s ~]# mount /dev/cdrom /mnt/cdrom

[root@s ~]# cobbler import --path=/mnt/cdrom --name=CentOS-i386

[root@s ~]# cobbler distro list      #查看是否拷贝成功

 
原文地址:https://www.cnblogs.com/Mahavairocana/p/8289973.html