linux 启动网络服务,Linux下网络启动服务器安装和配置方法(pxe+tftp+dhcpd)

背景:

在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量,但是批量自动化安装服务器的基础是网络启动服务器(bootserver),下面就是网络启动服务器的安装和配置方法,供大家参考!

术语解释:

PXE:(Pre-boot ExecutionEnvironment)是由Intel协议,它可以是计算机通过网络而不是本地硬盘、光驱等设备启动。现代的网卡,一般都内嵌支持pxe的rom芯片。当计算机引导时,BIOS把pxe dient调入内存执行,并显示出命令菜单,经用户选择后,PEXdient将放置在远端的操作系统通过网络下载到本地运行。

DHCP:(Dynamic Host Control Protocol)动态主机控制协议,用于集中、动态给客户分配IP地址

TFTP:(trivial file transfer protocol),一种开销很小的文件传输协议,语法类似ftp,因简单、高效,常用于网络设备的os和配置更新

PXE Client Api(架构)

896d46b9c73693fd9ce2258ff39bec10.gif

上图说明: 当BIOS把PXE Client载入记忆体,此时便具有DHCP Client及TFTP Client的能力。

PXE Client具备DHCP Client能力,可以透过DHCP Server来取得IP位址。

PXE Client具备TFTP Client能力”,可通过TFTP来下载kernel p_w_picpath等文件。

PXE启动流程图(pxe boot)

cbe8d42690a0a1b3788e56489764b24b.png

上图启动流程说明如下:

1.PXE Client 向 UDP 67端口 广播 DHCPDDISCOVER 消息.

2.DHCP SERVER 或者 DHCP Proxy 收到广播消息后,发送DHCPOFFER(包含ip地址)消息 到 PXE Client的 68 端口.

3.PXE Client 发送 DHCPREQUEST 消息到 DHCP SERVER ,获取启动文件(boot file name).

4.DHCP SERVER 发送DHCPACK(包含Network Bootstrap Program file name)消息 到PXE Client.

5.PXE Client 向 Boot Server 获取 NBP(Network Bootstrap Program) 文件.

6.PXE Client 从TFTP SERVER 下载 NBP,然后在客户端执行NBP文件

注意: 在NBP执行初始化后,NBP会按照自己默认的方式从TFTP SERVER中下载其他所需的配置文件.

这个时候 PXE 启动流程已经完成了,剩下的工作都是有NBP来执行完成的.

例如: pxelinux.0(NBP) 他会下载 default 配置文件,来显示菜单,根据需要启动不同的kernel p_w_picpath.

如果是RIS(window安装)的NBP,会启动 Windows boot loader 来执行安装部署widows任务

PXE BOOT Server配置过程[root@node1 ~]# yum install tfpt tftp-server dhcp vsftpd syslinux #安装所需的软件包

[root@node1 ~]# mkdir /var/ftp/pub/centos-6.4-x86_64 -pv

[root@node1 ~]# mount -r /dev/cdrom /var/ftp/pub/centos-6.4-x86_64/

[root@node1 centos-6.4-x86_64]# ls

CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6

EFI Packages RPM-GPG-KEY-CentOS-Security-6

EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6

GPL repodata TRANS.TBL

p_w_picpaths RPM-GPG-KEY-CentOS-6

配置DHCP服务:

在PXE引导过程中,PXE Client通过DHCP Server获取ip地址,NBP文件名称,然后从TFTP SERVER下载NBP文件并在客户端执行,从而启动计算机[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

[root@node1 ~]# vim /etc/dhcp/dhcpd.conf

option domain-name "magedu.com";

option domain-name-servers 172.16.0.1;

default-lease-time 43200;

max-lease-time 86200;

# No service will be given on this subnet, but declaring it helps the

# DHCP server to understand the network topology.

#自定义一个subnet

subnet 192.168.10.0 netmask 255.255.255.0 {

range 192.168.10.11 192.168.10.100;

option routers 192.168.10.10;

next-server 192.168.10.10;#TFTP Server的ip地址

filename="pxelinux.0";#bootstrap 文件(NBP)

}

注意:在 /etc/dhcpd.conf 配置文件中 filename "pxelinux.0"; 文件目录是相对于 tftp 的根目录(默认是 /tftpboot),

所以文件的绝对路径就是: /tftpboot/pxelinux.0";当然也可以指定为其它的路径.

重启dhcpd服务[root@node1 ~]# service dhcpd restart

Shutting down dhcpd: [ OK ]

Starting dhcpd: [ OK ]

[root@node1 ~]# ss -uanlp | grep dhcpd

UNCONN 0 0 *:67 *:* users:(("dhcpd",4883,7))

配置tftp服务器[root@node1 xinetd.d]# chkconfig tftp on

[root@node1 xinetd.d]# service xinetd restart

Stopping xinetd: [FAILED]

Starting xinetd: [ OK ]

[root@node1 xinetd.d]# service xinetd restart

Stopping xinetd: [ OK ]

Starting xinetd: [ OK ]

[root@node1 ~]# ss -uanlp | grep xinetd

UNCONN 0 0 *:69 *:* users:(("xinetd",5007,5))

UNCONN 0 0 *:69 *:* users:(("xinetd",5000,5))

准备引导文件:[root@node1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@node1 ~]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/

[root@node1 ~]# ls /var/lib/tftpboot/

boot.msg pxelinux.0 splash.jpg vesamenu.c32

[root@node1 ~]# cp /var/ftp/pub/centos-6.4-x86_64/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

[root@node1 ~]# ls /var/lib/tftpboot/

boot.msg initrd.img pxelinux.0 splash.jpg vesamenu.c32 vmlinuz

[root@node1 tftpboot]# mkdir pxelinux.cfg

[root@node1 tftpboot]# cd pxelinux.cfg/

[root@node1 pxelinux.cfg]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/isolinux.cfg default

[root@node1 pxelinux.cfg]# chmod +w default

[root@node1 pxelinux.cfg]# mkdir /var/ftp/pub/kickstart/

[root@node1 pxelinux.cfg]# vim default

menu background splash.jpg

menu title Welcome to CentOS 6.4 from PXE!

label linux

menu label ^Install or upgrade an existing system

menu default

kernel vmlinuz

append initrd=initrd.img ks=ftp://192.168.10.10/pub/kickstart/centos6.cfg

[root@node1 ~]# yum -y install system-config-kickstart

[root@node1 ~]#system-config-kickstart

1.选择时区,设置root密码

ad05535a392e9f9c89c8765aeade05ad.png

2、设置安装源(软件包位置),选择协议

606e95b1cf65dc77d25612d3d91c0abd.png

3.选择安装软件

77914668f7c14db6a99bb728fa86e4bb.png

所有设置完成后将文件保存到指定目录,名称跟前面/var/lib/tftpboot/pxelinux.cfg/default中ks路径保持一致,名字为centos6.cfg,添加分区信息,进行测试:[root@node1 ~]# vim centos6.cfg

# Partition clearing information

clearpart --all --initlabel

#添加分区信息

part /boot --fstype=ext4 --size=200

part pv.008002 --size=61440

volgroup vg0 --pesize=8192 pv.008002

logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480

logvol swap --name=swap --vgname=vg0 --size=2048

logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240

logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480

[root@node1 ~]# cp centos6.cfg /var/ftp/pub/kickstart/

[root@node1 ~]# service vsftpd start

测试:

2e5981bde6f704b129b72f28bebbcbd6.png

软件安装过程

aaab08167be2b0fa07d11e88da6df5c8.png

安装后启动登录,操作完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个搭建无人值守系统安装服务器的示例代码: 1. 配置 DHCP 服务 在 DHCP 服务器上,创建一个新的 DHCP 配置文件 `/etc/dhcp/dhcpd.conf`,并添加以下内容: ``` subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option domain-name-servers 8.8.8.8; option routers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 600; max-lease-time 7200; next-server 192.168.1.2; filename "pxelinux.0"; } ``` 这个配置文件指定了 DHCP 服务器的 IP 地址池(192.168.1.100 到 192.168.1.200),DNS 服务器地址(8.8.8.8),网关地址(192.168.1.1),并将默认租约时间设置为 10 分钟。 注意,这个配置文件中的 `next-server` 和 `filename` 属性指定了 PXE 服务器的 IP 地址和启动文件名。在这个示例中,我们将 PXE 服务器的 IP 地址设置为 `192.168.1.2`,将启动文件名设置为 `pxelinux.0`。 2. 配置 TFTP 服务 在 PXE 服务器上,安装 TFTP 服务器软件,并将启动文件 `pxelinux.0` 复制到 TFTP 服务器的根目录下。 3. 配置 Kickstart 文件 创建一个 Kickstart 文件 `ks.cfg`,并将其放置在 PXE 服务器的根目录下。以下是一个示例 Kickstart 文件的内容: ``` # Install OS instead of upgrade install # Use graphical installer graphical # Set up network network --bootproto=dhcp --device=eth0 # Set up root password rootpw --iscrypted $6$SALT$HASH # Configure timezone timezone Asia/Shanghai --utc # Configure partitioning autopart --type=lvm # Configure packages to install %packages @^minimal @core kexec-tools %end ``` 这个 Kickstart 文件将使用图形界面安装 CentOS 操作系统,并自动配置网络、设置 root 密码、设置时区、使用 LVM 分区,以及安装一些基本的软件包。 注意,这个 Kickstart 文件中的 `--bootproto` 参数指定了使用 DHCP 自动配置网络。这个参数的值应该与 DHCP 配置文件中的 `bootproto` 属性保持一致。 4. 配置 PXE 引导文件 创建一个 PXE 引导文件 `pxelinux.cfg/default`,并添加以下内容: ``` default ks prompt 0 timeout 300 label ks kernel vmlinuz append initrd=initrd.img ks=http://192.168.1.2/ks.cfg ``` 这个 PXE 引导文件将使用 `vmlinuz` 和 `initrd.img` 内核文件,以及之前创建的 Kickstart 文件 `ks.cfg` 来启动自动安装程序。 注意,这个 PXE 引导文件中的 `ks` 标签指定了使用 Kickstart 文件自动安装系统,`kernel` 和 `initrd` 属性指定了内核文件,`append` 属性指定了 Kickstart 文件的 URL。 5. 启动 PXE 客户端 现在,启动一个 PXE 客户端并让其从网络引导。在启动过程中,客户端将自动从 DHCP 服务器获取 IP 地址,并下载启动文件 `pxelinux.0`。一旦下载完成,客户端将执行这个启动文件,并自动安装操作系统。 注意,整个过程是无人值守的,只需要启动客户端并等待自动安装完成即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值