經典推薦:遠程網路安裝RedHat-Linux

火星人 @ 2014-03-09 , reply:0


目前許多管理人員在網路管理中,非常頭疼的問題就是為用戶進行安裝操作系統.筆者曾經在多家企業任職,許多企業為客戶端所配置的基本上很少有帶CD-ROM並且也不可能所有的客戶端都存在著操作系統安裝光碟.由此筆者經常發現許多維護人員經常手拿光碟機、光碟來為用戶重新進行或升級操作系統.

為此筆者為了解決MIS人員的枯燥而又重複的工作曾經為所有服務過的企業都建立了Windows遠程安裝伺服器與Linux遠程安裝伺服器.在這裡筆者主要與各位計算機愛好者探討一下關於Linux方面的遠程安裝過程及實現.


一:Linux安裝工作原理

眾所周知,在安裝過程中Linux首先需要一個引導程序來讓安裝光碟啟動,再實行配置與安裝.但目前轉化為遠程網路安裝那麼就需要我們的安裝程序能夠遠程地通過網路傳送給客戶端.因此在搭建遠程Linux安裝伺服器時候首先要值得注意以下幾個問題:

1.遠程客戶端屬於裸機.在這裡所定義的裸機是除了標準硬體之外沒有任何的操作系統與軟體程序.當然也可以擁有操作系統或者是軟體,之告訴大家是裸機是主要說明最簡單的一種思維方式.

2.遠程客戶端能夠支持網路啟動.在這裡所說明的問題是遠程客戶端為了能夠發送安裝請求能夠通過網路的方式進行,將安裝請求發送給伺服器端.因此客戶端存在網卡,並且網卡上擁有PXE ROM[預引導執行環境]晶元BIOS能夠支持網路啟動.

3.在遠程計算機啟動后將會出現初始化設置,此時因客戶端沒有進入操作系統或處於在裸機狀態下,不可能綁定我們所熟悉TCP/IP地址或者其他網路協議地址.因此他們之間的溝通通過IP地址自動分配服務----DHCP來為客戶端進行分發IP地址,從而實現Client-Server端之間的鏈接與溝通.

4.在遠程安裝客戶端得到IP地址之後,將請求遠程安裝伺服器給客戶端一個Linux引導程序以便於引導Linux並在客戶端上實現安裝界面.但是在TCP/IP協議棧中如果採用TCP協議進行傳送服務,那麼將會出現著名的TCP三次握手過程,從而導致遠程客戶端等待超時而無法完成引導過程.因此就需要採用UDP協議進行快速傳遞,確保遠程客戶端的引導.因此筆者在這裡所採用的程序為TFTP[瑣碎文件傳輸協議]服務作為遠程傳輸伺服器傳送Linux引導程序的伺服器.

5.雖然UDP速度非常快速(這是本身結構有關),但是其仍然屬於不可靠協議之一不具備糾錯、確保數據到達目的地等保障機制,因此在傳輸大量文件或者是大文件時候還是需要採用TCP方式,這樣將不會出現因UDP協議傳輸丟包而導致安裝無法進行.

在這裡有多種方式供大家選擇:
1)NFS[網路文件系統]
2)HTTP
3)FTP等
筆者在這裡選擇採用FTP方式,主要原因在於FTP的方式比較簡單.

因此準備建立遠程安裝伺服器至少需要三個服務:DHCP、TFTP、FTP,三個服務可以再三台不同的計算機上,也可以在同一台計算機上進行實現.

原理歸納:
遠程客戶端計算機啟動,BIOS設置了網卡啟動,網卡PXE ROM中的程序被調入內存執行.首先,客戶端在網路中尋找DHCP伺服器,然後請求一個IP地址;同時DHCP伺服器聯繫到TFTP伺服器為此客戶端發送一個bootstrap(引導程序).客戶端收到bootstrap(文件pxelinux.0)后執行,bootstrap會請求TFTP傳送bootstrap的配置文件(pxelinux.cfg).收到後讀配置文件.根據配置文件內容和客戶情況,客戶端請求TFTP傳送內核映象文件(vmlinuz)和根文件系統文件(initrd.img).啟動內核.這就是一個完整的pxe構建過程.然而要使網卡啟動后再繼續網路安裝系統,則還需要FTP服務將系統所需安裝文件放置FTP相應目錄中進行傳輸安裝.

下面用圖形來表述原理:

二:Linux安裝實現步驟

這裡實現中所使用的平台為RHEL4,您可以在FC系列、RH9、CenOS中都可以實現.

1、配置DHCP伺服器
配置DHCP伺服器主要用途是為了能夠給客戶端分配IP地址,從而讓客戶端與TFTP及FTP進行聯繫

1.1 DHCP的配置文件
DHCP的配置文件的位置在/etc目錄下配置文件的名稱為dhcpd.conf.如果您的系統中不存在dhcpd.conf同時您又確認您確實安裝了DHCP程序,那麼您可以手動建立dhcpd.conf文件.

1.2 配置文件的內容:
option space PXE; #DHCP對PXE的TFTP(瑣碎文件傳輸協議)應答選項
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;

class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
option vendor-class-identifier "PXEClient";
vendor-option-space PXE;
option PXE.mtftp-ip 0.0.0.0;
filename "pxelinux.0"; #指定客戶端所需要的的bootstrap(引導器)文件名
next-server 172.16.168.2; #指定TFTP伺服器的IP地址
}

ddns-update-style interim;
ignore client-updates;


default-lease-time 1200;
max-lease-time 9200;
option subnet-mask 255.255.255.0;
option broadcast-address 172.16.1680.255;
option routers 172.16.168.254;
option domain-name-servers 172.16.168.254;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 172.16.168.100 172.16.168.150;
}

上述所指明的pxelinux.0為網路遠程安裝引導程序bootstrap.其位置在/usr/lib/syslinux目錄中.

1.3 啟動DHCP服務
#service dhcpd restart


2、配置TFTP伺服器

配置TFTP伺服器主要用途是為了能夠給客戶端傳送bootstrap程序[即pxelinux.0],這樣才能夠讓客戶端進行引導載入內核映象文件(vmlinuz)和根文件系統文件(initrd.img)以及啟動內核(Kernel)

2.1 TFTP的配置文件
TFTP的配置文件的位置在/etc/xinetd.d目錄下配置文件的名稱為tftp.
配置內容如下:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot #指定TFTP的根目錄所在位置,允許任何用戶可以進行訪問
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}

在這裡主要修改的欄位是 disable ,將yes改為no.以打開TFTP服務

2.2 啟動TFTP服務
#service xinetd restart

3、配置FTP伺服器

配置FTP伺服器主要用途是為了能夠給客戶端傳送Linux的配置環境與安裝程序.在RHEL4中筆者採用的是VSFTP,為了簡單些、更簡單些,筆者並沒有對vsftp進行任何配置只是啟動了vsftp的守護進程#service vsftpd restart

啟動后利用匿名賬戶進行測試,如果測試成功您就可以將RHEL4的5張光碟中的所有安裝文件全部拷貝到匿名用戶的文件夾/var/ftp/目錄下

4、配置bootstrap目錄

要配置TFTP所要傳輸的bootstrap,首先要準備好引導文件、內核鏡像文件、跟文件系統文件.

4.1 bootstrap文件:pxelinux.0
文件位置在/usr/lib/syslinux目錄中.將其拷貝到/tftpboot目錄中
#cp /usr/lib/syslinux /pxelinux.0 /tftpboot

4.2.內核鏡像文件:vmlinuz

vmlinuz文件在RHEL4第一張光碟下的/images/pxeboot目錄中,將vmlinuz拷貝到/tftpboot目錄中[假定光碟載入到/mnt/cdrom]
#cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot

4.3.根文件系統文件:initrd.img

initrd.img文件在RHEL4第一張光碟下的/images/pxeboot目錄中,將initrd.img拷貝到/tftpboot目錄中[假定光碟載入到/mnt/cdrom]
#cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot

5、創建pxelinux.cfg目錄與default文件

pxelinux.cfg為遠程安裝客戶端配置文件所在目錄,您可以為不同的計算機制定不同的安裝方式或者方法.但是基本上我們都可以用default配置文件來進行為所有的計算機進行配置.


#cd /tftpboot
#mkdir pxelinux.0
#vi default

default內容如下:
DEFAULT install
PROMPT 1
LABEL install
KERNEL vmlinuz
#指定kernel文件

APPEND initrd=initrd.img devfs=nomount ramdisk_size=16384
##啟動參數包括啟動內核時所需要mount的掛載點和ramdisk大小.一般16384都可以滿足了.


6、檢查一下/tftpboot目錄中是否存在如下文件:
1)pxelinux.0 #bootstrap文件
2)vmlinuz #內核鏡像文件
3)initrd.img #根文件系統文件
4)pxelinux.cfg #為遠程客戶端使用的配置文件目錄
5)default #為遠程客戶端使用的配置文件

如果全部存在.那麼現在可以啟動dhcp,tftp,ftp三項服務,找個機器測試一下吧!
祝您好運!!!!!!





[火星人 via ] 經典推薦:遠程網路安裝RedHat-Linux已經有197次圍觀

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