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

Linux PXE无盘工作站

244次阅读
没有评论

共计 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、短信等云产品特惠热卖中