RHEL/CentOS PXE无盘工作站

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

PXE无盘工作站系统是指由一台或多台“系统服务器”和多台“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启动的网卡,不过其他硬件比如主板、内存条、电源等,还是必须要的;将“网卡启动”设置为首选

                        (图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)

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

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

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

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

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

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

# /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

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

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

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

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

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

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 脚本进行批量替换,需要赋予执行权限:

# 以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 软件包

yum install syslinux dracut dracut-network

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

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

3. 拷贝用linux内核文件vmlinuz

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

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

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)

# 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,进行批量创建和修改:

# 以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 服务软件包

yum install dhcp

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

# 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服务设置成开机自启

service dhcpd restart
chkconfig dhcpd on
chkconfig |grep dhcpd

• 配置TFTP服务

1. 安装TFTP 服务软件包

yum install tftp-server

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

# 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 启动、停止、重启等

service xinetd restart
chkconfig xinetd on
chkconfig |grep xinetd


• 配置NFS服务

1. 安装NFS 服务软件包

yum install nfs-utils rpcbind

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

# 这一行是配置默认的工作站系统目录/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 脚本进行批量添加

#!/bin/bash
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服务设置成开机自启

service nfs restart
chkconfig nfs on
chkconfig |grep nfs

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

service dhcpd status
service xinetd status
service nfs status
chkconfig |grep dhcpd
chkconfig |grep xinetd
chkconfig |grep nfs

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



RHEL/CentOS PXE无盘工作站

时间: 2024-10-16 23:46:52

RHEL/CentOS PXE无盘工作站的相关文章

RHEL/CentOS 7.x/6.x/5.x EPEL Repository

RHEL/CentOS 7 64 Bit ## RHEL/CentOS 7 64-Bit  # wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm # rpm -ivh epel-release-7-5.noarch.rpm RHEL/CentOS 6 32-64 Bit ## RHEL/CentOS 6 32-Bit  # wget http://download.fedoraproj

How to Enable RPMForge Repository in RHEL/CentOS 7.x/6.x/5.x

RPMforge repository is a utility that is used to install third party software packages under Red Hat Enterprise Linux (RHEL) and Community ENTerprise Operating System (CentOS). It provides more than 5000 software packages in the rpm format for these

How to install 64-bit Google Chrome 28+ on 64-bit RHEL/CentOS 6 or 7

How to install 64-bit Google Chrome 28+ on 64-bit RHEL/CentOS 6 or 7 The problem Google developers seem to think that Red Hat Enterprise Linux 6 - aka RHEL 6 - and its free equivalents (e.g. CentOS 6 and Scientific Linux 6) are no longer worth suppor

RHEL/CentOS 7.x/6.x/5.x开启EPEL仓库

说明 原文链接 翻译:@adolphlwq 项目地址 这篇指南文章教你如何在 RHEL/CentOS 7.x/6.x/5.x 系统中开启EPEL仓库支持,以便你可以使用 yum 命令 安装额外的标准开源软件包. 您还可以参考: Install and Enable RPMForge Repository in RHEL/CentOS 7/6/5/4 EPEL是什么? EPEL (Extra Packages for Enterprise Linux)是来自于Fedora team的开源.免费的社

RHEL/CentOS 6.x使用EPEL6与remi的yum源安装MySQL 5.5.x

PS:如果既想获得 RHEL 的高质量.高性能.高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 FedoraProject 推出的 EPEL(Extra Packages for Enterprise Linux)正好适合你.EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS.Scientific Linux 等提供高质量软件包的项目.装上了 EPEL,就像在 Fedora 上一

RHEL/CentOS中静态路由的启动过程分析

本文通过分析RHEL/CentOS系统静态路由的启动过程,由此同学们可以了解到Linux系统的启动流程. 可以帮助同学们更好的理解Linux系统,也可以帮助平时的排错. - 系统启动脚本 /etc/init.d/network ,此脚本为bash脚本,静态路由启动的关键行: action $"Bringing up interface $i: " ./ifup $i boot ifup指的是/etc/sysconfig/network-scripts/ifup,$i指的是interfa

RHEL/CentOS 6 (command line) Networking

RHEL/CentOS 6 does not configure network interfaces on default installation. Also, it is configured to use NetworkManager. To enable networking interface and disable NetworkManager please follow instructions below. The /etc/sysconfig/network-scripts/

rhel&centos用本地光盘做yum源

0.准备工作,先su -到超级管理,然后mkdir /ISO 1.使用WinSCP工具上传系统镜像文件rhel-server-7.0-x86_64-dvd.iso到/ISO目录 2.挂载系统镜像文件 mkdir /mnt/cdrom  #新建镜像文件挂载目录 cd /ISO  #进入系统镜像文件存放目录 ls  #列出目录文件,可以看到刚刚上传的系统镜像文件 mount -t iso9660 -o loop /ISO/rhel-server-7.0-x86_64-dvd.iso  /mnt/cd

RHEL/CentOS 7最小化安装后需做的30件事情

导读 CentOS是一个工业标准的Linux发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程序等操作. 阅读帖子的时候请先完成 RHEL/CentOS 最小化安装,这是首选的企业和生产环境.如果还没有,你可以按照下面的指南,它会告诉你两者的最小化安装方法. 最小化安装 CentOS 7 最小化安装 RHEL 7 我们会基于工业标准的需求来介绍以下列出的这些重要工作.我们希望这些东西在你配置