• 如来神掌第一式第十八招----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      #查看是否拷贝成功
    
     
  • 相关阅读:
    Netcat实用操作
    Golang的面向对象实践method
    将大数组里面的小数组平行展开的实现(Making a flat list out of list of lists in Python)
    bootstrap table表格加载本地数据
    扎职扎职扎职扎职扎职扎职扎职扎职扎职扎职扎职
    java使用poi导出excel防止数字变成科学计数法的形式
    element-ui中搜索框回车刷新页面问题的解决方法
    范式建模的理解
    svn去除java编译后文件配置
    java中使用sublist方法获取list集合的前1000条数据
  • 原文地址:https://www.cnblogs.com/Mahavairocana/p/8289973.html
Copyright © 2020-2023  润新知