Linux PXE無盤工作站

来源:http://www.cnblogs.com/jiangxiaolin/archive/2016/04/19/5408806.html
-Advertisement-
Play Games

• 關於PXE無盤工作站系統的簡介 PXE無盤工作站系統是指由一臺或多台“系統伺服器”和多台“PXE客戶端(無盤工作站)”通過 交換機 相連組成的區域網系統。 (圖1:無盤工作站系統部署拓撲圖) • 系統伺服器:通過DHCP+TFTP+NFS服務向無盤工作站提供系統支持 • PXE客戶端: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客戶端了!!!

 

 


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.開啟關閉伺服器(即時生效): service iptasbles start service iptasbles stop 1.開啟關閉伺服器(即時生效): service iptasbles start service iptasbles stop 2.在開啟了防火牆時,做如下設置,開啟相關端 ...
  • 向腳本傳遞參數 運行: 特殊參數: 算術運算: 原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,比如awk和expr 文件測試運算符: -r file :文件是否可讀 -w file: 文件是否可寫 -x file: 文件是否可執行 echo命令: 流程式控制制: if的語法: for的語 ...
  • 1. 問題描述: 從桌面快捷方式代開chrome、 firefox、 IE exploer時,出現毒霸網址。 2. 解決方案: 未成功: win+R-->gpedit.msc-->進入組策略,更改ie設置不好使 成功 : 刪除桌面快捷方式, 進入瀏覽器安裝目錄, 找到exe文件, 重新生成快捷方式, ...
  • 1、應用場景 在Windows或者linux操作系統中,我們在啟動一個tomcat伺服器時,經常會發現8080埠已經被占用的錯誤,而我們又不知道如何停止這個tomcat伺服器。 2、window環境下殺死進程 1、首先查找到占用8080埠的進程號PID是多少(tomcat預設是8080埠,假如 ...
  • centOs7的一個巨大的變動就是用systemd取代了原來的System V init。systemd是一個完整的軟體包,安裝完成後有很多物理文件組成,大致分佈為,配置文件位於/etc/systemd這個目錄下,配置工具命令位於/bin,和/sbin這兩個目錄下,預先準備的備用配置文件位於/lib ...
  • 使用SSH需要公私鑰對的配置, 十分繁瑣. 為了隨時隨地在任何設備上快速登錄遠程Linux主機, 將選擇使用telnet對其進行連接. 警告:telnet的傳輸為明文, 如果被截獲(root)用戶密碼可能會泄露. Windows OS上的telnet服務配置 Win+X鍵, 選擇程式和功能(亦可在控 ...
  • 網頁中經常需要顯示圖片給用戶看,對網站本身來說有的圖片是從本地圖片伺服器來的,但是一旦數量多了以後,磁碟空間又是一個問題。 所以有時就希望顯示其他網站的Image,直接把其他網站的圖片顯示在我的網站上。但並不是所有的外網Image 都能直接連接過來顯示。 很多情況下網站開發人員就會遇到 403 fo ...
  • 升級前準備: 配置好新的hadoop-2.7.2到各個集群伺服器上 配置好新的環境變數備用 開始升級: 1.停止hive、hbase、zookeeper等相關服務 2.檢查文件(如果文件太多太費時間可以不做) 檢查元數據塊(過濾所有以小圓點開始的行): 3.停止hadoop集群 4.修改環境變數 s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...