PXE自动安装linux

大兔子大兔子 提交于 2019-12-01 19:52:32

PXE简介

许多情况下我们手动安装操作系统是不现实的,尤其是当数量较多的时候。这个时候就要借助其他的技术 了。PXE就是其中的一种。
PXE全称是:Preboot Excution Environment 预启动执行环境是由Intel公司研发的基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统 PXE可以引导和安装Windows,linux等多种操作系统,这里只说Linux不说Windows。
PXE的具体工作有些复杂,不过多介绍,有兴趣的可以自行百度,这里只说实现。以下全部基于虚拟机实现。VM14,Cent7.5

大体流程

1.环境准备
2.检查防火墙和SELinux的设置,确保都是关闭的
3.安装所需的必要软件包并开启对应的服务
4.准备安装源
5.准备自动应答文件,并放到可以被访问到的地方
6.配置DHCP服务并启动
7.将必要的文件复制到相关目录
8.修改启动菜单,以及一些其他的配置文件
8.启动测试

 

安装过程

记录下主机IP地址

将DHCP服务关闭

 

 

 给服务器分配一个IP地址,地址建议为静态地址。配置文件如下:

 

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.11.2
PREFIX=24
GATEWAY=192.168.11.1
NAME=ens33
DEVICE=ens33
ONBOOT=yes

检查服务器相关设置

确保SELinux和防火墙处于关闭状态。
将/etc/selinux/config文件中的SELINUX=xxx改为SELINUX=disabled并重启。
可以通过命令getenforce查看,如果是disabled或permissive即为关闭状态
执行以下两条命令确保关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

配置DHCP服务器

默认情况下DHCP服务在安装完成之后配置文件是空的,也因此DHCP服务必须进行一定的配置才可以启动,DHCP的服务配置文件路径是:/etc/dhcp/dhcpd.conf,通过一个示例来看一下配置文件的 格式
网段:服务器可以分配的地址的网段,可以指定多个
掩码:网段对应的掩码
默认租期:以秒为单位默认的IP地址的租期
最长租期:客户端可以请求一个租期,此项设定用于对此进行限制以秒为单位
地址池:服务器在可分配网段中可以分配的IP地址的范围
DNS:用于客户机从DHCP服务器获取的DNS地址

option domain-name-servers 114.114.114.114
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.11.0 netmask 255.255.255.0
{
    range 192.168.11.3 192.168.11.124;
}

对于一个DHCP服务器以上内容足够了,不过对于PXE还少了两个重要的选项,
next-server 192.168.11.2
filename "pxelinux.0"
next-server用来指定TFTP服务器的位置
filename用来指定要访问TFTP服务器上的哪个文件

option domain-name-servers 114.114.114.114
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.11.0 netmask 255.255.255.0
{
    next-server 192.168.11.2;
    filename "pxelinux.0";
    range 192.168.11.3 192.168.11.124;
}

将相关文件复制到TFTP共享目录

TFTP的共享目录在/var/lib/tftpboot/下,考虑到灵活性依旧可以给不同版本的系统单独的目录
这里创建一个7的目录
复制光盘目录中isolinux下的initrd.img和vmlinuz到/var/lib/tftpboot/7目录下
在共享目录下创建一个名为pxelinux.cfg的文件夹并将光盘目录中isolinux下的isolinux.cfg复制到pxelinux.cfg目录下并且命名为default
将/usr/share/syslinux/menu.c32复制到/var/lib/tftpboot目录下,此文件是菜单背景文件
将/usr/share/syslinux/pxelinux.0复制到/var/lib/tftpboot目录下

修改default文件

default menu.c32
timeout 600
display boot.msg
label linux
  menu label ^Install CentOS 7
  kernel 7/vmlinuz
  append initrd=7/initrd.img ks=http://192.168.11.2/anaconda-ks.cfg
label local
  menu default
  menu label Boot from ^local drive
  localboot 0xffff
menu end

启动测试

将另一台虚拟机网卡同样配置为仅主机,网卡使用自动获取IP。
最后,确认安装源,以及应答文件可以访问,且default文件中路径配置正确。
确认防火墙以及SELinux处于关闭状态。
确认无误的话就可以开机进行测试了。GOOD LUCK

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!