Linux下搭建PXE服务器安装Linux系统

By | 2021年9月17日

花了一个星期主要研究这个,查阅了国内外相关的资料,发现这方面的东西还是比较少的,至少还没有完备的一个体系,这次测试过程发布出来

希望能帮助到一些人,有什么不懂得可以提出来,大家一起讨论。

原理:

PXE是在没有软驱、硬盘、CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导。

DHCP服务器:用来动态分配IP地址(同时分配子网掩码、网关、TFTP服务器地址、启动文件名、DNS服务器、时间服务器等等)。

TFTP服务器:用来提供启动文件的下载

 

简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到 网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务 器的IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是 pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端到联系启动服务器(TFTP服务器)获 得启动文件并执行,这样基本上就完成了pxe启动过程。

 

在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实 Windows下的设置也是一样的,但在Windows下,我们可以通过使用HaneWin DHCP服务器软件或TFTPD32一个软件就搞定(我个人推荐使用HaneWin DHCP服务器软件,但TFTPD32设置起来更简单一些,就是效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好 DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名和启动文件名。

 

第一次接触PXE服务器,作如下记录:

安装环境:虚拟机CentOS6.2中搭建PXE服务器

仍用CentOS6.2 镜像测试客户端安装系统

1.安装与配置tftp服务器

安装tftp:

rpm –ivh tftp-server-0.49-7.el6.x86_64.rpm

 

问题:

安装时提示:

warning: tftp-server-0.42-3.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
xinetd is needed by tftp-server-0.42-3.1.i386 //提示依赖的文件

原因:

需要安装xinetd

rpm –ivh xinetd-2.3.14-39.el6_4.x86_64.rpm

然后在继续上一步,就OK

 

配置tftp:

vim /etc/xinetd.d/tftp

 

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -vss var/lib/tftpboot -c //设置主目录 -c为指定为可以创建文件

disable = no //yes设置为no

per_source = 11

cps = 100 2

flags = IPv4

}

 

#/etc/init.d/iptables stop //关闭防火墙

#service xinetd restart //重启 xinetd 服务重启xinetd服务,因为TFTP服务受控与xinetd, xinetd是管服务的服务,它是不开端口的。

验证一下TFTP是否起来了:

# netstat -nlp | grep 69

出现下面的信息代表已经启动了

udp 0 0 0.0.0.0:69 0.0.0.0:*

 

配置服务开机自动运行级别:

#chkconfig –level 345 xinetd on
#chkconfig –level 345 tftp on

 

2.安装dhcp服务器

rpm –ivh dhcp-4.1.1-25.P1.el6.x86_64.rpm

 

vim /etc/dhcp/dhcpd.conf根据自己的配置修改

添加:

ddns-update-style interim;

ignore client-updates;

allow booting;

allow bootp;

 

class “pxeclients”{

match if substring(option vendor-class-identifier,0,9) = “PXEClient”;

filename “pxelinux.0″;//注意填相对路径

next-server 192.168.2.58; #服务器ip地址 这里即虚拟机ip

}

subnet 192.168.2.0 netmask 255.255.255.0 {

option routers 192.168.2.1;//路由网关

option subnet-mask 255.255.255.0;//子网掩码

option time-offset -18000;

range dynamic-bootp 192.168.2.56 192.168.2.60;//设置dhcp地址池

default-lease-time 216000;

max-lease-time 432000;

}

开启dhcp服务:service dhcpd restart

配置服务开机自动运行级别:
#chkconfig –level 345 dhcpd on

 

此时,可以测试dhcp服务器是否配置成功,可以给客户自动分配ip地址了?

可以配一台新的虚拟机,装好系统,然后物理机断开与外网的连接,虚拟机里右击右上角的电脑图标——编辑连接——ipv4设置——设置为自动(DHCP) 然后左键连接,能连接上,并分配好ip 代表dhcp配置成功。

 

3.安装nfs服务

配置:

vim /etc/exports

/mnt/cdrom *(ro,sync)//使用前先挂载//mount /dev/cdrom /mnt/cdrom 这里我挂载的是CentOS6.2 x64 系统

/mnt/ks/ *(ro)

 

使配置生效

#exportfs -a

查看:

# exportfs -v

开启NFS:

service nfs restart

 

4.配置启动文件

前提是安装了syslinux

 

1. pxelinux.0, vesamenu.c32放到tftp根目录下

cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32} /var/lib/tftpboot/

 

2.创建pxelinux.cfg目录 ,该目录下准备存放default文件

mkdir /var/lib/tftpboot/pxelinux.cfg

 

3.创建要安装系统目录CentOS,拷贝initrd.img vmlinuz至该目录

mkdir /var/lib/tftpboot/CentOS

cp /mnt/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/CentOS

 

4.配置ks.cfg文件

若没有安装kickstart,到镜像文件中找到相应的包安装,

rpm –ivh system-config-kickstart-2.8.6.4-1.el6.noarch.rpm

(这里注意貌似安装这个包时需要好多的依赖文件,请自己根据在镜像包中查找)

然后使用命令system-config-kickstart,配置自动安装文件ks.cfg,创建/mnt/ks目录,保存ks.cfg至/mnt/ks目录

下面给出实例:

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall –disabled
# Install OS instead of upgrade
install
# Use NFS installation media
nfs –server=192.168.2.58 –dir=/mnt/cdrom
# Root password
rootpw –iscrypted $1$HJ9geib8$UhHxS8i5.qqjZGpYcqtV31
# System authorization information
auth –useshadow –passalgo=sha512
# Use graphical install
graphical
firstboot –disable
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux –enforcing
# Installation logging level
logging –level=info
# Reboot after installation
reboot
# System timezone
timezone Africa/Abidjan
# Network information
network –bootproto=dhcp –device=eth0 –onboot=on
# System bootloader configuration
bootloader –location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart –all
# Disk partitioning information
part / –asprimary –fstype=”ext3″ –size=10000
part /boot –fstype=”ext3″ –size=100
part swap –fstype=”swap” –size=4096

 

5.编辑/var/lib/tftpboot/pxelinux.cfg/default,注意自己修改信息

 

default vesamenu.c32

timeout 100

 

menu background splash.jpg

menu title Welcome to Install System –BY Lvyun

 

label Auto_CentOS

menu label Auto Install CentOS6.2

menu default

kernel CentOS/vmlinuz

append initrd=CentOS/initrd.img ks=nfs:192.168.2.58:/mnt/ks/ks.cfg

 

label Custom_CentOS

menu label Custom Install CentOS6.2

kernel CentOS/vmlinuz

append initrd=CentOS/initrd.img

 

label rescue

menu label Resuce

kernel CentOS/vmlinuz

append initrd=CentOS/initrd.img

 

5.完成配置

开启一台虚拟机测试,会自动安装CentOS系统。

Category: os

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注