一般情況下,安裝Linux需要從光驅(qū)用安裝光盤啟動機器,然后進入交互式安裝界面輸入安裝所需的各種配置完成安裝。在下面這些情況下,這種安裝方式就會暴露出缺點:
1) 機器無光驅(qū)、光驅(qū)壞了(這種情況在現(xiàn)實中頻繁發(fā)生) 或光盤壞了,無法從光驅(qū)安裝Linux。
2) 軟件測試人員在搭建測試環(huán)境時,需要安裝大量的Red Hat Linux測試機器時。這時采用手工安裝方式逐臺機器安裝效率會很低。
3) 對IT支持人員來說,指導(dǎo)一個Red Hat Linux生手安裝Red Hat Linux系統(tǒng)會耗費很多時間。日復(fù)一日重復(fù)這種工作會浪費寶貴的人力資源。
從降低商業(yè)成本和提高安裝系統(tǒng)效率的角度出發(fā),本文向大家介紹一種方案--基于網(wǎng)絡(luò)的Red Hat無人值守安裝。該方案將很多安裝準備工作在服務(wù)器上一次性完成,這樣在客戶機上安裝時就不需要為每個客戶機重復(fù)這些工作,節(jié)省了時間和成本,提高了效率。
在一次性的環(huán)境配置工作完畢后,該套方案能達到非常高的自動化程度:用戶只需要執(zhí)行很少的手工步驟即可完成安裝。安裝過程中的手工步驟和自動步驟如下:
1) 手工步驟:開機,選擇從網(wǎng)絡(luò)啟動。如果你的方案配置得比較負責(zé)復(fù)雜靈活,也許還需要你選擇安裝何種系統(tǒng)。總之,手工步驟非常少。
2) 自動化步驟:剩余步驟,包括系統(tǒng)配置,硬盤分區(qū),和程序包安裝,將全部自動完成。
![]() ![]() |
![]()
|
這種方案需要首先設(shè)置一個啟動服務(wù)器和一個安裝服務(wù)器(可以配置在同一臺物理機上),然后通過網(wǎng)絡(luò)啟動存放在啟動服務(wù)器上的安裝程序。安裝程序會自動訪問存放在安裝服務(wù)器上的安裝配置文件和安裝介質(zhì)來完成安裝。
該方案主要應(yīng)用了三種技術(shù):
1) 在PC上從網(wǎng)絡(luò)啟動Red Hat Linux安裝程序的PXE協(xié)議
2) Red Hat Linux安裝程序提供的網(wǎng)絡(luò)安裝功能(即指通過網(wǎng)絡(luò)訪問安裝介質(zhì))
3) Red Hat Linux 安裝程序提供的無人值守安裝功能(Red Hat稱為kickstart)
技術(shù)1)和2)在參考資料1和2里已有部分介紹。本文將重點描述參考資料中未涉及部分和無人值守安裝功能。
要按本文介紹的方法完成自動化安裝,你需要如下軟硬件資源:
- 一臺PC機器作為啟動和安裝服務(wù)器(其它架構(gòu)機器也可以)
- 一臺待安裝的PC機器,它的網(wǎng)卡必須帶有PXE支持
- 一個建好的局域網(wǎng),上述兩臺機器已經(jīng)連接入同一子網(wǎng)
- 待安裝的Red Hat Linux安裝介質(zhì)
圖1是網(wǎng)絡(luò)安裝環(huán)境的一個原理示意圖。整個安裝環(huán)境由一個局域網(wǎng),和連接到該局域網(wǎng)的三臺機器組成:啟動服務(wù)器(Boot Server),安裝服務(wù)器(Installation Server),和待安裝機器(Client)。其中啟動服務(wù)器和安裝服務(wù)器可以部署在同一臺物理機上。表1列出了對這些機器的軟硬件要求,和其上負載的服務(wù)與數(shù)據(jù)。
圖1 網(wǎng)絡(luò)安裝原理示意圖
表1 網(wǎng)絡(luò)安裝環(huán)境里各機器上的軟硬件配置
1) 配置啟動服務(wù)器
2) 配置安裝服務(wù)器
3) 從網(wǎng)絡(luò)啟動機器以完成安裝
步驟1)和2)只需做一次即可。對每一臺需安裝Red Hat Linux的機器,都需要在啟動服務(wù)器和安裝服務(wù)器中部署相應(yīng)的數(shù)據(jù),并執(zhí)行一次步驟3)。
下面將帶領(lǐng)您逐一執(zhí)行這些步驟。為了簡單,我將用示例來說明如何在一臺安裝了 Red Hat Enterprise Linux AS 3 Update 5 的 PC 機上設(shè)置啟動服務(wù)器和安裝服務(wù)器,并在一臺PC上安裝 Red Hat Enterprise Linux AS 4 Update 2。
![]() ![]() |
![]()
|
啟動服務(wù)器的目的是幫助在待安裝機器上啟動Red Hat Linux 安裝程序。啟動服務(wù)器上需要搭建一個DHCP 服務(wù)器和一個TFTP 服務(wù)器。前者是為了給待安裝機器分配IP地址,后者則是提供了一個讓待安裝機器下載啟動鏡像的途徑。
1) 安裝DHCP服務(wù)器包(RPM包名:dhcpd)。
2) 編輯DHCP服務(wù)器配置文件 /etc/dhcp.conf。這里是一個示例:
option domain-name "mydomain"; ddns-update-style none; max-lease-time 7200; server-name "bootserver"; default-lease-time 600; allow booting; allow bootp; subnet 192.168.138.0 netmask 255.255.255.0 { range 192.168.138.1 192.168.138.254; deny unknown-clients; } group pxe { filename "pxelinux.0"; host testserver { hardware ethernet 00:0C:29:70:24:5B; fixed-address 192.168.138.30; } } |
在這個例子中,定義的子網(wǎng)是 192.168.138.0/255.255.255.0。主機定義項testserver指出 IP 地址 192.168.138.30 將分配給以太網(wǎng)卡00:0C:29:70:24:5B(待安裝機器),文件 pxelinux.0(在 TFTP 服務(wù)器的根目錄中)將作為啟動映像被網(wǎng)卡ROM里的PXE客戶端載入內(nèi)存并運行。
每增加一臺需安裝的機器,我們需在dhcpd.conf中增加一條host條目。
3) 給啟動服務(wù)器配置一個IP,這個IP必須在DHCP服務(wù)器定義的子網(wǎng)內(nèi)。
這里我們使用192.168.138.1。關(guān)于如何為Red Hat Linux系統(tǒng)配置IP地址,請查閱參考資料3。
4) 啟動DHCP服務(wù)。
[root@bsvr] #service dhcpd restart |
1) 安裝TFTP服務(wù)器包(RPM包名:tftpd)。
2) 編輯TFTP 服務(wù)器的配置文件 /etc/xinetd.d/tftp。配置文件如下:
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no } |
這里選定了/tftpboot為TFTP 服務(wù)器的根目錄位置。
3) 將Linux安裝程序的內(nèi)核/根文件系統(tǒng)文件復(fù)制到 TFTP 服務(wù)器的根目錄。對于每一個要被安裝的Red Hat Linux版本,都需要執(zhí)行一次該操作。
Red Hat Linux第一張安裝光盤/isolinux目錄下會包含Linux安裝程序的內(nèi)核/根文件系統(tǒng)文件。下面一段命令將這些文件復(fù)制到TFTP服務(wù)器的根目錄下,并按照版本重新命名。
[root@bsvr]#mkdir /mnt/iso [root@bsvr]#mount -o loop,ro RHEL4-U2-i386-AS-disc1.iso /mnt/iso [root@bsvr]#cp /mnt/iso/isolinux/initrd.img /tftpboot [root@bsvr]#cp /mnt/iso/isolinux/vmlinuz /tftpboot [root@bsvr]#mv /tftpboot/initrd.img /tftpboot/initrd-rhel4u2-i386.img [root@bsvr]#mv /tftpboot/vmlinuz /tftpboot/vmlinuz-rhel4u2-i386 |
4) 將啟動鏡像文件pxelinux.0復(fù)制到TFTP服務(wù)器根目錄。
啟動鏡像pxelinux.0可以在syslinux安裝包里獲得。安裝好syslinux安裝包后,將pxelinux.0復(fù)制到TFTP服務(wù)器根目錄。
[root@bsvr]#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ |
5) 編輯pxelinux.0的配置文件,以使pxelinux可以正確載入Red Hat Linux安裝程序。對于每一個要被安裝的Red Hat Linux版本,都需要執(zhí)行一次該操作。
啟動鏡像pxelinux.0文件在執(zhí)行過程中,會讀取配置文件以確定它應(yīng)該載入什么Linux內(nèi)核文件來運行。所有的配置文件都放在啟動服務(wù)器的/tftpboot/pxelinux.cfg/目錄下。pxelinux.0根據(jù)一定的規(guī)則來搜索合適的配置文件名。舉例來說,對于前面為待安裝機器分配的IP地址192.168.138.30(十六進制表示為C0A88A1E),pxelinux.0會按如下次序搜索配置文件:
C0A88A1E > C0A88A1 > … > C0 > C > default |
就是說,如果C0A88A1E文件存在,它就是pxelinux.0將載入的配置文件。否則,繼續(xù)往下找。如果C0A88A1文件存在,它就是pxelinux.0將載入的配置文件。如果前面的以C開頭的文件都不存在,那么pxelinux.0將試圖從文件default中讀取配置。對于一臺需要支持很多安裝機器的安裝服務(wù)器來說,將配置寫在與IP地址對應(yīng)的文件里很不靈活。把所有配置都集中在default文件中是個不錯的主意,可以減輕配置文件維護負擔(dān)。
可以將能想到的Red Hat Linux版本的配置都寫在default文件里,以便同時支持多種Red Hat Linux版本,如下所示(對于具體某個 Red Hat Linux版本,對應(yīng)的行該如何寫,可以參考它安裝盤里的配置文件 /isolinux/isolinux.cfg):
DEFAULT rhel4u2-i386 DISPLAY pxelinux.cfg/list PROMPT 1 LABEL rhel3u6-i386 KERNEL vmlinuz-rhel3u6-i386 APPEND initrd=initrd-rhel3u6-i386.img LABEL rhel3u6-x86_64 KERNEL vmlinuz-rhel3u6-x86_64 APPEND initrd=initrd-rhel3u6-x86_64.img devfs=nomount ramdisk_size=9216 LABEL rhel4u2-i386 KERNEL vmlinuz-rhel4u2-i386 APPEND initrd=initrd-rhel4u2-i386.img ramdisk_size=8192 |
這樣用戶可以通過輸入某種版本的LABEL(例如,rhel4u2-i386)來選擇具體的安裝版本。為了能在安裝時知道有哪些備選,可以讓pxelinux.0提示要戶選擇之前顯示一個列表。這通過在default里指定DISPLAY選項來實現(xiàn)。在上面的樣例中,我們將所有備選Red Hat Linux版本列在文件pxelinux.cfg/list中,它的內(nèi)容會被pxelinux.0顯示出來。
在我們的例子中,/tftpboot/pxelinux.cfg/list文件內(nèi)容如下:
Choose one of the following Linux distributions for your installation: Name Distribution Arch. Installation media ------------------------------------------------------------------------- rhel3u6-i386 RHEL 3 AS U6 i386 192.168.138.1:/instsvr/i386/rhel3u6 rhel3u6-x86_64 RHEL 3 AS U6 x86_64 192.168.138.1:/instsvr/x86_64/rhel3u6 rhel4u2-i386 RHEL 4 AS U2 i386 192.168.138.1:/instsvr/i386/rhel4u2 |
6) 啟動TFTP服務(wù)。
[root@bsvr]#service xinetd restart |
![]() ![]() |
![]()
|
安裝服務(wù)器在安裝期間提供對 Linux 安裝介質(zhì)和無人值守安裝配置文件的訪問。安裝介質(zhì)存儲在服務(wù)器上的一個目錄中,可以使用各種網(wǎng)絡(luò)協(xié)議訪問它,比如 HTTP,F(xiàn)TP,和NFS。使用NFS協(xié)議,Red Hat Linux安裝程序可以支持多種安裝介質(zhì)目錄結(jié)構(gòu),尤其是支持ISO光盤鏡像文件。這里我們選擇使用NFS協(xié)議來訪問安裝介質(zhì)。
1) 準備ISO安裝介質(zhì)。將Red Hat Linux安裝介質(zhì)的ISO文件都放置到/instsvr目錄下。注意不要改變文件名。
[root@bsvr]#mkdir /instsvr [root@bsvr]#mv RHEL4-U2-i386-AS-disc1.iso /instsvr/i386/rhel4u2 [root@bsvr]#mv RHEL4-U2-i386-AS-disc2.iso /instsvr/i386/rhel4u2 [root@bsvr]#mv RHEL4-U2-i386-AS-disc3.iso /instsrv/i386/rhel4u2 [root@bsvr]#mv RHEL4-U2-i386-AS-disc4.iso /instsrv/i386/rhel4u2 |
2) 編輯NFS服務(wù)器配置文件 /etc/exports,以允許其它機器通過NFS訪問目錄/instsrv。/etc/exports 文件內(nèi)容如下:
/instsvr *(ro,no_root_squash,sync) |
其中:
- * 表示任何IP地址都可以訪問該目錄。為了安全的考慮,也可以指定具體的IP地址。
- ro 表示遠程機器對該目錄只有讀權(quán)限。
- 其它選項請參考NFS手冊。
3) 重新啟動NFS服務(wù)以使新配置生效
[root@bsvr]# service nfs restart |
4) 檢測目錄/instsrv是否已被正確共享
[root@bsvr]#showmount -e localhost Export list for localhost: /instsrv * |
這樣,我們就設(shè)置好了一個安裝服務(wù)器。很簡單吧!
自從 5.2 版開始, Red Hat Linux 開始支持一個稱為 kickstart 的功能,其主要目的是為了減少安裝過程中的人機交互,提高安裝效率。使用這種方法,只需事先定義好一個配置文件(通常存放在安裝服務(wù)器上),并讓安裝程序知道該配置文件的位置,在安裝過程中安裝程序就可以自己從該文件中讀取安裝配置,這樣就避免了繁瑣的人機交互,實現(xiàn)無人值守的自動化安裝。
要使用 kickstart ,你必須:
1) 創(chuàng)建 kickstart 配置文件。
2) 部署kickstart配置文件,即將kickstart配置文件放置到安裝服務(wù)器上,并在安裝程序的kernel參數(shù)中指定kickstart配置文件的位置。
kickstart 配置文件是一個簡單的文本文件,包含一個安裝項目列表。每個項目對應(yīng)于一個安裝選擇,都用關(guān)鍵字標明。
有如下幾種方法生成kickstart配置文件:
- Red Hat提供了一個樣例文件。在Red Hat Linux 文檔光盤中 RH-DOCS 目錄里的 sample.ks 文件。你可以基于該樣例來創(chuàng)建你自己的配置kickstart文件。
- 每當(dāng)你安裝好一臺Red Hat Linux機器,Red Hat Linux 安裝程序都會創(chuàng)建一個 kickstart 配置文件,記錄你的真實安裝配置。如果你希望實現(xiàn)和某系統(tǒng)類似的安裝,可以基于該系統(tǒng)的kickstart配置文件來生成你自己的kickstart配置文件。
- Red Hat Linux提供了一個圖形化的kickstart配置工具。在任何一個安裝好的Red Hat Linux系統(tǒng)上運行該工具,就可以很容易地創(chuàng)建你自己的kickstart配置文件。kickstart配置工具命令為redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4)
- 閱讀kickstart配置文件的手冊。用任何一個文本編輯器都可以創(chuàng)建你自己的kickstart配置文件。
這里有一個kickstart配置文件樣例:
01 # Kickstart file automatically generated by anaconda. 02 03 install 04 nfs --server=192.168.138.1 --dir=/instsvr/i386/rhel4u2 05 lang en_US.UTF-8 06 langsupport --default=en_US.UTF-8 en_US.UTF-8 07 keyboard us 08 xconfig --card "VMWare" --videoram 16384 --hsync 31.5-37.9 --vsync 50-70 --resolution 800x600 --depth 16 09 network --device eth0 --bootproto DHCP 10 rootpw -iscrypted 11 firewall --disabled 12 selinux --enforcing 13 authconfig --enableshadow --enablemd5 14 timezone Asia/Shanghai 15 bootloader --location=mbr 16 # The following is the partition information you requested 17 # Note that any partitions you deleted are not expressed 18 # here so unless you clear all partitions first, this is 19 # not guaranteed to work 20 clearpart --all 21 part / --fstype ext2 --size=8000 22 part swap --size=1000 23 24 %packages 25 @ admin-tools 26 @ editors 27 @ emacs 28 @ text-internet 29 @ legacy-network-server 30 @ dialup 31 @ ftp-server 32 @ compat-arch-support 33 @ legacy-software-development 34 @ smb-server 35 @ base-x 36 @ kde-desktop 37 @ server-cfg 38 @ development-tools 39 kernel-smp 40 system-config-samba 41 rsh-server 42 grub 43 kernel-devel 44 kernel-smp-devel 45 e2fsprogs |
所有以"#"號開頭的都是注釋。
文件中的nfs --server=192.168.138.1 --dir=/instsvr/i386/rhel4u2選項告訴安裝程序:到服務(wù)器192.168.138.1的NFS共享目錄/instsvr/i386/rhel4u2下尋找安裝介質(zhì)。Red Hat Linux安裝程序足夠聰明,可以識別該目錄下應(yīng)該被讀取的ISO光盤鏡像文件名,所有這里你不需要指定ISO文件名。
關(guān)于kickstart配置文件支持的所有選項及其相信說明,請查閱參考資料3。
首先我們需要把kickstart配置文件放在安裝服務(wù)器上。我們把它放到/instsvr/ks目錄下。即該文件的NFS訪問路徑為:
nfs:192.168.138.1:/instsvr/ks/ks.cfg |
其次,我們需要讓安裝程序知道我們希望它用kickstart方式安裝,并告知它可以從哪里獲得kickstart配置文件。這可以通過給內(nèi)核添加一個參數(shù)"ks=kickstart配置文件路徑"來實現(xiàn)。我們只需對啟動服務(wù)器上的default文件做一些小修改就可以做到這點:
LABEL rhel4u2-i386 KERNEL vmlinuz-rhel4u2-i386 APPEND ks=nfs:192.168.138.1:/instsvr/ks/ks.cfg initrd=initrd-rhel4u2-i386.img ramdisk_size=8192 |
這樣在啟動安裝程序的時候,參數(shù)ks=nfs:192.168.138.1:/instsvr/ks/ks.cfg會被傳遞給它,告訴它使用這個文件作為kickstart配置文件來進行kickstart安裝。
![]() ![]() |
![]()
|
5. 步驟3:從網(wǎng)絡(luò)啟動機器以完成安裝
前面的配置工作完成后,下面我們就在待安裝機器上通過網(wǎng)絡(luò)以無人值守的方式來安裝Red Hat Enterprise Linux AS 4 Update 2。
1. 啟動待安裝機器,選擇從網(wǎng)卡啟動。具體方法因BIOS版本不同而異。圖2是從VMWare虛擬機上得到的選擇網(wǎng)絡(luò)啟動的屏幕截圖。
圖2 從BIOS選擇網(wǎng)絡(luò)啟動
2. 網(wǎng)卡中的PXE代碼會聯(lián)系DHCP服務(wù)器來獲取IP地址以及啟動鏡像,然后啟動鏡像被載入并運行,你可以看到你自己定義的一個Linux列表如圖3,選擇你需要安裝的系統(tǒng)版本。
圖3 網(wǎng)絡(luò)啟動后pxelinux.0的提示界面
3. 安裝程序內(nèi)核被啟動(圖4)。
圖4 安裝程序anaconda開始運行
4. 安裝程序會讀取kickstart配置文件開始無人值守安裝。安裝過程中它會根據(jù)kickstart配置文件中指定的安裝介質(zhì)地址,安裝指定的軟件包(圖5)。
圖5 安裝程序在安裝軟件包
5. 直到安裝結(jié)束(圖6),你都不需要做任何工作。
圖6 安裝成功完成
6. 安裝完成后,安裝程序會提示你重新啟動機器。重新啟動機器時切記要在BIOS里改成從硬盤啟動。如果仍然從光盤啟動機器,又會重復(fù)前面的自動安裝步驟。
![]() ![]() |
![]()
|
本文介紹了一種基于網(wǎng)絡(luò)(網(wǎng)絡(luò)啟動+網(wǎng)絡(luò)安裝)的無人值守Red Hat Linux安裝方法。在需要安裝大量機器的情況下,以及在需要提供自助安裝服務(wù)的情況下,該方法可以節(jié)約大量人力。
本文中的示例只涉及了PC平臺上的一種Red Hat Linux版本--RHEL AS 4。事實上,本文中的方法可以非常容易地推廣到其它Red Hat Linux版本和其它硬件平臺,如:
-
1. 其它Red Hat Linux版本
- Red Hat Enterprise Linux 3, 4 的所有edition (AS, ES, WS, Desktop)
- Red Hat Linux 9
- Fedora Core 5
-
2. 其它硬件平臺
- 64位Intel架構(gòu)及兼容架構(gòu)服務(wù)器(使用AMD64和EMT64處理器)
對其它Linux廠家的產(chǎn)品,只要利用上它們的無人值守安裝功能,也可以制造出類似的全自動安裝方案。例如,Novell SuSE Linux就提供了AutoYast功能來實現(xiàn)無人值守安裝。關(guān)于使用AutoYast的具體操作,請參閱參考資料4。
- PXE (Pre-boot Execution Environment) 是由Intel設(shè)計的從網(wǎng)絡(luò)啟動Intel架構(gòu)計算機的協(xié)議。IBM開發(fā)者園地(中文)中有一篇文章相信介紹了PXE的原理。 http://www-128.ibm.com/developerworks/cn/linux/l-tip-prompt/l-pex/
- IBM開發(fā)者園地(中文)中有一篇文章詳細介紹了在IBM pSeries服務(wù)器上通過網(wǎng)絡(luò)安裝Linux的過程。從中讀者可以看到很多設(shè)置安裝服務(wù)器的細節(jié),如安裝介質(zhì)目錄該如何組織,各種網(wǎng)絡(luò)訪問協(xié)議都支持哪些目錄組織。 http://www-128.ibm.com/developerworks/cn/linux/es-linux-pservers/
- 本文中的不少操作用到了RHEL 3的一些系統(tǒng)管理命令。讀者可以參考 RHEL 3 reference guide 來熟悉這些操作的使用。 http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/ref-guide/
- SuSE Linux提供了AutoYast功能來實現(xiàn)無人值守安裝。具體操作可以參考OpenSUSE的Yast Autoinstallation文檔 http://en.opensuse.org/YaST_Autoinstallation
![]() |
||
|
![]() |
馮鈺,是IBM 中國軟件開發(fā)實驗室(CSDL)的軟件工程師。他當(dāng)前從事IBM WebSphere Information Integrator 產(chǎn)品的測試工作。他對GNU/Linux系統(tǒng),oracle,sybase,Informix,DB2數(shù)據(jù)庫管理很感興趣,并具有三年的Linux系統(tǒng)管理經(jīng)驗, 您可以通過 tomfeng@cn.ibm.com 與他聯(lián)系。 |
![]() |
||
|
![]() |
劉亞,是IBM 中國軟件開發(fā)實驗室(CSDL)的軟件工程師。他當(dāng)前從事IBM WebSphere Information Integrator 產(chǎn)品的測試工作。他對GNU/Linux系統(tǒng)很感興趣,并具有四年的Linux 系統(tǒng)管理經(jīng)驗。您可以通過 liuya@cn.ibm.com 與他聯(lián)系。 |
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
