PXE批量高效网络装机

本章将学习基于 PXE(预启动执行环境)技术的网络装机方法,并结合 Kickstart 配置实现无人值守自动安装。

1. 系统装机的三种引导方式  *

启动 操作 系统
1. 硬盘
2. 光驱( u 盘)
3. 网络启动 pxe

2、系统安装过程

加载 boot loader
Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设
备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统
内核准备好正确的环境
加载启动安装菜单
加载内核和 initrd 系统(文件才能使用文件)
加载根系统()
运行 anaconda 的安装向导
Linux 安装光盘的安装相关文件
在系统光盘的 isolinux 目录下有和安装相关的文件
boot.cat: 相当于 grub 的第一阶段
isolinux.bin :光盘引导程序,在 mkisofs 的选项中需要明确给出文件路径,这个文件属于
SYSLINUX 项目
isolinux.cfg :启动菜单的配置文件,当光盘启动后(即运行 isolinux.bin ),会自动去找
isolinux.cfg 文件
vesamenu.c32 :是光盘启动后的启动菜单图形界面,也属于 SYSLINUX 项目, menu.c32 提供纯文
本的菜单
memtest :内存检测程序
splash.png :光盘启动菜单界面的背景图
vmlinuz :是内核映像
initrd.img ramfs 文件(精简版的 linux 系统,文件系统驱动等) 网卡

3、什么是PXE

通过网络从远程服务器下载并执行引导程序的技术。

4、PXE 原理和实现过程  *


PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。  PXE 严格来说并不是一种安装方式,而是一种引导的方式

服务端:运行DHCP服务,用来分配IP地址,定位引导程序。

              运行TFTP服务,提供引导程序下载。

客户端:网卡支持PXE协议  ,  主板支持网络协议

pxe是通过网卡引导启动
1.1 实现的硬件条件
1.BIOS 支持
2. 网卡支持(现在基本都已支持)
3. 需要在 bios 中开启开关,服务器一般没打开( bmc 界面里打开)
4. 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置 网卡自带 DHCP 功能
dhcp 指明分配的 ip 地址
vsftpd tftp
5. 服务器通过 tftp 服务(简单文件传输协议)来提供系统内核和引导镜像的下载 udp ()协议 网卡自带
这个功能(不支持其他的远程共享服务)
自带的站点( /var/lib/tftp? initrd.img (驱动) vmlinuz (内核) pxelinux.cfg/default (引导文
件) pxelinux.0 (小型的 grub 程序) tftp 指明?
2. 实现过程讲解
1. 网卡需要查找相关的 dhcp 服务器(获取地址时间)
2. 找到后 dhcp 服务器提供 ip 地址,和引导程序( boot loader )的地址 还提供给客户机 TFTPserver 地址
dhcp 本身不提供 tftp 服务)
3. 网卡使用 tftp 客户端吧引导程序加载到内存中来
4.bios 执行引导程序
5. 引导程序会去 TFTP 去查找配置文件
6. 根据配置文件去引导安装系统
7. 系统安装过程

5、pxe 优点

1. 规模化:同时装配多台服务器
2. 自动化:安装系统、配置各种服务
3. 远程实现:不需要光盘、 U 盘等安装介质

6、操作过程

大概过程
1. 分配给同一局域网内新加机器的地址(配置文件) dhcp 分配地址 指明 tftp 服务器的地址
2. tftp 服务端开启 udp 配置 默认关闭
3. 安装 syslinux 取得 pxelinux.0 文件
4. 安装 vsftpd 服务挂载软件安装源( mount /dev/sr0 /var/ftp/centos7
5. 将四大文件拷入 ( /var/lib/tftpboot
initrd.img 
pxelinux.0  (类似 grub
pxelinux.cfg/default (手写)
vmlinuz
6. 将服务开启,关闭防火墙, selinux
具体操作步骤:
1、yum下载
[root@localhost ~] #yum install tftp-server vsftpd syslinux dhcp -y
2. 将配置文件模板复制到 dhcp 目录下
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example //配置文件模板在此目录下
# see dhcpd.conf(5) man page
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf //将模板文件覆盖掉配置文件(有问题就手打一下)
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@test2 ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.190.0 netmask 255.255.255.0 {
range 192.168.190.200 192.168.190.230;
option routers 192.168.190.100;
# next-server 192.168.190.100; #指定tftp的服务器地址
# filename "pxelinux.0"; #指定启动文件
}
[root@localhost isolinux]# yum install tftp-server -y
[root@localhost isolinux]# rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
主要文件:
#/etc/xinetd.d/tftp //配置文件
#/var/lib/tftpboot //站点
[root@localhost isolinux]# vim /etc/xinetd.d/tftp
#14行改成no,启动服务
1 # default: off
2 # description: The tftp server serves files using the trivial file transfer \
3 # protocol. The tftp protocol is often used to boot diskless \
4 # workstations, download configuration files to network-aware
printers, \
5 # and to start the installation process for some operating systems.
6 service tftp
7 {
8 socket_type = dgram
9 protocol = udp
10 wait = yes
11 user = root
12 server = /usr/sbin/in.tftpd
13 server_args = -s /var/lib/tftpboot
14 disable = no #14行改成no,启动服务
15 per_source = 11
16 cps = 100 2
17 flags = IPv4
18 }
#每项详解
service tftp
{
socket_type = dgram
protocol = udp
wait = no //wait no表示客户机可以多台一起连接,yes表示客 户机只能一台一台连接,表示是否开启多线程一起工作,否则需要等待
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定TFTP根目录(引导文件 的存储路径) -c允许上传
disable = no //disable no表示开启TFTP服务
per_source = 11 //通过限制一个主机的最大连接数,从而防止某个主机 独占某个服务,这里每个IP地址的连接数是11个
cps = 100 2 //表示服务器最多启动100个连接,如果达到这个数 目将停止启动新服务2秒。在此期间不接受任何请求
flags = IPv4
}
[root@test2 ~]# yum install syslinux -y //引导程序文件需要先安装此服务
[root@localhost isolinux]# rpm -ql syslinux |grep pxelinux.0 //安装完成后找到该文件的地址
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0        //地址
[root@localhost isolinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
//拷贝到站点文件里
[root@localhost centos7]# yum install vsftpd -y
[root@localhost centos7]#rpm -ql vsftpd
/var/ftp
[root@localhost centos7]# cd /var/ftp
[root@localhost centos7]# mkdir centos7
[root@localhost centos7]# mount /dev/sr0 /var/ftp/centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost centos7]# cd /var/ftp/centos7/
[root@localhost centos7]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY
CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img pxeboot TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# cd /var/lib/tftpboot/
[root@test2 tftpboot]# mkdir pxelinux.cfg
[root@test2 tftpboot]# cd pxelinux.cfg/
[root@test2 pxelinux.cfg]# vim default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.91.100/centos7
label linux text
kernel vmlinuz
append text initrd =initrd.img method=ftp://192.168.91.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.91.100/centos7
[root@test2 pxelinux.cfg]# cd tftpboot
[root@test2 tftpboot]# ls        #四大文件
initrd.img pxelinux.0 pxelinux.cfg/default vmlinuz
[root@localhost pxeboot]# systemctl stop firewalld.service
[root@localhost pxeboot]# systemctl start dhcpd
[root@localhost pxeboot]# systemctl start tftp
[root@localhost pxeboot]# systemctl start vsftpd
[root@localhost pxeboot]# setenforce 0
1 安装服务 dhcp tftp-server vsftp syslinux
2 修改配置文件
dhcp
next-server IP 地址 ;
filename "pxelinux.0";
tftp-server
/etc/xinetd.d/tftp
14 yes no
/var/lib/tftpboot
四大文件
initrd.img vmlinuz ( 光盘内 images)
pxelinux.0 (安装 syslinux
pxelinux.cfg (手动创建文件夹)
创建 default 的文件
关闭防火墙 selinux
开启服务

7、 kickstart 无人值守安装

kickstart 文件主要包括三个部分:命令段,程序包段,脚本段
命令段:指明各种安装前配置,如键盘类型等
命令段中的常见命令:
keyboard: 设定键盘类型    lang: 语言类型    zerombr:清除 mbr    clearpart:清除分区   
part: 创建分区     rootpw: 指明 root 的密码     timezone: 时区     text: 文本安装界面
network:指定网络设置       firewall:设置防火墙设置        selinux:设置 selinux 设置
reboot :安装完自动重启       user :安装完成后为系统创建新用户       url: 指明安装源
程序包段:指明要安装的程序包组或程序包,不安装的程序包等
%packages
@^environment group : 指定环境包组,如: @^minimal-environment
@group_name
package
-package
%end
脚本段:
%pre: 安装前脚本
%post: 安装后脚本
注意:
CentOS 8,7,6 不同版本的 kickstart 文件格式不尽相同,不可混用
[root@localhost tftpboot] #yum install system-config-kickstart -y        #安装图形化工具
下载了虚拟机应用程序里>系统工具里才有kickstart

7.1 基本配置

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值