zoukankan      html  css  js  c++  java
  • PXE——无人值守自动安装Linux操作系统(踩坑记录)

    在这里插入图片描述

    DHCP服务

    DHCP服务器主要实现在企业内部网络为客户端分配IP地址等网络参数。

    在无人值守环境中,当客户端选择从网络启动后,就会通过发送广播数据包的形式寻找DHCP服务器,从DHCP获得IP地址等参数后才可以通过TFTP共享读取启动文件。

    (1)安装DHCP服务操作 yum install -y dhcp
    (2)修改配置文件以实现为客户端分配网络参数

    [root@python ~]# vim /etc/dhcp/dhcp.conf
    #dhcpd.conf
    #
    # Sample configuration file for ISC dhcpd
    log-facility local7;
    
    # A slightly different configuration for an internal subnet.
    subnet 192.168.213.0 netmask 255.255.255.0 {
      range 192.168.213.3 192.168.213.254;
      option domain-name-servers 192.168.213.163;
      option subnet-mask 255.255.255.0;
      option routers 192.168.213.2;
      default-lease-time 600;
      max-lease-time 7200;
      next-server 192.168.213.163;
      filename "pxelinux.0";
    }
    [root@python ~]# systemctl start dhcpd
    [root@python ~]# systemctl enable dhcpd
    [root@python ~]# netstat -tunpl|grep 67
    udp        0      0 0.0.0.0:67              0.0.0.0:*                           5440/dhcpd
    udp        0      0 0.0.0.0:67              0.0.0.0:*                           1506/dnsmasq
    

    TFTP服务

    TFTP服务为客户端提供一种简单的文件共享,他不具备向FTP那样丰富的功能,不过由于简单的设计,TFTP非常适用于传输小且简单的PXE启动文件。

    #安装TFTP
    [root@python ~]# yum install -y tftp-server
    #修改配置文件
    [root@python ~]# cat /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	#关闭禁用状态
            per_source      = 11
            cps             = 100 2
            flags           = IPv4
    }
    

    安装tftp的动态管理工具
    tfpt是被xinetd动态管理的服务,启动服务,只需要启动xinetd即可

    [root@python ~]# yum install xinetd
    #将客户端所需要的启动引导文件复制到TFTP服务器
    [root@python ~]# yum install -y syslinux	#通过该软件包获取引导文件
    [root@python ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    [root@python ~]# mount -o loop -t iso9660 /iso/CentOS-7-x86_64-DVD-1908.iso /var/ftp/centos7u7
    [root@python ~]# cp /var/ftp/centos7u7/isolinux/vmlinuz /var/lib/tftpboot/centos7u7/
    [root@python ~]# cp /var/ftp/centos7u7/isolinux/vesamenu.c32 /var/lib/tftpboot
    [root@python ~]# cp /var/ftp/centos7u7/isolinux/initrd.img /var/lib/tftpboot/centos7u7/
    [root@python ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
    [root@python ~]# cp /var/ftp/centos7u7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    [root@python ~]# cd /var/lib/tftpboot/pxelinux.cfg/
    [root@python pxelinux.cfg]# chmod 644 default
    [root@python ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
    default vesamenu.c32
    timeout 60
    display boot.msg
    menu background splash.jpg
    menu title CentOS X of Zhao
    
    label centos7 64 <Auto Installation>
      menu label Install CentOS Linux ^7 x86_64 <Auto>
      kernel centos7u7/vmlinuz
      append initrd=centos7u7/initrd.img inst.stage2=ftp://192.168.213.163/centos7u7 inst.repo=ftp://192.168.213.163/centos7u7 inst.ks=ftp://192.168.213.163/centos-7-ks.cfg
    
    label local
      menu default
      menu label Boot from ^local drive
      localboot 0xffff
    
    menu end
    #准备图片
    [root@python ~]# cp splash.jpg /var/lib/tftpboot/splash.jpg
    [root@python ~]# systemctl start xinetd
    [root@python ~]# systemctl enable xinetd
    [root@python ~]# ss -nutlp|grep 69
    udp    UNCONN     0      0         *:69                    *:*                   users:(("xinetd",pid=14264,fd=5))
    

    FTP服务

    FTP(file Transfer Protocol)文件传输协议,vsftp就是一种利用FTP协议进行数据共享的软件,vsftp主要特色就是提供一种安全的数据共享服务

    使用vsftp作为Centos系统文件的共享服务平台,当客户端从网络从网络启动正式进入到安装界面后,还需要读取Centos光盘中的系统文件,以完成最后的安装,这些文件就通过vsftp共享给网络用户。

    [root@python ~]# yum install -y vsftpd
    [root@python ~]# systemctl start vsftpd
    [root@python ~]# systemctl enable vsftpd
    

    自动化安装实例

    初始化系统环境

    [root@python ~]# systemctl stop firewalld
    [root@python ~]# systemctl disable firewalld
    [root@python ~]# sed -i.bak 's/=enforcing/=disabled/' /etc/sysconfig/selinux
    [root@python ~]# sed -i.bak 's/=enforcing/=disabled/' /etc/selinux/config
    [root@python ~]# setenforce 0
    [root@python ~]# cd /var/ftp/
    

    创建安装目录结构

    [root@python ftp]# mkdir centos6u8
    [root@python ftp]# mkdir centos7u7
    [root@python ftp]# cd /var/lib/tftpboot/
    [root@python tftpboot]# mkdir centos6u8
    [root@python tftpboot]# mkdir centos7u7
    

    配置启动DHCP

    配置启动TFTP

    创建自动应答文件

    [root@python ~]# yum install system-config-kickstart
    [root@python ~]# system-config-kickstart
    #检查有无语法错误
    [root@python ~]# ksvalidator ks.cfg
    [root@python ~]# mv ks.cfg /var/ftp/centos-7-ks.cfg
    

    自动安装虚拟机测试

    踩坑

    (1)引导装载程序选项
    在这里插入图片描述

    # System bootloader configuration
    bootloader --location=mbr	#在主引导记录(MBR)中安装引导装载程序
    # Partition clearing information
    clearpart --all
    

    若不安装引导装载程序(如下),开机会黑屏,卡在booting from local disk

    # System bootloader configuration
    bootloader --location=none
    

    内核参数添加 net.ifnames=0 biosdevname=0,会修改网卡名称为eth0

    # System bootloader configuration
    bootloader --append="net.ifnames=0 biosdevname=0" --location=mbr
    

    (2)安装方法
    在这里插入图片描述FTP目录也可在配置文件centos-7-ks.cfg中修改

    (3)记得挂载镜像
    mount -o loop -t iso9660 /iso/CentOS-7-x86_64-DVD-1908.iso /var/ftp/centos7u7

    若不挂载,会报错 can't find installer maininage path in .treeinfo

    Warning: can't find installer maininage path in .treeinfo
    Warning: Downloading 'ftp://192.168.213.163/centos7u7/Live0S/squashfs.img' failed!
    Warning anaconda: failed to fetch stage2 from ftp://192.168.213.163/centos7u7
    

    (4)导出ks.cfg文件后,要修改名称,在最后添加如下内容

    %packages
    @^minimal
    @core
    %end
    

    (5)装机图片有尺寸(640像素*480像素)要求,不符合要求的可能图片会显示失败
    (6)不正确的镜像可能会使操作系统安装失败

    测试CentOS-6.10-x86_64-minimal.iso无法全自动安装
    在这里插入图片描述
    (7)报错 failed to fetch kickstat from ftp
    可能是selinux没关或ftp未设置匿名模式
    (8)VMware Workstation 与 Device/Credential Guard 不兼容
    以管理员身份运行Windows Powershell (管理员)(Windows键+X),运行命令bcdedit /set hypervisorlaunchtype off,重启电脑

    此问题应该与windows的系统版本有关,是在windows 10自动更新后出现的

  • 相关阅读:
    月薪 30K Java 程序员,需要掌握哪些技术?
    docker-compose安装mongodb
    docker-compose安装apollo服务
    docker-compose安装mysql和redis
    编程总结1:打印沙漏
    秋季学习总结
    对我人生影响最大的三位老师
    自我介绍
    秋季学习总结
    人生路上对我影响最大的三位老师
  • 原文地址:https://www.cnblogs.com/zhaoya2019/p/12761520.html
Copyright © 2011-2022 走看看