歡迎您光臨本站 註冊首頁

PXE TFTP DHCP網路自動引導安裝Linux

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

自己早先寫的一篇文章,與大家分享下!

概述

PXE(preboot execute environment)是由英特爾公司開發的最新技術,工作於Client/Server的網路模式,支持工作站通過網路從遠端伺服器下載映像,並由此支持來自網路的操作系統的啟動過程,其啟動過程中,終端要求伺服器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟體包到本機內存中並執行,由這個啟動軟體包完成終端基本軟體設置,從而引導預先安裝在伺服器中的終端操作系統.PXE可以引導多種操作系統,如:Windows 95/98/2000/xp/2003/vista/2008,linux等.

PXE最直接的表現是,在網路環境下工作站可以省去硬碟,但又不是通常所說的無盤站的概念,因為使用該技術的PC在網路方式下的運行速度要比有盤PC快3倍以上.當然使用PXE的PC也不是傳統意義上的TERMINAL終端,因為使用了PXE的PC並不消耗伺服器的CPU,RAM等資源,故伺服器的硬體要求極低.
網路克隆 PXE 現在最為廣泛的應用一個是網吧的無盤技術.在有盤領域的網路維護和安裝中PXE可以是最好用的網吧系統統一安裝和維護的引導技術,PXE的引導速度和穩定性都是一流的!

一:安裝環境

一台Linux伺服器,linux服務上需要安裝tftp dhcp.作為遠程安裝的網路伺服器.
客戶端主機,也就是需要安裝Linux系統的主機,此主機主板必須支持能夠從網路啟動.

二:安裝配置Linux網路伺服器上必須的軟體tftp與dhcp

1:檢查是否安裝了tftp
[[email protected] html]# rpm -qa tftp*
tftp-server-0.42-3.1.el5.centos
tftp-0.42-3.1.el5.centos
如果沒有顯示,表示沒有安裝,如果你的系統支持yum,直接執行
[[email protected] html]# yum install *tftp*


2:檢查是否按照了dhcp服務
[[email protected] html]# rpm -qa dhcp*
dhcpv6-client-1.0.10-16.el5
dhcp-3.0.5-18.el5
如果沒有安裝dhcp,同樣執行yum安裝即可.
[[email protected] html]#yum install dhcp*
3:配置tftp服務於dhcp服務
(1)配置tftp服務
Tftp默認是綁定在xinetd服務下的,因此,要修改tftp文件就要到/etc/xinetd.d下完成,修改後的tftp文件如下所示,其中“disable“選項由“yes“修改為”no“,在server_args選項增加了” -u nobody“參數,以讓任何用戶均可訪問.
[[email protected] html]# more /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.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd

server_args = -u nobody -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
(2)配置dhcp服務
默認的dhcp配置文件在/etc/dhcpd.Conf,此文件默認是個空文件,因此我們先拷貝一個dhcpd配置文件的模板文件過來,然後進行修改即可.
[[email protected]]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
默認的/etc/dhcpd.conf含義如下:
ddns-update-style interim; //設置dhcp互動更新模式


ignore client-updates; //忽略客戶端更新
subnet 192.168.12.0 netmask 255.255.255.0 {
//設置子網申明
# --- default gateway
option routers 192.168.12.1; //設置客戶端默認網關
option subnet-mask 255.255.255.0; //設置客戶端子網掩碼
option nis-domain "ixdba.net "; //設置NIS域
option domain-name " ixdba.net "; //設置DNS域
option domain-name-servers 192.168.12.1; //設置DNS伺服器地址
option time-offset -18000; # Eastern Standard Time //設置時間偏差
# option ntp-servers 192.168.12.1;
# option netbios-name-servers 192.168.12.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.12.128 192.168.12.254; //設置地址池
default-lease-time 21600; //設置默認租期,單位為秒
max-lease-time 43200; //設置客戶端最長租期,單位為秒
# we want the nameserver to appear at a fixed address
host ns { //以下設定分配靜態IP地址,不多做解釋.
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
}
}
就用默認的都可以正常工作了,但是我們還可以根據我們的需要來進行更改.
其他說明:
range 192.168.12.2 192.168.12.125; 可以限定分配的IP地址範圍.
如果想給某IP分配固定的IP地址,修改host 那一項,把網卡的Mac地址和IP進行綁定,就是那一段,改為相應的就可以了.
在subnet里定義的網段要與你的網卡IP所處網段一致,也就是說比如你的網卡是192.168.0.x,而dhcp服務卻為10.1.1.0的subnet提供服務是不行的,是啟動不了的.
在本文實驗環境下,我的dhcpd.conf內容如下:


[[email protected] html]# more /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;

subnet 192.168.12.0 netmask 255.255.255.0 {

option routers 192.168.12.1;
option subnet-mask 255.255.255.0;

option nis-domain "ixdba.net";

option domain-name "ixdba.net";
option domain-name-servers 192.168.12.1;
option time-offset -18000;

range 192.168.12.130 192.168.12.137;
default-lease-time 21600;
max-lease-time 43200;

server-name "192.168.12.142";
next-server 192.168.12.142;
filename "/pxelinux.0";

host server1 {
server-name "192.168.12.142";
next-server 192.168.12.142;
hardware ethernet 00:0C:29:23:35:C1;
fixed-address 192.168.12.131;
filename "/pxelinux.0";
}

}
其中,需要說明的有,
server-name Name ;
這個server-name 語句用來告訴客戶端分配地址的伺服器的名字.
Name 是提供給客戶端的名字.
next-server Servername
這個next-server 語句用來指定初始啟動文檔存放的主機地址 (filename指定的文檔).Servername 是個IP地址或是域名.假如沒有next-server參數傳送給客戶端,就使用DHCP伺服器的地址.
(3)DHCP常見啟動錯誤
A:PXELINUX啟動非常慢
當PXELINUX載入時您也許會發現好像花了很長時間來顯示類似於下面的行:
pxelinux.cfg/01-88-99-aa-bb-cc-dd
pxelinux.cfg/C000025B
pxelinux.cfg/C000025
pxelinux.cfg/C00002
pxelinux.cfg/C0000
pxelinux.cfg/C000
pxelinux.cfg/C00


pxelinux.cfg/C0
pxelinux.cfg/C
pxelinux.cfg/default
此時,必須確認在/etc/dhcpd.conf的配置文件中有next-server來設置tftp伺服器的地址.如例子中所示,只要下面一行即可:
next-server 192.168.77.254;
B:in.tftpd: tftp: client does not accept options(沒有接受的選項)
也許在dhcp工作過程中會在/var/log/messages看到一些如下的警告信息:
in.tftpd: tftp: client does not accept options
這個是正常的.PXELINUX好像不能接受所有的選項,但是這不影響引導.
C:當運行in.tftpd提示套接字錯誤
如果看到了如下的錯誤:
in.tftpd: cannot bind to local socket: Address already in use
那麼可能是在/etc/xinet.d/tftp文件中錯誤的配置了伺服器的一些選項.請仔細的檢查一下.

三、配置PXE引導文件

在安裝完畢tftp后,會在/目錄下自動創建一個/tftpboot目錄,此目錄可以用來存放PXE的引導文件PXE的引導文件一般路徑為/usr/lib/syslinux/pxelinux.0,如果沒有找到此文件,請確認系統是否正確安裝了syslinux包,如果沒有安裝syslinux軟體包,是沒有pxelinux.0文件的,這裡我們將pxelinux.0拷貝到/tftpboot目錄下.
[[email protected] html]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
接著,需要將Linux系統安裝光碟上的引導文件拷貝到/tftpboot/目錄下,不同版本的linux,引導文件可能不盡相同,這裡我們採用的是Centos5.3版本,光碟的引導文件在光碟的isolinux目錄下.將isolinux目錄下的所有文件拷貝到/tftpboot目錄下.

[[email protected] html]#mount /dev/cdrom /mnt
[[email protected] html]#cp /mnt/isolinux/* /tftpboot
,我們在/tftpboot目錄下創建pxelinux.cfg目錄,並把目前/tftpboot目錄下isolinux.cfg文件拷貝到/tftpboot/pxelinux.cfg目錄下,並改名為default.操作如下:


[[email protected] html]# cd /tftpboot
[[email protected] tftpboot]# mkdir pxelinux.cfg
[[email protected] tftpboot]# cp isolinux.cfg pxelinux.cfg/default
至此,PXE TFTP DHCP自動網路引導Linux系統安裝工作已經完成了.

四、測試PXE自動引導功能

這裡我們通過vmware虛擬機進行測試,建立一個vmware虛擬機,然後開機按鍵esc進入啟動選項,如下圖所示:

這裡選擇從網路啟動,然後回車即可,如果PXE TFTP DHCP配置正常,就可以自動啟動到系統的安裝引導界面,如下圖所示:

到這裡為止,PXE TFTP DHCP自動網路引導Linux配置成功.接下來就可以通過多種網路方式安裝linux系統了.

可以選擇通過http方式安裝linux系統

可以選擇通過ftp方式安裝linux系統

可以選擇通過NFS方式安裝linux系統

待續...

本文出自 「技術成就夢想」 博客,請務必保留此出處http://ixdba.blog.51cto.com/2895551/526446


[火星人 ] PXE TFTP DHCP網路自動引導安裝Linux已經有924次圍觀

http://coctec.com/docs/linux/show-post-48973.html