Linux┊PXE+Kickstart全自動無人值守安裝Linux
歡迎轉載,請註明出處:http://www.mike.org.cn
原文地址:http://www.mike.org.cn/blog/index.php?load=read&id=638
Linux/Unix技術交流 qq群:19558533(歡迎加入討論,本群側重伺服器方向)
一、原理和概念:
什麼是PXE
嚴格來說,PXE 並不是一種安裝方式,而是一種引導的方式。進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協議使計算機可以通過網路啟動。協議分為 client 和 server 端,PXE client 在網卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入內存執行,由 PXE client 將放置在遠端的文件通過網路下載到本地運行。運行 PXE 協議需要設置 DHCP 伺服器和 TFTP 伺服器。DHCP 伺服器用來給 PXE client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE client 分配 IP 地址,所以在配置 DHCP 伺服器時需要增加相應的 PXE 設置。此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協議到 TFTP Server 上下載所需的文件。
什麼是KickStart
KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,並生成一個名為ks.cfg的文件;在其後的安裝過程中(不只局限於生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找KickStart生成的文件,當找到合適的參數時,就採用找到的參數,當沒有找到合適的參數時,才需要安裝者手工干預。這樣,如果KickStart文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然後去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中設置的重啟選項來重啟系統,並結束安裝。
二、安裝的前提條件
PXE+KickStart安裝的條件,執行PXE+KickStart安裝需要的設備為:
DHCP 伺服器;
TFTP 伺服器;
KickStart所生成的ks.cfg配置文件
一台存放系統安裝文件的伺服器,如 NFS、HTTP 或 FTP 伺服器。
帶有一個 PXE 支持網卡的將安裝的主機;
三、安裝的步驟
(註:我這裡是以Linux As4為藍本寫的文檔,也許你的OS和軟體和我的不同,如果你按這個文檔來配置的時候請注意相應的變化)
在開始安裝之前提一下:
A、軟體包的獲取:
1、本地方式
一般情況下一些常用的安裝包都可以在你的安裝光碟中找到。
2、網路方式
如果你無法在安裝光碟中找到適合的安裝包,你可以通過yum(什麼是yum可參考本BLOG上另一篇網誌:詳細yum)這種方式去安裝或者去http://rpmfind.net/找找看
廢話了這麼多,開始進入安裝的具體步驟吧,呵呵!
B、 安裝NFS
所需的軟體包:
nfs-utils-lib-1.0.6-8.z1
nfs-utils-1.0.6-87.EL4
portmap-4.0-63
這裡簡單說下這三個包作用:nsf*包的作用實現NFS服務, 由於NFS是一個RPC SERVRE所以portmap也是必不可少的一個包。如果還不知道什麼是NFS,建議你先去了解下相關知識,在繼續讀下去才是個不錯的主意。推薦去鳥哥的網站看看關於NFS的文章,不錯的站。鳥哥LINUX私房菜:http://linux.vbrid.org/。很推薦新手看看這本書。也可來我的QQ群里下載,是簡體版本的。順帶廣告一下我的QQ群(群號:19558533),呵呵!
安裝
yum -y install nfs*
rpm -ivh nfs*
rpm -ivh portmap*
配置nfs
mount /dev/cdrom /mnt #這一步就是將要用到的安裝文件共享,方法很多我是掛載CDROM
echo "/tftpboot *(ro,sync)" > /etc/exports
echo "/mnt *(ro,sync)" > /etc/exports
echo "/home *(ro,sync)" > /etc/exports #此三步設置共享的目錄。由於偷懶是直接mount的光碟機,所以多共享一個目錄用於存放ks.cfg文件
exportfs –a #使配置生效
/etc/init.d/portmap start &&/etc/init.d/nfs start #重啟服務
showmount –e localhost #看查共享的目錄,看到輸出就OK了
Export list for localhost:
/mnt *
/tftpboot *
/home *
C、安裝tftp-server
rpm -ivh tftp-server-0.39-3.el4.rpm
修改配置文件
/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 = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
service xinetd restart #重啟xinetd進程
註:此步的目的是為了啟用tftp服務。隨帶提一TTFTP協議和FTP協議並不相同。因為PXE client的ROM中,已經存在了 TFTP Client。所以這裡的TFTP SERVER並不能用其它的FTP SERVER取代。
D、安裝dhcp服務
rpm -ivh dhcp-3.0.1-62.EL4.rpm
cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf 複製配置模板文件到指定的目錄中,並重命名
vi /etc/dhcpd.conf #配置dhcp
ddns-update-style interim;
ignore client-updates;
subnet 10.185.2.0 netmask 255.255.255.0 {
# --- default gateway
option routers 10.185.2.200;
option subnet-mask 255.255.255.0;
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 10.185.2.200;
filename "/pxelinux.0"; #pxelinux loader文件位置
next-server 192.168.1.14; #pxe server位置(我沒有寫這行,也是可以的)
option time-offset -18000; # Eastern Standard Time
range dynamic-bootp 10.185.2.10 10.185.2.100;
default-lease-time 21600;
max-lease-time 43200;
}
service dhcp start #啟動dhcp服務
E、 安裝kicksttart
rpm -ivh system-config-kickstart-2.5.16.1-1.rpm
system-config-kickstart #在gnome環境下啟動kickstart,這一個圖形化的工具,必要要在有XWINDOWS下的環境運行。圖形下的配置就略了,很容易的。
創建kickstart配置文件
kickstart配置文件是一個簡單的文本文件,包含一個安裝項目列表。每個項目對應於一個安裝選擇,都用關鍵字標明。有如下幾種方法生成kickstart配置文件:
Red Hat提供了一個樣例文件。在Red Hat Linux 文檔光碟中 RH-DOCS 目錄里的 sample.ks 文件。
你可以基於該樣例來創建你自己的配置kickstart文件。 每當你安裝好一台Red Hat Linux機器,Red Hat Linux安裝程序都會創建一個kickstart配置文件,記錄你的真實安裝配置。如果你希望實現和某系統類似的安裝,可以基於該系統的kickstart配置文件來生成你自己的kickstart配置文件。
Red Hat Linux提供了一個圖形化的kickstart配置工具。在任何一個安裝好的Red Hat Linux系統上運行該工具,就可以很容易地創建你自己的kickstart配置文件。kickstart配置工具命令為redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4)
閱讀kickstart配置文件的手冊。用任何一個文本編輯器都可以創建你自己的kickstart配置文件。
下面是一個我配置好的,給大家參考下:
#Generated by Kickstart Configurator
#platform=x86, AMD64, or Intel EM64T
#System language
lang en_SG
#Language modules to install
langsupport en_SG
#System keyboard
keyboard us
#System mouse
mouse
#Sytem timezone
timezone America/New_York
#Root password
rootpw --iscrypted $1$e2/g2haR$omVFHuAItBrreeXz1AxTH.
#Reboot after installation
reboot
#Install OS instead of upgrade
install
#Use NFS installation Media
nfs --server=10.185.2.200 --dir=/mnt
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part / --fstype ext3 --size 3000
part swap --size 512
#System authorization infomation
auth --useshadow --enablemd5
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled
#Do not configure XWindows
skipx
#Package install information
%packages --resolvedeps
@ server-cfg
@ development-tools
@ admin-tools
@ system-tools
生成文件ks.cfg,保存到/home下
四、配置支持PXE啟動
mount /dev/cdrom /mnt #掛載光碟到/mnt
cd /tftpboot/ #tfp-server指定的根目錄位置(若該文件夾已經存在則不用建立,通常重啟tftp服務後會自動建立)
cp /usr/lib/syslinux/pxelinux.0 /tftpboot #pxelinux.0是pxe方式的boot loader,如果你發現沒有這個目錄,不要緊張。找到syslinux這個軟體包就OK了(預設安裝時好像沒有裝這個軟體包)
cp /mnt/images/pxeboot/vmlinuz /tftpboot/ #把Linux第一張安裝光碟上/image/pxeboot/initrd.img和vmlinux複製到/tftpboot/中
cp /mnt/images/pxeboot/initrd.img /tftpboot/
mkdir pxelinux.cfg #在tftpboot中新建一個pxelinux.cfg目錄
cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default #複製第一張安裝光碟上isolinux/isolinux.cfg拷貝到 /tftpboot/pxelinux.cfg/目錄下,並同時更改文件名稱為default
詳細說說這步,由於啟動鏡像pxelinux.0文件在執行過程中,會讀取配置文件以確定它應該載入什麼Linux內核文件來運行。所有的配置文件都放在啟動伺服器的 /tftpboot/pxelinux.cfg/目錄下。pxelinux.0根據一定的規則來搜索合適的配置文件名。C0A88A1E > C0A88A1 > … > C0 > C > default
就是說,如果C0A88A1E文件存在,它就是pxelinux.0將載入的配置文件。否則,繼續往下找。如果C0A88A1文件存在,它就是 pxelinux.0將載入的配置文件。如果前面的以C開頭的文件都不存在,那麼pxelinux.0將試圖從文件default中讀取配置。對於一台需要支持很多安裝機器的安裝伺服器來說,將配置寫在與IP地址對應的文件里很不靈活。把所有配置都集中在default文件中是個不錯的主意,可以減輕配置文件維護負擔。 這裡也是為什麼要更名為default和建立pxelinux.cfg的一個重要原因
五、 修改/tftpboot/pxelinux.cfg/default文件
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz
append ks=nfs:10.185.2.200:/home/ks.cfg initrd=initrd.img #指定讀取ks.cfg的方法。這樣在啟動安裝程序的時候,參數ks=nfs:10.185.2.200:/home/ks.cfg會被傳遞給它,告訴它使用這個文件作為kickstart配置文件來進行kickstart安裝。
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
append -
六、測試
啟動伺服器,一般是按F12選擇進入PXE網路啟動。這時就會自動獲取IP並進入Boot: 界面。按enter就可以自動安裝系統了。
《解決方案》
回復 #1 easylife206 的帖子
大家可以看《開源時代》獨闢蹊徑系列文章,有詳細介紹
pxe安裝是很實用的技術
可以說是網路安裝os的很好的方式
只要帶寬足夠,可以通過網路安裝Ubuntu等os
《解決方案》
網路安裝很不錯的,現在很多機器都可以PXE啟動
《解決方案》
:wink: :wink: :wink:
論壇里好多類似文章啊!
雖然寫的不一樣,但是道理還是通的,明白了道理,就什麼都通了。
《解決方案》
寫得不錯啦!
如何通過linux的 pxe來網路安裝xp呢?:mrgreen:
《解決方案》
稍後寫個PXE XP 如何? :mrgreen:
《解決方案》
原帖由 diyself 於 2009-4-9 21:24 發表 http://linux.chinaunix.net/bbs/images/common/back.gif
寫得不錯啦!
如何通過linux的 pxe來網路安裝xp呢?:mrgreen:
那要用WINDOWS的RIS來玩。
《解決方案》
原帖由 easylife206 於 2009-4-11 00:16 發表 http://linux.chinaunix.net/bbs/images/common/back.gif
稍後寫個PXE XP 如何? :mrgreen:
兄弟,我的您pxe xp了,謝謝:mrgreen: