一: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安裝實現步驟
??? 這里實現中所使用的平臺為vmware6+RHEL5,您可以在FC系列、RH9、CenOS中都可以實現。
?? 首先創建ks.cfg文件。如果你先前已安裝了一個rhel5,則在root目錄下有一個anaconda-ks.cfg文件,你可以對它進行編輯,然后保存為ks.cfg文件,如果沒有就要手工創建或者用其他方法創建我的如下所示:
# Kickstart file automatically generated by anaconda.
install
nfs --server=mail.xzxj11.com --dir=/tools/i386
lang en_US.UTF-8
keyboard us
xconfig --startxonboot
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$PGpgheN.$eAAu/giXgKY4iU4AMcyi20
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --enforcing
timezone Asia/Chongqing
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --linux
part /boot --fstype ext3 --size=100 --grow --maxsize=100
part / --fstype ext3 --size=100 --grow
part swap --size=100 --grow --maxsize=512
%packages
@admin-tools
@base
@base-x
@cluster-storage
@clustering
@core
@dialup
@dns-server
@editors
@ftp-server
@games
@gnome-desktop
@graphical-internet
@graphics
@legacy-network-server
@mail-server
@network-server
@news-server
@office
@printing
@server-cfg
@smb-server
@sound-and-video
@text-internet
@web-server
@x-software-development
??? 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 192.168.1.105;?? #指定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 192.168.1.255;
?option routers 192.168.1.1;
?option domain-name-servers 192.168.1.105;
?subnet 192.168.1.0 netmask 255.255.255.0 {
?range 192.168.1.2 192.168.1.254;
?}
?上述所指明的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 =? -s /tftpboot??? #指定TFTP的根目錄所在位置,允許任何用戶可以進行訪問
?disable = no
?per_source = 11
?cps = 100 2
?flags = IPv4
?}
?在這里主要修改的字段是 disable ,將yes改為no。以打開TFTP服務
?
??? 2.2? 啟動TFTP服務
?#service xinetd restart
3、配置NFS服務器
#vi /etc/exports
/tools/i386??????????????????? *(ro,insecure,sync,no_root_squash)
/tools/ks????????????????????? *(ro,insecure,sync,no_root_squash)
#service nfs start
??? 4、配置bootstrap目錄
???
??? 要配置TFTP所要傳輸的bootstrap,首先要準備好引導文件、內核鏡像文件、跟文件系統文件。
??? 4.1 bootstrap文件:pxelinux.0
?文件位置在/usr/lib/syslinux目錄中。將其拷貝到/tftpboot目錄中
?#cp /usr/lib/syslinux /pxelinux.0? /tftpboot
??? 4.2.內核鏡像文件:vmlinuz
??? vmlinuz文件在RHEL5第一張光盤下的/images/pxeboot目錄中,將vmlinuz拷貝到/tftpboot目錄中[假定光盤加載到/mnt/cdrom]
?#cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot
?
??? 4.3.根文件系統文件:initrd.img
???
??? initrd.img文件在RHEL5第一張光盤下的/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.cfg
?#vi? /tftpboot/pxelinux.cfg/default
?default內容如下:
? DEFAULT install
? PROMPT 1
? LABEL install
? KERNEL vmlinuz???????
APPEND initrd=initrd.img devfs=nomount ramdisk_size=16384 ##啟動參數包括啟動內核時所需要mount的掛載點和ramdisk大小。一般16384都可以滿足了。
???
?6、最后檢查一下/tftpboot下是否存在以下文件:
1.initrd.img
2.pxelinux.0
3.vmlinuz
4.pxelinux.cfg目錄
5.pxelinux.cfg/default
??? ok,啟動一臺機器進入bios里設置為lan啟動,如果沒有報錯的話就會出現boot:提示符,然后輸入install ks=nfs:192.168.1.105:/tools/ks/ks.cfg回車,無需人工干預就開始安裝了。
?
?
?原文地址 http://blog.chinaunix.net/u1/36549/showart_307973.html?
?