阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux PXE无盘工作站

508次阅读
没有评论

共计 8873 个字符,预计需要花费 23 分钟才能阅读完成。

• 关于 PXE 无盘工作站系统的简介

PXE 无盘工作站系统是指由一台或多台“系统服务器”和多台“PXE 客户端 (无盘工作站)” 通过 交换机 相连组成的局域网系统。 

Linux PXE 无盘工作站

(图 1:无盘工作站系统部署拓扑图)

 

• 系统服务器:通过 DHCP+TFTP+NFS 服务向无盘工作站提供系统支持

      DHCP 服务: 向 PXE 客户端分发 IP 地址、子网掩码、网关等,并指定启动引导文件所在服务器(TFTP 服务器)的地址和 PXE 启动文件(pxelinux.0)
      TFTP 服务: 向 PXE 客户端传输 PXE 启动文件、PXE 引导配置文件、linux 内核 vmlinuz,以及系统启动文件 initrd.img
        NFS 服务: 向 PXE 客户端发布工作站的系统(整个根目录“/”的克隆);为了避免磁盘 IO 资源的冲突,建议将克隆的系统部署在存储服务器上

 

 

 

 

• PXE 客户端:PXE 客户端无需硬盘,但需要一块支持 PXE 启动的网卡,不过其他硬件比如主板、内存条、电源等,还是必须要的;将“网卡启动”设置为首选

Linux PXE 无盘工作站

(图 2:PXE 启动流程图)

• 部署之前,先要规划好系统服务器和无盘工作站的工作环境

• 系统环境

操作系统: CentOS release 6.5 x86_64
防火墙: 关闭 iptables 服务并禁止其开机自启;关闭 selinux
其他: 配置好 YUM 仓库:禁用无用的开机自启服务(sshd 服务和 rpcbind 服务不能禁用)

 

 

 

• 软件环境

dhcp-4.1.1-49.P1.el6.centos.x86_64                  // 提供 DHCP 服务;指定 TFTP 地址及 PXE 启动文件                   
tftp-server-0.49-7.el6.x86_64// 向无盘工作站传输系统启动文件等
nfs-utils-1.2.3-64.el6.x86_64// 共享发布工作站系统
syslinux-4.04-3.el6.x86_64// 提供引导程序 ”pxelinux.0″
rpcbind-0.2.0-11.el6.x86_64// 为 NFS 服务的依赖程序
dracut-004-388.el6.noarch// 用来制作启动 initrd 镜像
dracut-network-004-388.el6.noarch// 依赖包,否则将导致 PXE 无法启动

 

 

 

 

 

• 网络环境

主机类别: 主机名: IP 地址: 子网掩码: 网关 / 路由:
系统服务器A HostServerA 192.168.8.8 255.255.255.0 192.168.8.254
系统服务器B HostServerB 192.168.8.9 255.255.255.0 192.168.8.254
无盘工作站 WorkStation/WS100~200 192.168.8.100~200 255.255.255.0 192.168.8.254/ 不设置(禁止工作站联网)

 

 

 

 

 

分别在“系统服务器 A”和“系统服务器 B”上进行下列所有操作:

• 开始进行安装部署了,首先,要克隆好工作站的系统模板

1. 创建工作站系统模板的存放目录(/nodiskos/workstation)和启动引导文件存放目录(/nodiskos/tftpboot)

1
2
3
mkdir /nodiskos                              // 系统模板 + 启动文件存放目录
mkdir /nodiskos/tftpboot                      // 工作站系统启动文件存放目录
mkdir /nodiskos/workstation                  // 工作站系统模板存放目录

2. 使用 rsync 工具将整个 ”/” 目录拷贝到 /nodiskos/workstation 目录下,去除不需要的文件目录

1
rsync -av --exclude='/proc' --exclude='/sys' --exclude='/tmp' --exclude='/var/tmp' --exclude='/etc/mtab' --exclude='/nodiskos' /* /nodiskos/workstation

3. 重新创建被删掉的目录,还原系统模板的目录结构

1
2
cd /nodiskos/workstation
mkdir proc sys tmp var/tmp

4. 调整系统模板的设备挂载配置文件 /nodiskos/workstation/etc/fstab:删除所有的本地存储设备挂载信息(如:/ 和 /boot);添加系统模板的挂载信息。以“系统服务器 A”为例(注意:系统服务器 B 的 ip 设置为 192.168.8.9):

1
2
3
4
5
6
7
8
9
10
11
# /etc/fstab
# Created by anaconda on Fri Dec 25 10:58:41 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
192.168.8.8:/nodiskos/workstation / nfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc   defaults   0 0

5. 修改系统模板的主机名,如 WorkStation

编辑配置文件 /nodiskos/workstation/etc/sysconfig/network,将 HOSTNAME= 参数值修改为 WorkStation

6. 最后,删除所有 ifcfg-eth* 网卡配置文件,只需保留 ifcfg-lo

1
rm -f /nodiskos/workstation/etc/sysconfig/network-scripts/ifcfg-eth*

7. 最后的最后,将整个工作站系统模板打包备份到系统服务器的 /opt 目录下,以作备用(例如下面的第 8 步,为单个 / 每个工作站创建独立的系统)

1
2
cd /nodiskos
tar -cvf /opt/workstation.tar workstation

8. 正如第 7 步所述,可根据需求,为单个 / 每个工作站创建独立的系统。以 WS100~110 为例:

1)将备份的系统模板解压下来,并批量分别拷贝到各自独立工作站的系统目录下

1
2
3
4
5
6
cd /opt
for i in $(seq -w 100 110)
> do
tar -xvf workstation.tar
mv workstation /nodiskos/WS$i
> done

2)最后,还需要为每台独立的工作站调整 fstab 的挂载信息、network 的主机名、hosts 的本地域名解析。可执行如下 shell 脚本进行批量替换,需要赋予执行权限:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 以 WS100~110 为例
# 第一个 for 循环是替换 fstab 的挂载信息和主机名,其中:
# 第 1 个 sed 是替换 /nodiskos/WS###/etc/fstab 的挂载信息
# 第 2 个 sed 是替换主机名
# 第 3 个 sed 是在 hosts 文件中增加本机的域名解析
# 第二个 for 循环是打印出替换后的结果,以便于检查是否替换正确
# 脚本内容如下:
 
#!/bin/bash
for i in $(seq -w 100 110)
do
  sed -i "/nodiskos/s/workstation/WS$i/g" /nodiskos/WS$i/etc/fstab
  sed -i "s/WorkStation/WS$i/g" /nodiskos/WS$i/etc/sysconfig/network
  sed -i "1a 192.168.8.$i WS$i" /nodiskos/WS$i/etc/hosts
done
 
for i in $(seq -w 100 110)
do
  echo -e "fstab : \c" && sed -n "/nodiskos/p" /nodiskos/WS$i/etc/fstab
  echo -e "network : \c" && sed -n "/HOST/p" /nodiskos/WS$i/etc/sysconfig/network
  echo -e "hosts : \c" && sed -n "/192.168/p" /nodiskos/WS$i/etc/hosts
  echo -e "\n"
done

• 接下来,准备好工作站启动引导需要的文件

1. 安装 syslinux 和 dracut 软件包

1
yum install syslinux dracut dracut-network

2. 拷贝 PXE 启动文件(由 syslinux 程序提供)

1
cp /usr/share/syslinux/pxelinux.0 /nodiskos/tftpboot

3. 拷贝用 linux 内核文件 vmlinuz

1
cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /nodiskos/tftpboot

4. 创建用于系统启动 镜像文件 initrd.img(先执行命令 uname -r 查看内核版本,如:2.6.32-431.el6.x86_64)

1
2
3
dracut initrd-2.6.32-431.el6.x86_64.img 2.6.32-431.el6.x86_64
chmod 644 initrd-2.6.32-431.el6.x86_64.img
mv initrd-2.6.32-431.el6.x86_64.img /nodiskos/tftpboot

 5. 在 /nodiskos/tftpboot/pxelinux.cfg/ 目录下创建默认的 PXE 引导配置文件 ”default“(也可为单个 / 每个工作站创建独立的引导配置文件,如 WS100)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# prompt 0 表示工作站立即启动,1 表示工作站等待选择
# kernel 指定内核文件
# append 后面的加下划线的是一行内容,不能换行!!!
# append 附加参数值解释说明:
# initrd= 指定用于引导的 initrd 镜像文件
# root= 指定工作站系统的 nfs 路径(注意:“系统服务器 B”设置成 192.168.8.9)
# selinux= 设置 selinux 开关,0 表示关闭,1 表示开启,默认为 1
# rw 设置工作站系统为可读写
# nomodeset 这个参数是配合后面的 vga= 参数一起使用,设置分辨率
# vga= 这个参数值是设置分辨率,0x 表示十六进制,0314 表示 800*600 16 位色;若无特殊需求,建议删除这 2 个参数
# 文件内容如下:
 
default auto
label auto
prompt 0
kernel vmlinuz-2.6.32-431.el6.x86_64
append initrd=initrd-2.6.32-431.el6.x86_64.img root=nfs:192.168.8.8:/nodiskos/workstation selinux=0 ip=dhcp rw nomodeset vga=0x0314

6. 若要为单个 / 每个工作站创建独立的引导配置文件,以 WS100~110 为例:

1)引导配置文件的文件名为该工作站 IP 地址的十六进制转换值。如 WS100 的 IP 地址为 192.168.8.100,那么它的配置文件的文件名就是 ”C0A80864″;对照关系如下:192→C0,168→A8,8→08,100→64。

2)文件内容可参照 default,只需将 append 下的 root= 参数值指定为对应的 WS100 的 nfs 路径,例如:root=nfs:192.168.8.8:/nodiskos/WS100,前提是 /nodiskos/WS100 需要存在。

3)为了方便,可用如下 shell 脚本,参照默认配置文件 default,进行批量创建和修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 以 WS100~110 为例
# for 循环的主体说明:
# 第 1 行:printf 是将 WS### 的 IP 地址转换成十六进制,并赋值给参数 ws_name
# 第 2 行:以 default 文件为模板,以 IP 地址的十六进制值为文件名,进行批量复制
# 第 3 行:批量修改 root= 参数值指定的 WS### 的 nfs 路径
# 第 4 行:打印出替换后的结果,以便于检查是否替换正确
# 脚本内容如下:
 
#!/bin/bash
cd /nodiskos/tftpboot/pxelinux.cfg/
for i in $(seq -w 100 110)
do
  ws_name=$(printf "%02X" 192 168 8 $i)
  cp default $ws_name
  sed -i "s/workstation/WS$i/g" $ws_name
  sed -n "/append/p" $ws_name
done

7. 最后,/disklessboot/tftpboot 目录下应该有下列几个文件 / 目录:

initrd-2.6.32-431.el6.x86_64.img            // 用于引导的 initrd 镜像文件    (由第 4 步创建)
pxelinux.0// PXE 引导文件(由第 2 步创建)
pxelinux.cfg/default// 默认的引导配置文件(由第 5 步创建)
pxelinux.cfg/C0A808##// 定制的引导配置文件(由第 6 步创建)
vmlinuz-2.6.32-431.el6.x86_64// 用于引导的内核文件(由第 3 步创建)

 

 

 

 

• 配置 DHCP 服务

1. 安装 DHCP 服务软件包

1
yum install dhcp

2. 编辑配置文件 /etc/dhcp/dhcpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# dhcpd.conf 部分参数说明:
# default-lease-time      // 指定确认租赁时长,单位为秒,-1 表示无限制
# max-lease-time          // 指定最大租赁时长
# authritative            // 拒绝不正确的 IP 地址的要求
# subnet netmask {}      // 设置 dhcp 区域
# range                  // 提供动态分配 IP 的范围;若所有工作站都是绑定的固定 IP,可删除此配置
# option routers          // 设置网关 / 路由器地址,多个地址用逗号隔开;若不想让客户端上网,可删除此配置
# domain-name-servers    // 设置 DNS,若不想让客户端上网,可删除此配置;多个地址用逗号隔开
# next-server            // 告知工作站 TFTP 服务器的地址,TFTP 服务提供启动引导(注意:“系统服务器 B”设置成 192.168.8.9)
# filename                // 告知工作站 PXE 引导程序名
# host XXX {}            // 此处是根据工作站的 MAC 地址绑定固定的 IP 地址,前提是知道 MAC 地址
# hardware ethernet      // 工作站的 MAC 地址,一定要小写
# fixed-address          // 绑定固定的 IP 地址,和 range 的不会有冲突,优先以它为主
# 配置内容如下:
 
ddns-update-style none;
ignore client-updates;
default-lease-time -1;
max-lease-time -1;
authritative;
 
subnet 192.168.8.0 netmask 255.255.255.0 {
range 192.168.8.100 192.168.8.200;
option routers 192.168.8.254;
option domain-name-servers 114.114.114.114,202.96.209.5;
next-server 192.168.8.8;
filename "pxelinux.0";
 
host WS100 {
    hardware ethernet 12:34:56:78:ab:cd;
    fixed-address 192.168.8.100;
    }
 
host WS101 {
    hardware ethernet 12:34:56:90:ab:00;
    fixed-address 192.168.8.101;
    }
 
}

3. 重启 DHCP 服务,且将 DHCP 服务设置成开机自启

1
2
3
service dhcpd restart
chkconfig dhcpd on
chkconfig |grep dhcpd

• 配置 TFTP 服务

1. 安装 TFTP 服务软件包

1
yum install tftp-server

2.  编辑配置 /etc/xinetd.d/tftp,只需更改如下 2 处:

1
2
3
4
5
6
7
8
# and to start the installation process for some operating systems.
service tftp
{
...... ........
server_args = -s /nodiskos/tftpboot            # 改成启动文件的存放目录
Disable = no                                    # 将 yes 改成 no,以激活此服务
...... ........
}

3. TFTP 服务是通过 xinetd 工具管理的,因此需要通过 xinetd 启动、停止、重启等

1
2
3
service xinetd restart
chkconfig xinetd on
chkconfig |grep xinetd

• 配置 NFS 服务

1. 安装 NFS 服务软件包

1
yum install nfs-utils rpcbind

2. 编辑配置文件 /etc/exports,添加如下内容:

1
2
3
4
5
6
7
8
9
10
# 这一行是配置默认的工作站系统目录
/nodiskos/workstation 192.168.8.0/24(rw,async,no_root_squash)
 
# 以下部分是为工作站发布独立的系统目录
/nodiskos/WS100 192.168.8.100(rw,async,no_root_squash)
/nodiskos/WS101 192.168.8.101(rw,async,no_root_squash)
/nodiskos/WS102 192.168.8.102(rw,async,no_root_squash)
/nodiskos/WS103 192.168.8.103(rw,async,no_root_squash)
/nodiskos/WS104 192.168.8.104(rw,async,no_root_squash)
...... ......

3. 若独立的工作站数量大,可用如下 shell 脚本进行批量添加

1
2
3
4
5
6
7
8
#!/bin/bash<br>
echo '/nodiskos/workstation 192.168.8.0/24(rw,async,no_root_squash)'>/etc/exports
 
for i in $(seq -w 100 110)
do
  sed -i "\$a \/nodiskos\/WS$i 192.168.8.$i(rw,async,no_root_squash)" /etc/exports
done
cat /etc/exports

4. 重启 NFS 服务,且将 NFS 服务设置成开机自启

1
2
3
service nfs restart
chkconfig nfs on
chkconfig |grep nfs

5. 至此,所有配置都已完成了。最后检查下 DHCP、TFTP、NFS 这 3 个服务是否都已启动,是否都已设置成开机自启

1
2
3
4
5
6
service dhcpd status
service xinetd status
service nfs status
chkconfig |grep dhcpd
chkconfig |grep xinetd
chkconfig |grep nfs

6. 最后的最后,将所有 PXE 客户端的启动项设置成首选网卡启动,然后就启动 PXE 客户端了!!!

使用 PXE+DHCP+Apache+Kickstart 无人值守安装 CentOS5.8 x86_64 http://www.linuxidc.com/Linux/2012-12/76913p4.htm

Linux PXE 无人值守安装出现 PXE-E32:TFTP OPen timeout 的解决办法 http://www.linuxidc.com/Linux/2014-03/98986.htm

使用 PXE 结合 kickstart 自动安装 Linux 系统 http://www.linuxidc.com/Linux/2014-03/98014.htm

RHCE 认证之无人值守安装 Linux 系统(FTP+TFTP+DHCP+Kickstart+PXE)http://www.linuxidc.com/Linux/2013-10/91013.htm

PXE 网络装机(有人值守与无人值守安装) http://www.linuxidc.com/Linux/2013-07/87456.htm

配置 PXE 自动化安装 CentOS 6.7  http://www.linuxidc.com/Linux/2016-04/129926.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130418tm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8873字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7998225
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...