• 关于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)

  1. mkdir /nodiskos // 系统模板+启动文件存放目录
  2. mkdir /nodiskos/tftpboot // 工作站系统启动文件存放目录
  3. 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. cd /nodiskos/workstation
  2. mkdir proc sys tmp var/tmp

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

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

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

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

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

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

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

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

  1. # prompt 0 表示工作站立即启动,1 表示工作站等待选择
  2. # kernel 指定内核文件
  3. # append 后面的加下划线的是一行内容,不能换行!!!
  4. # append 附加参数值解释说明:
  5. # initrd= 指定用于引导的initrd 镜像文件
  6. # root= 指定工作站系统的nfs 路径(注意:“系统服务器B”设置成192.168.8.9)
  7. # selinux= 设置selinux 开关,0 表示关闭,1 表示开启,默认为1
  8. # rw 设置工作站系统为可读写
  9. # nomodeset 这个参数是配合后面的vga=参数一起使用,设置分辨率
  10. # vga= 这个参数值是设置分辨率,0x 表示十六进制,0314 表示800*600 16 位色;若无特殊需求,建议删除这2个参数
  11. # 文件内容如下:
  12.  
  13. default auto
  14. label auto
  15. prompt 0
  16. kernel vmlinuz-2.6.32-431.el6.x86_64
  17. 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. # 以WS100~110 为例
  2. # for 循环的主体说明:
  3. # 第1 行:printf 是将WS###的IP 地址转换成十六进制,并赋值给参数ws_name
  4. # 第2 行:以default 文件为模板,以IP 地址的十六进制值为文件名,进行批量复制
  5. # 第3 行:批量修改root=参数值指定的WS###的nfs 路径
  6. # 第4 行:打印出替换后的结果,以便于检查是否替换正确
  7. # 脚本内容如下:
  8.  
  9. #!/bin/bash
  10. cd /nodiskos/tftpboot/pxelinux.cfg/
  11. for i in $(seq -w 100 110)
  12. do
  13. ws_name=$(printf "%02X" 192 168 8 $i)
  14. cp default $ws_name
  15. sed -i "s/workstation/WS$i/g" $ws_name
  16. sed -n "/append/p" $ws_name
  17. 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. # dhcpd.conf 部分参数说明:
  2. # default-lease-time // 指定确认租赁时长,单位为秒,-1 表示无限制
  3. # max-lease-time // 指定最大租赁时长
  4. # authritative // 拒绝不正确的IP 地址的要求
  5. # subnet netmask {} // 设置dhcp 区域
  6. # range // 提供动态分配IP 的范围;若所有工作站都是绑定的固定IP,可删除此配置
  7. # option routers // 设置网关/路由器地址,多个地址用逗号隔开;若不想让客户端上网,可删除此配置
  8. # domain-name-servers // 设置DNS,若不想让客户端上网,可删除此配置;多个地址用逗号隔开
  9. # next-server // 告知工作站TFTP 服务器的地址,TFTP 服务提供启动引导(注意:“系统服务器B”设置成192.168.8.9)
  10. # filename // 告知工作站PXE 引导程序名
  11. # host XXX {} // 此处是根据工作站的MAC 地址绑定固定的IP 地址,前提是知道MAC 地址
  12. # hardware ethernet // 工作站的MAC 地址,一定要小写
  13. # fixed-address // 绑定固定的IP 地址,和range 的不会有冲突,优先以它为主
  14. # 配置内容如下:
  15.  
  16. ddns-update-style none;
  17. ignore client-updates;
  18. default-lease-time -1;
  19. max-lease-time -1;
  20. authritative;
  21.  
  22. subnet 192.168.8.0 netmask 255.255.255.0 {
  23. range 192.168.8.100 192.168.8.200;
  24. option routers 192.168.8.254;
  25. option domain-name-servers 114.114.114.114,202.96.209.5;
  26. next-server 192.168.8.8;
  27. filename "pxelinux.0";
  28.  
  29. host WS100 {
  30. hardware ethernet 12:34:56:78:ab:cd;
  31. fixed-address 192.168.8.100;
  32. }
  33.  
  34. host WS101 {
  35. hardware ethernet 12:34:56:90:ab:00;
  36. fixed-address 192.168.8.101;
  37. }
  38.  
  39. }

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

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

• 配置TFTP服务

1. 安装TFTP 服务软件包

  1. yum install tftp-server

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

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

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

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

• 配置NFS服务

1. 安装NFS 服务软件包

  1. yum install nfs-utils rpcbind

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

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

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

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

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

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

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

  1. service dhcpd status
  2. service xinetd status
  3. service nfs status
  4. chkconfig |grep dhcpd
  5. chkconfig |grep xinetd
  6. 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. CANopen学习——协议栈

    协议,是双方都提前商量好的通讯约定. 例如:发送1代表灯亮,发送0代表灯灭. 但由于只是单bit的0和1在通信时,抗干扰太弱,且多种控制时不能区分,此时扩展一下协议. 例如:  头      地址   ...

  2. VPN 部署方案

    VPN 对比: OpenVPN: 客户端连接太麻烦,放弃 PPTP VPN:版本较高的苹果手机没有 PPTP VPN 的连接方式,放弃 L2TP VPN:支持所有平台,客户端连接容易,最终选择部署 L ...

  3. Nginx模块之http.md

    ngx_http_access_module ngx_http_access_module模块允许限制对某些客户端地址的访问. 访问也可以通过密码,子请求的结果或JWT来限制. 通过地址和密码的同时访 ...

  4. mysql timeout知多少

    1.timeout变量知多少 打开mysql,用show variables like '%timeout%'命令一看,不看不知道,一看吓一跳,结果如下面所示,这么多timeout相关变量,一下就吓尿 ...

  5. json文件

    json为什么会火 参考链接 http://www.jb51.net/article/32830.htm

  6. [LeetCode] Find Leaves of Binary Tree 找二叉树的叶节点

    Given a binary tree, find all leaves and then remove those leaves. Then repeat the previous steps un ...

  7. Java各种数据结构实现

    1.单向链表 实现思路:创建Node类,包括自己的数据和指向下一个:创建Node类,包括头尾节点,实现添加.删除.输出等功能. tips:n = n.next不破坏链表结果,而n.next = n.n ...

  8. CSS选 择器 三种样式

    一.CSS三种样式 代码 宽度 高度 实线 颜色  A内联样式是优先级最高的方式 px必须写 A:内联式  弊端:代码多很乱 <body> <div class="divc ...

  9. 二.持续集成之--WEB后台

    1.系统管理-系统设置:把linux服务器加进去 2.General配置 3.源码管理: 4.构建触发器 5.构建环境 6.构建 7.构建后操作

  10. OpenCV二值图像孔洞填充的一个简单方法

    在Matlab下,使用imfill可以很容易的完成孔洞填充操作,感觉这是一个极为常用的方法,然而不知道为什么OpenCV里面却没有集成这个函数.在网上查了好多关于Opencv下的孔洞填充方法,大部分使 ...