zoukankan      html  css  js  c++  java
  • Linux批量装机(PXE)!

    一 、PXE 简介
    PXE:Pre-boot Excution Environment,预启动执行环境
    PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网
    络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
    若要搭建 PXE 网络体系,必须要满足以下条件:
    *客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
    *网络中有一台 DHCP 服务器,以便为客户机分配地址、指定引导文件位置
    服务器通过 TFTP(Trivial File Transfer Protocol)简单文件传输协议提供引导镜像文件的
    下载。

    一、原理

    PXE client在网卡的ROM中,被安装的机器从自己的PXE网卡启动,向网络中的DHCP服务器请求ip,并搜寻引导文件(bootstrap文件,在centos中,叫pxelinux.0),DHCP server返回给client端ip以及引导文件的位置(一般放在ftp server上),client端向TFTP server索取引导文件,引导程序读取配置文件pxelinux.cfg,获取系统初始化信息。PXE client在工作过程中需要三个二进制文件:pxelinux.0,linux内核,linux根文件系统initrd,这三个文件都放在tftp服务器目录中,最后,系统启动开始安装。

    1:部署FTP服务

    [root@localhost~]#systemctl stop firewalld             //关闭防火墙

    [root@localhost~]#setenforce 0                             //关闭安全机制

    [root@localhost~]#iptables -F                                //清除规则

    [root@localhost ~]# yum -y install vsftpd                      

    [root@localhost ~]# rpm -q vsftpd                                 
    vsftpd-3.0.2-25.el7.x86_64

    [root@localhost ~]# mkdir /var/ftp/centos7                  

    [root@localhost ~]# mount /dev/sr0 /var/ftp/centos7/

    [root@localhost ~]# du /var/ftp/centos7/

    2508 /var/ftp/centos7/EFI/BOOT/fonts
    8464 /var/ftp/centos7/EFI/BOOT
    8468 /var/ftp/centos7/EFI
    57848 /var/ftp/centos7/images/pxeboot
    66556 /var/ftp/centos7/images
    58232 /var/ftp/centos7/isolinux
    442744 /var/ftp/centos7/LiveOS
    3892616 /var/ftp/centos7/Packages
    14660 /var/ftp/centos7/repodata
    4483316 /var/ftp/centos7/

    2:启动FTP服务、并设置为开机自启动

    [root@localhost ~]# systemctl start vsftpd               //启动vsftpd服务
    [root@localhost ~]# systemctl enable vsftpd           //开机自动vsftpd服务
    Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
    [root@localhost ~]# echo $?                                   //检测上一步命令是否成功为0成功非0出错
    0

    3:部署TFTP服务

    [root@localhost ~]# yum -y install tftp-server              //安装tftp服务

    [root@localhost ~]# rpm -q tftp-server          

    [root@localhost ~]# vim /etc/xinetd.d/tftp                   //修改配置文件开启TFTP服务

    [root@localhost ~]# systemctl start tftp           //启动TFTP服务
    [root@localhost ~]# systemctl enable tftp       //开机自启TFTP服务
    Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
    [root@localhost ~]# echo $?

    0

    [root@localhost ~]# netstat -anput | grep 69        //检测端口号
    udp6        0      0       :::69     :::*      1/systemd

    4:准备相关文件以及PXE引导程序

    [root@localhost ~]# cd /var/ftp/centos7/isolinux/                //准备linux内核,初始化镜像文件
    [root@localhost isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/
    [root@localhost isolinux]# ll /var/lib/tftpboot/
    总用量 57844
    -rw-r--r--. 1 root root 52584760 8月 21 15:41 initrd.img
    -rwxr-xr-x. 1 root root 6639904 8月 21 15:41 vmlinuz

    5:准备lickstart配置文件
    [root@localhost isolinux]# cd /root
    [root@localhost ~]# cp /root/anaconda-ks.cfg  /var/ftp/ks.cfg
    [root@localhost ~]# chmod 777  /var/ftp/ks.cfg

    [root@localhost ~]# ll /var/ftp/ks.cfg
    -rwxrwxrwx. 1 root root 1569 8月 21 15:41  /var/ftp/ks.cfg

    [root@localhost ~]# vim  /var/ftp/ks.cfg 

    此处只添加如下命令什么都不删除

    url --url=ftp://192.168.200.112/centos7             //指定安装源
    #cdrom

    6:准备PXE引导程序,启动菜单文件

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

    [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib//tftpboot/
    [root@localhost ~]# ls /var/lib/tftpboot/
    initrd.img pxelinux.0 vmlinuz
    [root@localhost ~]# cp /var/ftp/centos7/isolinux//isolinux.cfg  /var/lib/tftpboot/
    [root@localhost ~]# chmod 664 /var/lib/tftpboot/isolinux.cfg
    [root@localhost ~]# ll /var/lib/tftpboot/
    总用量 57876
    -rw-r--r--. 1 root root 52584760 8月 21 15:41 initrd.img
    -rw-rw-r--. 1 root root 3032 8月 21 15:52 isolinux.cfg
    -rw-r--r--. 1 root root 26759 8月 21 15:49 pxelinux.0
    -rwxr-xr-x. 1 root root 6639904 8月 21 15:41 vmlinuz

    7:创建PXE启动菜单
    [root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
    [root@localhost ~]# mv /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot//pxelinux.cfg/default

    [root@localhost ~]# ll -R /var/lib/tftpboot/
    /var/lib/tftpboot/:
    总用量 57872
    -rw-r--r--. 1 root root 52584760 8月 21 15:41 initrd.img
    -rw-r--r--. 1 root root 26759 8月 21 15:49 pxelinux.0
    drwxr-xr-x. 2 root root 21 8月 21 15:54 pxelinux.cfg
    -rwxr-xr-x. 1 root root 6639904 8月 21 15:41 vmlinuz

    /var/lib/tftpboot/pxelinux.cfg:
    总用量 4
    -rw-rw-r--. 1 root root 3032 8月 21 15:52 default

    8:修改PXE启动菜单,指定安装源位置PXE和ks.fg文件位置

    [root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 

    此处只修改与添加不删任何东西

    第一行修改:default linux

    第二行添加:prompt 0

    第三行修改:timeout 600

    label linux
    menu label ^Install CentOS 7
    kernel vmlinuz
    第六十五行修改:append initrd=initrd.img ks=ftp://192.168.200.112/ks.cfg

    9:部署DHCP服务

    9.1:安装DHCP服务

    [root@localhost ~]# yum -y install dhcp

    [root@localhost ~]# rpm -q dhcp
    dhcp-4.2.5-68.el7.centos.1.x86_64

    9.2:修改DHCP配置文件

    [root@localhost ~]# cat /usr/share/doc/dhcp*/dhcpd.conf.example > /etc/dhcp/dhcpd.conf
    [root@localhost ~]# vim /etc/dhcp/dhcpd.conf

    内容只剩如图所示其余全部删除

    ption domain-name "pxe.yunban.cn";
    option domain-name-servers 192.168.200.112;        //此处填写本机ip

    default-lease-time 21600;                          //默认租约6小时
    max-lease-time 43200;                              //最长租约12小时
    subnet 192.168.200.0 netmask 255.255.255.0 {
    range 192.168.200.120 192.168.200.200;             //ip池120到200,新建虚拟机在ip池中随机选择
    next-server 192.168.200.112;
    filename "pxelinux.0";
    }                                                  //此处不加分号结尾

    [root@bogon ~]# systemctl restart dhcpd

    开启客户端测试

    ******内存改为2G,CD/DVD为自动检测(目的让新虚拟机自动获取IP及NETMASK地址)



  • 相关阅读:
    为什么 JVM 不用 JIT 全程编译?
    JVM Internals
    JIT与JVM的三种执行模式:解释模式、编译模式、混合模式
    Dart编译技术与平台
    Dart 库预览
    使用VSCode开发Flutter
    环境变量
    使用Homebrew管理你的mac开发包
    brew 又叫Homebrew,是Mac OSX上的软件包管理工具
    使用async/await消除callback hell
  • 原文地址:https://www.cnblogs.com/CMX_Shmily/p/11390668.html
Copyright © 2011-2022 走看看