• 关于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客户端了!!!


Linux PXE无盘工作站的更多相关文章

  1. Linux PXE无人值守网络装机

    Linux PXE无人值守网络装机 一.实验环境: 2台Linux系统(RHEL6.5版本),1台作为:PXE远程安装服务器(安装dhcp服务.ftp服务.tftp服务),另1台作为:客户端(未装RH ...

  2. linux pxe+dhcp+nfs+tftp

    yum -y install vsftpd dhcp xinetd tftp-server syslinux(安装"syslinux"才有pxelinux.0) tftp 服务(v ...

  3. linux pxe网络装机无人值守

    项目分析远程装机的实现:配置DHCP+HTTP+TFTP提供通过vesamenu.c32模块实现图形PXE菜单为不同系统分别提供ks应答文件将第三方rpm包以yum源的方式提供:集中提供ntfs-3g ...

  4. linux pxe 安装Centos7

    服务端 需要3种服务 dhcp + tftp + vsftp tftp 提供引导 为什么不使用其他协议来进行pxe引导 是因为网卡只会集成tftp这种服务     写明到镜像的方式 dhcp 下发tf ...

  5. win2003系统网络安装——基于linux+pxe+dhcp+tftp+samba+ris

    原文发表于:2010-09-16 转载至cu于:2012-07-21 一.原理简介 PXE(preboot execute environment)工作于Client/Server的网络模式,支持工作 ...

  6. Linux PXE自动化安装centos6,centos7系统

    1.PXE是什么? pxe是Preboot Excution Environment的缩写,是intel公司研发,基于client/server的网络模式,支持远程主机通过网络从远端服务器下载镜,并由 ...

  7. Linux PXE + Kickstart 自动装机

    大规模装机时,使用无人值守装机便可大大简便人工操作,提高效率. PXE 网络安装 配置双网卡 这里ens33为nat网络,ens37为仅主机网络,配置ens37 [root@localhost ~]# ...

  8. Linux PXE 网络装机

    一.基础网络建设 Linux配置静态IP-192.168.5.1 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT= ...

  9. Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4

    PXE简介 PXE,全名Pre-boot Execution Environment,预启动执行环境:通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统:由Intel和Syst ...

随机推荐

  1. RabbitMQ调试与测试工具-v1.0.1 -提供下载测试与使用

    最近几天在看RabbitMQ,所以发了两天时间写了一个调试和测试工具.方便使用. 下载地址:RabbitMQTool-V1.0.1.zip

  2. java简单模拟生产者消费者问题

    本文来自:http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 引言 生产者和消费者问题是线程模型中的经典问题:生产者和 ...

  3. python学习笔记-import utils报错

    今天遇到一个坑爹的问题,查找了半天原因,终于解决了,在此特地记录一下. 运行环境:Windows eclipse 我在eclipse中配置了python的运行环境,在eclipse中编写python代 ...

  4. Pramp - mock interview experience

    Pramp - mock interview experience   February 23, 2016 Read the article today from hackerRank blog on ...

  5. 国内优秀的Android资源

    因为一些大家都知道的原因,Android很多官方出品的优秀开发资源在国内无法访问. 国内的同行们对此也做出了很多努力,有很多朋友通过各种手段把很多优秀的资源搬运到了国内,为国内android开发者提供 ...

  6. BZOJ 2693: jzptab [莫比乌斯反演 线性筛]

    2693: jzptab Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1194  Solved: 455[Submit][Status][Discu ...

  7. 基于pcDuino-V2的无线视频智能小车

    这段时间抽空做了个智能视频小车.包含了pid电机控制.socket网络编程.多线程编程.epoll机制.gtk图形界面编程. 这是界面: 小车的底层是用的stm32f405系列的单片机+电机驱动做的一 ...

  8. [LeetCode] Maximum Product Subarray 求最大子数组乘积

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  9. Ceph RGW服务 使用s3 java sdk 分片文件上传API 报‘SignatureDoesNotMatch’ 异常的定位及规避方案

    import java.io.File;   import com.amazonaws.AmazonClientException; import com.amazonaws.auth.profile ...

  10. [转] JAVA读取excel数据(插入oracle数据库)

    原文地址:http://blog.csdn.net/zczzsq/article/details/16803349 本实例做的是读取execl(只能读取.xls的execl,即只能读取03版的),如果 ...