Linux——PXE批量网络装机

50 篇文章 3 订阅
36 篇文章 10 订阅

1.什么是pxe

PXE是它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。

pxe是通过网卡引导启动

大体流程:DHCP(获取IP,寻找TFTP)>TFTP(交换获取开机启动文件 /tftpboot即此文件夹)>HTTP(加载安装文件)>本地安装

1实现的硬件条件

1.BIOS支持

2.网卡支持(现在基本都已支持)

3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)

4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置

5.服务器通过 tftp服务(简单文件传输协议)来提供系统内核和引导镜像的下载

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

1.硬盘

2.光驱

3.网络

3.系统安装过程

  • 加载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系统,文件系统驱动等)

2.实现过程讲解

1.网卡需要查找相关的dhcp服务器(获取地址时间)

2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)

3.网卡使用tftp客户端吧引导程序加载到内存中来

4.bios执行引导程序

5.引导程序会去TFTP去查找配置文件

6.根据配置文件去引导安装系统

7.系统安装过程

在这里插入图片描述

3.搭建过程中服务详解

PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能 够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。

3.1TFTP服务

**TFTP(简单文件传输协议):**内核和引导文件

是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。

3.2 vsftp:安装系统镜像文件获取方式

可以使用http ftp等方式,ftp文件传输的一种。

3.3 syslinux

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。

3.4 DHCP服务

dhcp工作原理简述:
1.OS开机后,没有ip地址,只有mac,发送rarp广播,谁能给我一个ip
arp:ip---->mac
rarp:mac–>ip
2.dhcp收到请求后,查看自己的地址池是否有可用地址,有的话,就直接给他
假如有多个dhcp同时给我返回ip地址,谁反应快,我用谁的ip

dhcp工作流程:(基于广播方式进行)
1.client: dhcp discover
2.server:dhcp offer(IP/mask,gw,…) //server可能有多个
lease time:租约
续租:50%,75%,87%, //续租是单播的
(client:dhcp request,server:dchp ack/noak),续租的时间,在一半的时候,没有回复,75%,一半的一半 //假如dhcp回复dhcp nak(noack) ,client将再次发送dhcp discovery
3.client:dhcp request //请求使用该地址
4.Server:dhcp ack

dhcp是基于广播的,gw会阻断广播
假如需要跨网络:可使用dhcp_porxy,或者多提供一台dhcp
dhcp还可以告诉client网络中一个fs server的地址

一个主机接入到TCP/IP网络,要为配置哪些网络参数:
IP/mask
Gate
DNS server
NTP server

参数配置方式:
静态指定
动态分配

bootp //boot protocol引导协议–>DHCP
(无盘工作站)😕/网卡能够到s端自动请求,加载自己所属的OS文件,
bootp:无盘工作站基于此获取ip地址,这个ip第一次获取是动态的,以后就是固定的
//早期硬盘比较贵的时候,使用无盘工作站,现在用的不多
dhcp:引入了“租约”概念的
bootp;也可以实现为特定主机保留某固定地址;

CentOS
dhcp(ISC,named):只提供dhcp
dhcpd:dchp服务
dhcrelay:中继服务 //这两个一般不会同时启用
dnsmap:dhcp+dns //轻量级,常用语嵌入式
/var/lib/dhcpd/dhcpd.leases 租约数据库文件
/etc/dhcp/dhcpd.conf 主配置文件

4.pxe 优点

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

5.操作过程

大概过程

  1. 分配给同一局域网内新加机器的地址(配置文件)
  2. tftp服务端开启
  3. 安装syslinux 取得 pxelinux.0 文件、和vsftpd服务
  4. 挂载安装源(mount /dev/sr0 /var/ftp/centos7)
  5. 将四大文件拷入 (/var/lib/tftpboot initrd.img pxelinux.0 pxelinux.cfg/default vmlinuz
  6. 将服务开启,关闭防火墙,selinux

具体操作步骤:

[root@localhost ~]# yum install dhcp* -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 12:dhcp-common-4.2.5-58.el7.centos.x86_64 已安装并且是最新版本
软件包 12:dhcp-libs-4.2.5-58.el7.centos.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 dhcp.x86_64.12.4.2.5-58.el7.centos 将被 安装
--> 解决依赖关系完成

依赖关系解决

=========================================================================
 Package    架构         版本                            源         大小
=========================================================================
正在安装:
 dhcp       x86_64       12:4.2.5-58.el7.centos          abc       513 k

事务概要
=========================================================================
安装  1 软件包

总下载量:513 k
安装大小:1.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 12:dhcp-4.2.5-58.el7.centos.x86_64                   1/1 
  验证中      : 12:dhcp-4.2.5-58.el7.centos.x86_64                   1/1 

已安装:
  dhcp.x86_64 12:4.2.5-58.el7.centos                                     

完毕!

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.100.0 netmask 255.255.255.0 {
  range 192.168.100.200 192.168.100.230;
  option routers 192.168.100.101;
#  option domain-name-servers 114.114.114.114;
#  next-server 192.168.100.100;
#  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 

  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/pexlinux.0 /var/lib/tftpboot/    //拷贝到站点文件里

[root@localhost centos7]# yum install vsftpd -y
[root@localhost centos7]#rpm -ql vsftpd  
/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.100.100/centos7

label linux text
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
        
[root@test2 tftpboot]# ls
#四大文件
initrd.img  pxelinux.0  pxelinux.cfg  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
开启服务

6.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
#安装图形化工具

1基本配置:

在这里插入图片描述

2.安装方法:

在这里插入图片描述

3引导文件

在这里插入图片描述

4.分区

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.配置网卡

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

回到xshell 添加配置文件

[root@localhost pxelinux.cfg]#cd /var/ftp/
[root@localhost ftp]#ls
#查看应答文件
centos7  ks.cfg  pub
[root@localhost ftp]#cd 
#回到家目录
[root@localhost ~]#ls
abc.txt  anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
#anaconda-ks.cfg 应答文件模板  复制里面的软件包
%packages
@^minimal
vim-enhanced
wget
curl
tree
%end

root@localhost tftpboot]#cd /var/ftp/
[root@localhost ftp]#vim ks.cfg 
#复制到 自己的ks文件中


[root@localhost ftp]#cd /var/lib/tftpboot/
[root@localhost tftpboot]#ls
initrd.img  menu.c32  pxelinux.0  pxelinux.cfg  vmlinuz
[root@localhost tftpboot]#cd pxelinux.cfg
[root@localhost pxelinux.cfg]#vim default 
#将应答文件 位置指明
default menu.c32
prompt 1

label auto
        menu label Auto Install CentOS Linux ^7
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg

label text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.100.100/centos7


label rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost ftp]#cd /usr/share/syslinux/
[root@localhost syslinux]#ls
altmbr.bin     dosutil       ifcpu64.c32         kbdmap.c32   pcitest.c32     syslinux.com
altmbr_c.bin   elf.c32       ifcpu.c32           linux.c32    pmload.c32      syslinux.exe
altmbr_f.bin   ethersel.c32  ifplop.c32          ls.c32       poweroff.com    ver.com
cat.c32        gfxboot.c32   int18.com           lua.c32      pwd.c32         vesainfo.c32
chain.c32      gptmbr.bin    isohdpfx.bin        mboot.c32    pxechain.com    vesamenu.c32
cmd.c32        gptmbr_c.bin  isohdpfx_c.bin      mbr.bin      pxelinux.0      vpdtest.c32
config.c32     gptmbr_f.bin  isohdpfx_f.bin      mbr_c.bin    reboot.c32      whichsys.c32
cpuid.c32      gpxecmd.c32   isohdppx.bin        mbr_f.bin    rosh.c32        zzjson.c32
cpuidtest.c32  gpxelinux.0   isohdppx_c.bin      memdisk      sanboot.c32
diag           gpxelinuxk.0  isohdppx_f.bin      memdump.com  sdi.c32
disk.c32       hdt.c32       isolinux.bin        meminfo.c32  sysdump.c32
dmitest.c32    host.c32      isolinux-debug.bin  menu.c32     syslinux64.exe
[root@localhost syslinux]#cp menu.c32 /var/lib/tftpboot/
#将菜单背景加入
default menu.c32
prompt 1

label auto
        #menu label Auto Install CentOS Linux ^7
        #加入这句话就可以了
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用内容提供了在Linux系统安装syslinux和配置tftp服务器的步骤,引用内容提供了创建pxelinux.cfg目录的步骤,引用内容提供了保存自动应答软件和编辑引导菜单的步骤。 PXE(Preboot Execution Environment)是一种网络引导协议,可以通过网络从服务器上安装和配置操作系统。使用PXE进行Linux装机可以实现批量装机和自动化装机的需求。 在进行Linux PXE装机之前,需要进行以下步骤: 1. 安装syslinux和tftp服务器:使用命令`yum install -y syslinux`安装syslinux,并使用命令`yum install -y tftp-server`安装tftp服务器。 2. 复制pxelinux.0文件到tftp服务器目录:使用命令`cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/`将pxelinux.0文件复制到tftp服务器的目录下。 3. 创建pxelinux.cfg目录:使用命令`mkdir /var/lib/tftpboot/pxelinux.cfg`创建pxelinux.cfg目录,该目录用于存放引导菜单的配置文件。 4. 准备自动应答文件:将自动应答文件(比如ks.cfg)保存到服务器上,可以使用命令`cp /root/anaconda-ks.cfg /var/ftp/ks.cfg`将anaconda-ks.cfg文件复制到/var/ftp/目录下。 5. 编辑引导菜单的配置文件:使用命令`vim /var/lib/tftpboot/pxelinux.cfg/default`编辑引导菜单的配置文件,添加以下内容: ``` default auto prompt 0 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.10/centos7 ks=ftp://192.168.100.10/ks.cfg ``` 通过以上步骤,可以实现Linux PXE装机。在客户端上启动时,系统将从tftp服务器上下载引导文件pxelinux.0,然后根据引导菜单的配置文件default进行自动安装,同时使用指定的自动应答文件ks.cfg进行操作系统的配置。 请根据实际需求和网络环境进行相应的配置和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Linux——轻松学会PXE高效网络装机](https://blog.csdn.net/m0_61744194/article/details/124291052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [如何使用PXE实现Linux网络装机](https://blog.csdn.net/YsDou/article/details/120143627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MagnumOvO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值