linux下網路啟動伺服器安裝和配置方法(pxe+tftp+dhcpd)

來源:互聯網
上載者:User
文章目錄
  • 1. 本文用到的術語解釋
  • 2. PXE 原理
  • 3. PXE BOOT Server 配置過程
  • 4. 總結(Summary)
1. 本文用到的術語解釋

 

PXE
PXE(Pre-boot ExecutionEnvironment)是由Intel設計的協議,它可以使電腦通過網路而不是從本地硬碟、光碟機等裝置啟動。現代的網卡,一般都內嵌支援PXE的ROM晶片。當電腦引導時,BIOS把PXE client調入記憶體執行,並顯示出命令菜單,經使用者選擇後,PXEclient將放置在遠端的作業系統通過網路下載到本地運行.
DHCP
DHCP(Dynamic Host Control Protocol) 動態主機控制協議.用於集中、動態給客戶機分配IP地址.
TFTP
TFTP(trivial file transfer protocol),一種開銷很小的檔案傳輸通訊協定,文法類似ftp.因簡單、高效,常用於網路裝置的OS和配置更新.

 

2. PXE 原理2.1. PXE Client Api (架構)

 

圖 PXE API架構圖。(圖片來源:PXE Specification Version 2.1)

說明: 當BIOS把PXE Client載入記憶體,此時便具有DHCP Client及TFTP Client的能力。
PXE Client具備DHCP Client能力,可以透過DHCP Server來取得IP位址。
PXE Client具備TFTP Client能力”,可通過TFTP來下載kernel image等檔案。

2.2. PXE啟動流程圖(pxe boot)

 

啟動流程說明如下:

  1. PXE Client 向 UDP 67連接埠 廣播 DHCPDDISCOVER 訊息.
  2. DHCP SERVER 或者 DHCP Proxy 收到廣播訊息後,發送DHCPOFFER(包含ip地址)訊息 到 PXE Client的 68 連接埠.
  3. PXE Client 發送 DHCPREQUEST 訊息到 DHCP SERVER ,擷取開機檔案(boot file name).
  4. DHCP SERVER 發送DHCPACK(包含Network Bootstrap Program file name)訊息 到PXE Client.
  5. PXE Client 向 Boot Server 擷取 NBP(Network Bootstrap Program) 檔案.
  6. PXE Client 從TFTP SERVER 下載 NBP,然後在用戶端執行NBP檔案

注意: 在NBP執行初始化後,NBP會按照自己預設的方式從TFTP SERVER中下載其他所需的設定檔.
這個時候 PXE 啟動流程已經完成了,剩下的工作都是有NBP來執行完成的.

例如: pxelinux.0(NBP) 他會下載 default 設定檔,來顯示菜單,根據需要啟動不同的kernel image.
如果是RIS(window安裝)的NBP,會啟動 Windows boot loader 來執行安裝部署widows任務.

3. PXE BOOT Server 配置過程

以下配置和測試 都是在 Centos5 上完成的,其他系統請酌情參考!

3.1. DHCP的安裝與配置

在PXE引導過程中,PXE Client通過DHCP Server 擷取ip地址,NBP檔案名稱,然後從TFTP SERVER 下載NBP檔案並在用戶端執行,從而啟動電腦。

  1. 請確認系統中安裝 dhcp 軟體包
  2. 編輯 /etc/dhcpd.conf 設定檔,設定檔內容如下
      [root@linux]# cat /etc/dhcpd.conf
    ddns-update-style interim;
    allow booting;#定義能夠PXE啟動
    allow bootp;#定義支援bootp
    next-server 192.168.0.1; #TFTP Server的IP地址
    filename "pxelinux.0";#bootstrap 檔案(NBP)

    default-lease-time 1800;
    max-lease-time 7200;
    ping-check true;
    option domain-name-servers 192.168.0.1;

    subnet 192.168.0.0 netmask 255.255.255.0
    {
    range 192.168.0.128 192.168.0.220;
    option routers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    }

    注意:在 /etc/dhcpd.conf 設定檔中 filename "pxelinux.0";
    檔案目錄是相對於 tftp 的根目錄(預設是 /tftpboot),

    所以檔案的絕對路徑就是: /tftpboot/pxelinux.0";當然也可以指定為其它的路徑.

  3. 配置完成後,重啟DHCP服務,並將它設為開機自啟動
      [root@linux]# /etc/init.d/dhcpd start
    啟動 dhcpd: [確定]
    [root@linux]# chkconfig --level 35 dhcpd on
3.2. 安裝配置TFTP伺服器

在PXE引導過程中,PXE Client 使用TFTP協議從TFTP伺服器下載bootstrap檔案並執行.

  1. 請確認系統中安裝 tftp-server 軟體包
  2. 配置tftp服務,tftp 服務由xinetd服務管理

    編輯 /etc/xinetd.d/tftp 檔案,將 disable = yes 改為:disable = no .設定檔內容如下:

      [root@linux]# cat  /etc/xinetd.d/tftp
    # default: off
    # description: The tftp server serves files using the trivial file transfer /
    # protocol. The tftp protocol is often used to boot diskless /
    # workstations, download configuration files to network-aware printers, /
    # and to start the installation process for some operating systems.
    # default: off
    # description: The tftp server serves files using the trivial file transfer /
    #protocol. The tftp protocol is often used to boot diskless /
    #workstations, download configuration files to network-aware printers, /
    #and to start the installation process for some operating systems.
    service tftp
    {
    socket_type= dgram
    protocol= udp
    wait= yes
    user= root
    server= /usr/sbin/in.tftpd
    server_args= -s /tftpboot
    disable= no
    per_source= 11
    cps= 100 2
    flags= IPv4
    }

    注意:TFTP伺服器的根目錄是 /tftpboot,配置完成後重啟xinetd服務,使TFTP伺服器生效.

      [root@linux]# /etc/init.d/xinetd restart
  3. bootstrap 檔案配置 (NBP),這裡使用 pxelinux.0bootstrap檔案由syslinux軟體包提供,我們只要安裝了syslinux,將 pxelinux.0 這個檔案複製到 /tftpboot 目錄即可:
      [root@linux]# rpm -ql syslinux | grep "pxelinux.0"
    /usr/lib/syslinux/pxelinux.0
    [root@linux]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
  4. 配置 pxelinux.0(NBP) 使用的設定檔
  • 接下來建立/tftpboot/pxelinux.cfg/ 目錄,該目錄用於存放用戶端的設定檔

      [root@linux]# mkdir /tftpboot/pxelinux.cfg
  • 預設設定檔default,檔案內容如下
      [root@linux]# cat /tftpboot/pxelinux.cfg/default

    default linux# 預設啟動的是 'label linux' 中標記的啟動核心
    prompt 1 # 顯示 'boot: ' 提示符
    timeout 60 # 等待逾時時間,單位為 1/10 秒,逾時後自動啟動 預設指定的label
    display boot.msg# 顯示boot.msg的內容,檔案路徑是相對tftp server 的根目錄(預設 /tftpboot),所以boot.msg檔案絕對路徑在 /tftpboot/boot.msg .
    F1 boot.msg # 按下'F1' 鍵後顯示的檔案
    F2 options.msg
    F3 general.msg
    F4 param.msg
    F5 rescue.msg

    label 1# 'label' 指定你在 'boot:' 提示符下輸入的關鍵字。
    kernel linux/rh44-x86-32/vmlinuz
    append initrd=linux/rh44-x86-32/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

    label 2
    kernel linux/rh44-x86-64/vmlinuz
    append initrd=linux/rh44-x86-64/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

    label 3
    kernel linux/rh46-x86-64/vmlinuz
    append initrd=linux/rh46-x86-64/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

    label 4
    kernel linux/rh46-x86-32/vmlinuz
    append initrd=linux/rh46-x86-32/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

    label 5
    kernel image/linux/rh38-x86-32/vmlinuz
    append initrd=image/linux/rh38-x86-32/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

    label 6
    kernel linux/rh38-x86-64/vmlinuz
    append initrd=linux/rh38-x86-64/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

    注意事項: 預設 pxelinux.0 和 pxelinux.cfg 一定要在同一個目錄下

3.3. pxelinx.0(NBP)程式設定檔搜尋順序

由於多個用戶端可以從一個PXE伺服器引導,PXE引導映像使用了一個複雜的設定檔搜尋方式來尋找針對客戶機的設定檔.

假設 用戶端伺服器的網卡的MAC地址為 88:99:AA:BB:CC:DD ,對應的IP地址為192.168.1.195,那麼用戶端的pxelinux.0 程式 搜尋順序如下:

  1. 首先以MAC地址為檔案名稱匹配的設定檔,如果不存在,繼續尋找.
  2. 其次以IP地址來尋找.根據IP地址16進位命名的設定檔尋找,從小範圍到打大分為尋找(子網路遮罩由小到大),如果不存在,繼續尋找.
  3. 最後嘗試default檔案

總體來說,pxelinux.0 搜尋的檔案的順序是(可以通過tcpdum得到結果):

  /tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/pxelinux.cfg/C0A801C3
/tftpboot/pxelinux.cfg/C0A801C
/tftpboot/pxelinux.cfg/C0A801
/tftpboot/pxelinux.cfg/C0A80
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default
4. 總結(Summary)

 

5. pxe的ks.cfg檔案----備忘

# Kickstart file automatically generated by anaconda.

install

url --url http://192.168.1.100/CentOS4.5

lang en_US

langsupport --default=en_US.UTF-8 zh_CN.UTF-8 en_US.UTF-8

keyboard us

mouse

text

#xconfig --card "ATI ES1000" --videoram 16384 --hsync 28-64 --vsync 48-78 --resolution 800x600 --depth 16

network --device eth0 --bootproto static --ip 192.168.1.200 --netmask 255.255.255.0 --gateway=192.168.1.1 --hostname=test.insenz.com

rootpw --iscrypted $1$u//jMrgX$dW9ytxBLCyaafVKvwOcnF0

firewall --disabled

selinux --disabled

authconfig --enableshadow --enablemd5

timezone Asia/Shanghai

bootloader --location=mbr

zerombr yes

clearpart --linux --initlabel

part /boot --fstype ext3 --size=150 --ondisk=sda --asprimary

part swap --size=4096 --ondisk=sda

part /    --size=20480 --fstype ext3 --ondisk=sda

part /home --fstype ext3 --size=1 --grow --ondisk=sda

part /data --fstype ext3 --size=1 --grow --ondisk=sdb

skipx

%packages --resolvedeps

@ editors

@ emacs

@ system-tools

@ x-software-development

@ dialup

@ chinese-support

@ development-tools

-ckermit

kernel-devel

kernel-smp-devel

-bluez-pin

-gamin-devel

-OpenIPMI-tools

vlock

iptraf

lslk

e2fsprogs

-xdelta

-zsh

sysstat

kernel-smp

grub

-iiimf-libs-devel

%post

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.