zoukankan      html  css  js  c++  java
  • CentOS使用PXE网络启动自动安装操作系统

    PXE工作原理简介

    PXE (Preboot Excution Environment) 预启动执行环境


    工作环境介绍:

    要实现PXE自动网络安装CentOS至少需要两台主机

    1)PXE服务器PXE Server(同时安装DHCP,tftp,CentOS安装yum源等)

    2)准备通过网络安装系统的客户机Clinet

    3)准备好CentOS 6和CentOS 7两个安装光盘镜像,并挂载.

    4)使用VMware等虚拟机时应给所有虚拟机的网卡分配为仅主机或其他与物理机所在局域网相隔离的模式,避免DHCP服务器对外部局域网造成混乱.


    工作步骤:

    1) Client开机,发广播向DHCP服务器请求IP地址,PXE Server上的DHCP服务接收到请求后,验证Client的MAC等信息通过后,发送一个可用IP地址给Client,并将启动文件pxelinux.0的存放地址(TFTP提供)发送给Client

    2)得到地址的Client向TFTP服务器请求pxelinux.0文件,PXE Server(TFTP服务)向Client发送pxelinux.0的文件大小信息,Client验证如果文件大小信息可接受,便返回同意信息,之后TFTP服务向Client发送pxelinux.0文件

    3)Client执行pxelinux.0文件,之后向TFTP请求配置信息文件,(TFTP服务工作目录中的pxelinux.cfg/default),TFTP服务把配置文件发给Client

    4)Client向TFTP服务请求Linux内核和根文件系统,TFTP服务将kernel(vmlinuz)和initramfs(initrd.img)文件传给Client

    5)Client启动Linux内核,之后通过http协议得到kickstart以及系统安装文件,并根据kickstart文件自动安装CentOS


    实例:

    下面一个实例来实现搭建能够同时自动安装CentOS 6和CentOS7的PXE服务器:

    实例以CentOS 7为搭建环境.


    1.安装所需服务

    需要安装四个包:

    dhcp,tftp-server,syslinux,httpd

    ]# yum install dhcp tftp-server syslinux httpd

    所有服务设为开机启动

    ]# systemctl enable dhcpd
    ]# systemctl enable tftp.socket
    ]# systemctl enable httpd
    


    dhcp: 为Client分配ip地址

    tftp服务: 轻量化的ftp服务,一般网卡中会内置tftp客户端,无需操作系统支持便可实现文件下载.用于安装系统前获取启动安装系统所需的启动文件等资源.

    syslinux: syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。但我们在这里只需要用到syslinux包里的某几个文件.

    httpd: 主要方便用来提供网络资源下载.


    2.各服务配置:

    tftp:

    tftp服务不需要做什么配置,安装并启动就可以直接使用了.需要留意tftp的工作目录为/var/lib/tftpboot/


    httpd:

    httpd服务默认配置即可使用,这里只需要记住httpd的文件目录/var/www/html/


    dhcp

    cat /etc/dhcpd/dhcpd.conf

    subnet部分修改为以下内容.

    subnet 192.168.5.0 netmask 255.255.255.0 {

            range 192.168.5.100 192.168.5.105;

            next-server 192.168.5.72;

            filename "pxelinux.0";

    }

    说明:

    除此之外的其他配置可以注释掉.

    subnet 192.168.5.0 netmask 255.255.255.0

    规划一个可以管理的子网段.可以设定多个.

    range 192.168.5.100 192.168.5.105;

    表示可以分配ip地址的范围,例子中是100到105 一共6个地址

    next-server 192.168.5.72;

    网络启动时必备参数,表示tftp的IP地址.

    filename "pxelinux.0";

    启动文件的文件名,位于tftp上.


    3.所需文件的准备

    /var/www/html/ 下需要的文件

    ]# tree -L 2 /var/www/html

    ├── centos

    │   ├── 6

    │   └── 7

    └── ksdir

    ├── ks6-desktop.cfg

    ├── ks6-mini.cfg

    ├── ks7-desktop.cfg

    └── ks7-mini.cfg


    yum源

    把centos6和centos7的光盘挂载到http工作目录/var/www/html/中作为yum源.

    ]# mkdir -p /var/www/html/centos/{6,7}

    挂载光盘

    ]# mount /dev/sr1 /var/www/html/centos/6

    ]# mount /dev/sr0 /var/www/html/centos/7


    修改/etc/fstab,实现开机自动挂载

    LABEL=CentOS40740x86_64 /var/www/html/centos/7 iso9660 ro 0 0

    LABEL=CentOS_6.9_Final /var/www/html/centos/6 iso9660 ro 0 0


    kickstart文件

    我这里提前准备了四个ks文件,分别为CentOS 6 和7的桌面版本和最小化安装版本,分别为:

    ks7-desktop.cfg,ks7-mini.cfg,ks6-desktop.cfg,ks6-mini.cfg

    把他们放到/var/www/html/ksdir/下

    ]# mkdir /var/www/html/ksdir


    修改ks文件中的相关参数:

    只列出与本次安装相关的参数

    vim ks6-desktop.cfg

    url --url=http://192.168.7.72/centos/6/

    vim ks7-desktop.cfg

    url --url=http://192.168.7.72/centos/7/

    ks6-mini.cfg和ks7-mini.cfg对应上面两个参数改成一样


    /var/lib/tftpboot/ 目录下需要的文件

    ├── 6

    │   ├── initrd.img

    │   └── vmlinuz

    ├── 7

    │   ├── initrd.img

    │   └── vmlinuz

    ├── boot.msg

    ├── pxelinux.0

    ├── pxelinux.cfg

    │   └── default

    ├── splash.png

    └── vesamenu.c32


    启动文件

    这里的文件为用于启动安装程序的文件

    pxelinux.0

    ]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

    kernel(vmlinuz)

    我们需要用于启动安装程序的内核vmliuz,可从光盘复制

    vesamenu.c32

    菜单界面生成文件vesamenu.c32,这个菜单比menu.c32更美观一些.配合需要的文件还有boot.msg和splash.png,也不需要区分CentOS版本,这里直接用CentOS 7的文件.

    ]# cp /var/www/html/centos/7/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/
    ]# mkdir /var/lib/tftpboot/{6,7}
    ]# cp /var/www/html/centos/6/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/6
    ]# cp /var/www/html/centos/7/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/7
    


    此外还需要一个菜单内容文件pxelinux.cfg/default

    ]# mkdir /var/lib/ftptboot/pxelinux.cfg
    ]# cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    


    按照规划修改一下default内容

    default vesamenu.c32

    #prompt 1

    timeout 60

    display boot.msg

    menu background splash.png

    menu title PXE Install CentOS

    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 c6desktop

    menu label Install an CentOS ^6 desktop system

    kernel 6/vmlinuz

    append initrd=6/initrd.img ks=http://192.168.7.72/ksdir/ks6-desktop.cfg

    label c7desktop

    menu label Install an CentOS ^7 desktop system

    kernel 7/vmlinuz

    append initrd=7/initrd.img ks=http://192.168.7.72/ksdir/ks7-desktop.cfg

    label c6mini

    menu label Install an CentOS 6 mini system

    kernel 6/vmlinuz

    append initrd=6/initrd.img ks=http://192.168.7.72/ksdir/ks6-mini.cfg

    label c7mini

    menu label Install an CentOS 7 mini system

    kernel 7/vmlinuz

    append initrd=7/initrd.img ks=http://192.168.7.72/ksdir/ks7-mini.cfg

    label local

    menu default

    menu label Boot from ^local drive

    localboot 0xffff


    完成之后,启动所有服务.

    新建虚拟机Client,开机引导设备选network,等待安装菜单的出现,选定要安装的系统版本即可.

  • 相关阅读:
    js绑定事件方法:addEventListener的兼容问题
    jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别讲解
    jQuery事件绑定函数:on()与bind()的差别
    click事件的累加绑定
    HTML标签marquee实现滚动效果
    原生js添加类名,删除类名
    CSS相邻兄弟选择器
    视差滚动
    纯js实现分页
    下拉加载更多内容(滚动加载)
  • 原文地址:https://www.cnblogs.com/Q--T/p/8295394.html
Copyright © 2011-2022 走看看