PXE服务

在进行PXE服务器的搭建的时候,首先需要了解PXE服务器的工作原理。

DHCP:提供IP地址和PXE引导程序位置

TFTP:提供引导程序文件

HTTP/FTP/ NFS/ISO:提供系统镜像和仓库源软件包

这些服务和在一起搭配使用,使得计算机能够从网络上下载安装操作系统。

PXE引导原理

  1. 在进行PXE网络引导时,pxelinux.cfg文件是不可缺少的。这个文件是PXE引导时首先读取的配置文件,会告诉PXE Server需要启动哪个Linux内核以及如何启动。
  2. 文件位置在TFTProot目录下的pxelinux.cfg目录,pxelinux.cfg目录中存储的是每一种启动应用程序的配置文件,每种启动应用程序都有一个对应的配置文件。
  3. 通过编辑pxelinux.cfg文件,可以自定义启动选项、操作系统镜像、内核、内存大小等信息,为计算机的启动提供更多的选择和灵活性。

常用目录和文件解释

  1. /var/lib/tftpboot/  #此目录存放的是引导程序文件,是tftp服务器的默认根目录。在进行配置PXE的时候需要将镜像中的5个文件(boot.msg、initrd.img、ldlinux.c32、vmlinuz、pxelinux.0等等)
  2. ?/cdrom 这个目录下就是一个提供镜像的目录,我们的pxe服务器会通过这个http、ftp又或者是NFS服务器去传输安装软件包。(比如http /var/www/html/cdrom ,ftp的/var/ftp/pub,nfs等等,将镜像挂载在相关的目录下进行设置,之后就依靠这个服务来传输安装源软件包)
  3. /var/lib/tftpboot/pxelinux.cfg/  这个目录下存放的default文件(也可以说是PXE配置文件的文位置)主要是设置安装源的路径也就是镜像可以说是,以及临时根文件系统,用于引导过程中加载必要的驱动程序和工具。还有ks.cfg无人值守安装文件、pxe引导文件的路径。

文件:

  1. boot.msg,主要用于记录系统的引导过程中的信息,以及系统状态或者错误信息,在启动过程中反馈或调试信息。如果遇到启动问题,可以查看该文件。
  2. initrd.img,就不用多说了,就是一个临时的根目录文件系统,用来加载必要的驱动程序和工具的。
  3. ldlinux.c32,是syslinux的一部分,提供syslinux核心功能,加载处理、内核的参数,帮助引导介质加载操作系统。
  4. vmlinuz,是可引导、压缩的内核。vm代表virtual memory。内核作为系统核心,负责管理系统资源和硬件。相比于没有压缩的内核文件vmlinuz体积更小,有助于节省存储空间和加载速度。在系统启动时会将vmlinuz加载到内存中并解压。启动引导(GRUB),会将vmlinuz内核文传送给可执行程序来初始化系统。
  5. pxelinux.0,他是syslinux这一开放源代码项目的一部分的改进版本。是一种用于网络引导加载程序
  6. vesamenu.c32 是 SYSLINUX 引导加载程序中的一个模块,主要用于为启动菜单提供图形用户界面。它是 SYSLINUX 的一个扩展,允许你在启动菜单中使用图形和多种样式,而不是简单的文本菜单。具体功能包括:提供图形界面的菜单,允许用户通过图形化的方式选择启动项。支持自定义菜单外观和布局,通过配置文件调整菜单样式。

统一步骤

统一步骤这一块就是包括dhcp的配置,tftpboot目录下的文件存放以及创建的文件等等。

首先第一步就是dhcp,这个配置根据题目

#vim /etc/dhcp/dhcpd.conf
subnet 10.10.120.0 netmask 255.255.255.0 {
    range 10.10.120.10 10.10.120.19;
    option routers 10.10.120.1;
    option domain-name-server 10.10.120.101;
    option domain-name "skills.lan;
    default-lease-time 700;
    max-lease-time 7200;
    next-server 10.10.120.101;
    filename "pxelinux.0";
}

之后是tftp

#cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cd pxelinux.cfg

#可以通过复制挂载的镜像目录下的isolinux目录下的isolinux.cfg文件之后进行修改
cp ?[镜像挂载目录]/isolinux/isolinux.cfg ./default  :
default linux
timeout 60

label linux
kernel vmlinuz
#append initrd=initrd.img inst.repo=http://10.10.120.101/cdrom #inst.ks=http://10.10.120.101/ks.cfg   这里的获取镜像和ks.cfg文件的方式可以不同,你可以使用vsftpd的ftp又或者是使用nfs
#FTP
append initrd=initrd.img inst.repo=ftp://10.10.120.101/cdrom/ inst.ks=ftp://10.10.120.101/ks.cfg

#NFS
append initrd=initrd.img inst.repo=nfs:10.10.120.101:/pxe/cdrom/ inst.ks=nfs:10.10.120.101:/pxe/ks.cfg

完成以上的编写配置文件之后,还需要将系统镜像中的isolinux目录下的相关文件复制到/var/lib/tftpboot/目录下,不过呢这里建议将所有都进行复制。方便一点

其中还需要一个启动程序用于引导加载系统安装,也就是pxelinux.0这个文件在/usr/share/syslinux/目录下。需要先下载syslinux软件包才有这个目录。

之后就是根据刚刚的default文件中的配置进行配置,并且保证能够被访问到,就行。

HTTP

vsftpd

修改ks.cfg文件

/var/lib/tftpboot/pxelinux.cfg/default

重启服务之后进行远程安装系统,抓包看协议,确认使用了vsftpd(ftp-data)服务传输的文件

NFS

ks.cfg

vim /var/lib/tftpboot/pxelinux.cfg/default

报错经验

1.硬件虚拟机内存不能低于2G不然可能就会导致系统安装一半的时候导致“停止”

但是有的时候她可能不会,如果会,你可能会在目标安装主机上看到一个“Halting”的字样

2.ks.cfg无人值守文件的配置错误

如果虚拟机在使用的是硬盘那么就需要写成nvme0n1,如果是scsi磁盘那么就需要写成sda

3.如果在连接到了DHCP服务器但是一直在等待tftp连接的话,那么有可能就是pxe服务器没有关闭防火墙了

又或者是传输服务器没有开起来,或者端口没放行,以后尽量将防火墙关闭

抓包

在客户端从pxe服务器获取到IP地址之后,收到DHCP指示的文件pxelinux.0名称

之后获取到IP地址的客户端向pxe服务器读取请求pxelinux.0。tftp开始传输文件,传输方式使用的原理就是传送给客户端等客户端确认了数据包之后在进行下一次传输(Acknowlegdgment)

之后又开始请求我们的ldlinux.c32文件,ldlinux.c32文件主要用于家在内核、处理参数,提供syslinux核心功能,帮助网络引导加载操作系统

之后又会请求我们的pxelinux.cfg/default文件,这个文件主要是用于写我们客户端在进行网络引导安装用到的文件相关路径以及emm...就这么多吧。

他内容:

请求完之后继续请求vmlinuz文件,他是一个压缩可引导的内核压缩文件,传输到可执行程序之后用于初始化操作系统。

之后请求initrd.img,临时根文件系统,用于加载必要工具和驱动。

完成以上之后就进入到下一个环节了NFS(这里是用的NFS其他的服务也是一次类推)。首先建立三次握手链接,保证之后的数据传输可靠。

端口2049用于NFS服务本身,20048用于NFS的挂载请求,而111端口则用于RPC(远程过程调用)服务的注册和查找

询问权限

之后就比较熟悉了,就是仓库地址,以及软件源地址(可以是ks.cfg无人值守安装)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值