小白带你学习linux的PXE装机

简介: 小白带你学习linux的PXE装机



目录

PXE(Preboot Execution Environment)是一种网络引导协议,它允许通过网络启动计算机。使用PXE,计算机可以在没有本地存储设备(如硬盘)的情况下,通过网络从远程服务器引导操作系统或运行其他预启动环境。

PXE的工作原理如下:

  1. 在计算机启动时,它会通过网络发送一个DHCP(Dynamic Host Configuration Protocol)广播请求,以获取IP地址和其他网络配置信息。
  2. DHCP服务器会回复计算机的请求,并提供其所需的IP地址和PXE配置信息。
  3. 计算机接收到DHCP回复后,会向DHCP提供的TFTP(Trivial File Transfer Protocol)服务器发送一个TFTP请求,以获取PXE引导程序(如pxelinux.0)。
  4. 计算机接收到PXE引导程序后,会执行该程序,并通过TFTP继续下载引导映像文件(如操作系统的内核文件和初始RAM磁盘映像)。
  5. 计算机下载完成映像文件后,会在其内存中加载和执行映像文件,从而完成网络启动。

通过PXE,管理员可以通过网络远程安装操作系统、进行系统维护和诊断、集中管理计算机等。它广泛应用于IT环境中,特别是在大规模部署计算机的情况下,可以大大简化操作和提高效率。

一、PXE是什么?

批量装机系统,网络安装linux操作系统。需要客户端的网卡支持pxe网络启动。

二、PXE的组件:

1、vsftpd/httpd/nfs

负责提供系统的安装文件

2、tftp

负责提供系统安装前的引导文件与内核文件

3、dhcp

负责提供客户端的IP地址分配与pxe引导文件,及pxe服务器地址

三、配置dhcp

1、关闭防火墙与selinux和配置本地yum源

systemctl stop firewalld
setenforce 0
vim /etc/sysconfig/network-scripts/ifcfg-ens33 
systemctl restart network

cd /etc/yum.repos.d/
mkdir backup
mv CentOS-* backup/
vim local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0

2、安装dhcp服务

挂载磁盘安装dhcp

mount /dev/sr0 /mnt
yum -y install dhcp

3、配置dhcp配置文件

cd /etc/dhcp/
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim dhcpd.conf
找到subnet字段,分别把2行、4行、5行对应的行数subnet全部删除。保留一下subnet:
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.100 192.168.100.253;
 # option domain-name-servers ns1.internal.example.org;
 # option domain-name "internal.example.org";
  option routers 192.168.100.254;
  option broadcast-address 192.168.100.255;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 192.168.100.254;
  filename "pxelinux.0";
}
启动dhcp服务
systemctl restart dhcpd

四、配置vsftpd

yum -y install vsftpd
 cd /var/ftp/
mkdir centos7
mount /dev/sr0 /var/ftp/centos7
systemctl restart vsftpd

五、配置tftp

1、安装tftp-server

yum install -y tftp-server

2、启动tftp

vim /etc/xinit.d/tftp
disable=no

systemctl start tftp

六、准备pxelinx.0文件、引导文件、内核文件

1、准备pxelinux.0文件

yum install -y syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

2、准备引导文件、内核文件

cd  /光盘挂载路径/images/pxeboot/

cp initrd.img vmlinuz /var/lib/tftpboot

cd /mnt/images/pxeboot/
cp initrd.img vmlinuz  /var/lib/tftpboot/
cd /var/lib/tftpboot/
ls

八、创建default文件

cd /var/lib/tftpboot
mkdir pxelinux.cfg
cd pxelinux.cfg
vim default
default auto
prompt 1
label auto                      
        kernel vmlinuz  
        append initrd=initrd.img method=ftp://192.168.100.254/centos7
default auto      默认安装标签
prompt 1        等待用户确认,1表示等待,0表示不等待
label auto      定义标签
        kernel vmlinuz  指定内核
        append initrd=initrd.img method=ftp://192.168.100.254/centos7 指定引导镜像文件与系统安装文件

2、验证

配置到这里手动PXE就完事了

九、配置pxe无人值守安装

1、配置ks文件

修改配置文件

vim /root/anaconda-ks.cfg

2、使用图形界面配置

yum install -y system-config-kickstart.noarch
system-config-kickstart

3、修改ks.cfg

从/root/anaconda-ks.cfg文件中拷贝软件安装字段到ks.cfg

vim 
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
%end

vim anaconda-ks.cfg

cp /root/ks.cfg /var/ftp

 

修改default文件

cd /var/lib/tftpboot/pxelinux.cfg/
ls
vim default 
default auto
prompt 0
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.254/centos7 
 ks=ftp://192.168.100.254/ks.cfg

十、开启客户端验证

1、网卡配置

这里的网卡一定要选一样的模式

2、开始自动装机

这里装机完毕了

相关文章
|
2天前
|
存储 Linux
Linux的学习之路:16、文件(3)
Linux的学习之路:16、文件(3)
28 0
|
2天前
|
Linux C语言 C++
Linux的学习之路:14、文件(1)
Linux的学习之路:14、文件(1)
25 0
|
2天前
|
Linux 开发工具 C语言
Linux的学习之路:7、yum与git
Linux的学习之路:7、yum与git
15 0
|
2天前
|
Linux 开发工具
Linux的学习之路:5、粘滞位与vim
Linux的学习之路:5、粘滞位与vim
46 0
|
2天前
|
Linux 程序员 计算机视觉
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
16 0
|
2天前
|
自然语言处理 Java Linux
【Linux】开始学习进程替换吧!
通过学习进程替换,我们可以体会到多语言混搭的快乐,可以从C语言直接蹦到python ,也可以从c++里运行java代码。是不是很厉害!这是通过调度多个进程的效果,联系我们之前学习的进程,进程控制等概念。我们可以想要运行其他代码可以通过创建子进程来实现,但是这样也肯定是同一种语言,如果想要运行其他语言,那是不是有种方法可以调度一个进程来当做子进程呢??? 我们开始今天的学习吧!
11 0
|
2天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
11 0
|
2天前
|
编解码 Linux 数据安全/隐私保护
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
|
2天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
|
2天前
|
运维 监控 安全
【专栏】11 个 Linux 网络命令学习和熟练运用这些命令是提升网络管理能力的基础
【4月更文挑战第28天】本文介绍了11个必备的Linux网络命令,包括ifconfig、ip、ping、traceroute、netstat、tcpdump、ss、telnet、ftp、ssh和nmap,这些命令在网络配置、故障排查和性能监控中发挥关键作用。通过实例分析,强调了它们在实际工作中的综合应用,帮助运维工程师提升效率和应对网络挑战。学习和熟练运用这些命令是提升网络管理能力的基础。