pxe 实现自动通过网络安装
应用场景
有大数量的服务器需要安装操作系统,这时候就可以通过网络进行批量安装
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质
需要用到有 dhcp(自动分配ip服务) ftp(提供文件下载服务)| 或者http服务能get就行
序言
需要先关闭selinux,和firewall防火墙。
挂载本地的yum源
rm- rf /etc/yum.repos.d/*
删除系统自带的yum配置文件
挂载光盘到/mnt/cdrom (默认没有需要自己创建)
mount /dev/sro /mnt/cdrom
yum-config-manager --add file:///mnt/cdrom
完成挂载,在内网中要关闭gpg校验
vim /etc/yum.repos.d/mnt_cdrom_.repo
添加一行
gpgcheck=0
yum clean # (清理缓存)
yum makecahe # (生成缓存)
第一步安装并启用tftp服务
1.yum安装
yum -y install tftp-server xinetd
2.修改tftp的配置文件
vim /etc/xinetd.d/tftp
protocol = udp # TFTP默认使用UDP协议
wait = no # no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
server_args = -s /var/lib/tftpboot # 指定TFTP根目录(引导文件的存储路径)
disable = no # no表示开启TFTP服务
重启服务
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
安装启用dhcp
yum -y install dhcp
修改dhcp的配置文件
vim /etc/dhcp/dhcpd.conf
#dhcpd.conf
#
Sample configuration file for ISC dhcpd
#
log-facility local7;
subnet 10.0.0.0 netmask 255.0.0.0 { #指定为那个网段分配网络参数
range 10.0.0.50 10.0.0.100; #设置准备为客户端分配的IP地址范围
option domain-name-servers 10.0.0.12; #设置分配给客户端的DNS服务器地址
option routers 10.0.0.2; #设置分配给客户端的网关地址。
# option broadcast-address 10.5.5.31; #广播地址,注释掉后用默认的
default-lease-time 600; # 地址租赁时间 600秒后失效
max-lease-time 7200;
next-server 10.0.0.12; # 下一个要访问的地址,就是tftp地址。
filename "pxelinux.0"; #要访问tftp上哪一个文件。
}
重启服务
systemctl start dhcpd
systemctl enable dhcpd
ss -tulanp|grep -w 67 #查看端口
引导内核添加到tftp目录
#这里需要将两个重要文件复制到/var/lib/tftpboot/(vmlinuz、initrd.img)
cd /mnt/images/pxeboot
cp vmlinuz /var/lib/tftpboot/ #复制 Linux系统的内核文件 到TFTP根目录下
cp initrd.img /var/lib/tftpboot/ #复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下
准备pex引导
yum -y install syslinux # PXE引导程序由软件包 syslinux 提供
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 复制 PXE引导程序 到TFTP根目录下
安装vsftpd
yum -y install vsftpd # 安装vsftpd服务
mkdir /var/ftp/centos7 # 新建centos7目录,并将光盘镜像下的文件全部复制到centos7目录下
cp -rf /mnt/* /var/ftp/centos7/
重启
systemctl enable vsftpd
systemctl start vsftpd
配置启动菜单文件
#默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
mkdir /var/lib/tftpboot/pxelinux.cfg # 需要在ftfpboot目录下创建pxelinux.cfg
#vim /var/lib/tftpboot/pxelinux.cfg/default # 在pxelinux.cfg目录下创建default并编辑配置文件
#在文件中插入下面代码
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://10.0.0.12/centos7 # 为ftp服务器地址
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://10.0.0.12/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://10.0.0.12/centos7
重启TFTP服务
systemctl restart tftp
网络安装环境已经可以使用了,,接下来进行自动化安装
(1)安装system-config-kickstart 工具
yum install -y system-config-kickstart # 需要图形化机器支持,没有图形化直接跳过
(2)打开“Kickstart 配置程序”窗口 通过桌面菜单“应用程序”–>“系统工具”–>“Kickstart” 打开 或执行 “system-config-kickstart” 命令打开
#生成kickstart模板文件 centos7.cfg # 放到/var/ftp/ 与centos文件夹一个目录,或者centos里面也行,但是default文件里的配置路径要更改
#检查ks文件语法是否有错
ksvalidator centos7.cfg
文件没有任何提示,表示没有出错
默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
mkdir /var/lib/tftpboot/pxelinux.cfg # 需要在ftfpboot目录下创建pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default # 在pxelinux.cfg目录下创建default并编辑配置文件
default auto #默认为auto
#此处的参数为0,代表无需等待人工干预,自动选择并开始安装操系统
prompt 0
label auto
kernel vmlinuz
#为ftp服务器地址 centos7.ks.cfg 文件路径在/var/ftp/ 也可以放在centos7文件夹内,那么此处也要对应调整
append initrd=initrd.img method=ftp://10.0.0.12/centos7 ks=ftp://10.0.0.12/centos7.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://10.0.0.12/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://10.0.0.12/centos7
完成保存,重启tftp服务就完成了自动化linux安装了
局域网内的裸机,都可以自动化安装系统啦
项目完成