歡迎您光臨本站 註冊首頁

基於網路的 Red Hat 無人值守安裝

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
本文介紹了 PC 平台上的一種快速 Red Hat Linux 安裝方案.它具有很高的自動化程度--用戶只需手工啟動機器並選擇從網路啟動,就可以完成整個安裝過程.在需要批量安裝大量 Red Hat Linux 系統和需要技術人員 Red Hat Linux 安裝支持的情況下,這種方案可以節省大量的時間.而且由於不需要額外的軟體和光碟機和軟碟機等硬體設備,在成本上也有很大優勢.所有安裝 Red Hat Linux 的開發/測試人員,和 IT 支持人員都能夠從本文中獲益.讀者在閱讀本文前需要有 Red Hat Linux 的安裝經驗.

1. 引言

一般情況下,安裝Linux需要從光碟機用安裝光碟啟動機器,然後進入互動式安裝界面輸入安裝所需的各種配置完成安裝.在下面這些情況下,這種安裝方式就會暴露出缺點:

1) 機器無光碟機、光碟機壞了(這種情況在現實中頻繁發生) 或光碟壞了,無法從光碟機安裝Linux.

2) 軟體測試人員在搭建測試環境時,需要安裝大量的Red Hat Linux測試機器時.這時採用手工安裝方式逐台機器安裝效率會很低.

3) 對IT支持人員來說,指導一個Red Hat Linux生手安裝Red Hat Linux系統會耗費很多時間.日復一日重複這種工作會浪費寶貴的人力資源.

從降低商業成本和提高安裝系統效率的角度出發,本文向大家介紹一種方案--基於網路的Red Hat無人值守安裝.該方案將很多安裝準備工作在伺服器上一次性完成,這樣在客戶機上安裝時就不需要為每個客戶機重複這些工作,節省了時間和成本,提高了效率.

在一次性的環境配置工作完畢后,該套方案能達到非常高的自動化程度:用戶只需要執行很少的手工步驟即可完成安裝.安裝過程中的手工步驟和自動步驟如下:

1) 手工步驟:開機,選擇從網路啟動.如果你的方案配置得比較負責複雜靈活,也許還需要你選擇安裝何種系統.總之,手工步驟非常少.

2) 自動化步驟:剩餘步驟,包括系統配置,硬碟分區,和程序包安裝,將全部自動完成.

2. 方案介紹

這種方案需要設置一個啟動伺服器和一個安裝伺服器(可以配置在同一台物理機上),然後通過網路啟動存放在啟動伺服器上的安裝程序.安裝程序會自動訪問存放在安裝伺服器上的安裝配置文件和安裝介質來完成安裝.

涉及到的技術

該方案主要應用了三種技術:

1) 在PC上從網路啟動Red Hat Linux安裝程序的PXE協議

2) Red Hat Linux安裝程序提供的網路安裝功能(即指通過網路訪問安裝介質)

3) Red Hat Linux 安裝程序提供的無人值守安裝功能(Red Hat稱為kickstart)

技術1)和2)在參考資料1和2里已有部分介紹.本文將重點描述參考資料中未涉及部分和無人值守安裝功能.

軟硬體需求

要按本文介紹的方法完成自動化安裝,你需要如下軟硬體資源:

  • 一台PC機器作為啟動和安裝伺服器(其它架構機器也可以)
  • 一台待安裝的PC機器,它的網卡必須帶有PXE支持
  • 一個建好的區域網,上述兩台機器已經連接入同一子網
  • 待安裝的Red Hat Linux安裝介質

方案原理示意圖

圖1是網路安裝環境的一個原理示意圖.整個安裝環境由一個區域網,和連接到該區域網的三台機器組成:啟動伺服器(Boot Server),安裝伺服器(Installation Server),和待安裝機器(Client).其中啟動伺服器和安裝伺服器可以部署在同一台物理機上.表1列出了對這些機器的軟硬體要求,和其上負載的服務與數據.


圖1 網路安裝原理示意圖


表1 網路安裝環境里各機器上的軟硬體配置

該方案的實現步驟

1) 配置啟動伺服器

2) 配置安裝伺服器

3) 從網路啟動機器以完成安裝

步驟1)和2)只需做一次即可.對每一台需安裝Red Hat Linux的機器,都需要在啟動伺服器和安裝伺服器中部署相應的數據,並執行一次步驟3).

下面將帶領您逐一執行這些步驟.為了簡單,我將用示例來說明如何在一台安裝了 Red Hat Enterprise Linux AS 3 Update 5 的 PC 機上設置啟動伺服器和安裝伺服器,並在一台PC上安裝 Red Hat Enterprise Linux AS 4 Update 2.

3. 步驟1:配置啟動伺服器

啟動伺服器的目的是幫助在待安裝機器上啟動Red Hat Linux 安裝程序.啟動伺服器上需要搭建一個DHCP 伺服器和一個TFTP 伺服器.前者是為了給待安裝機器分配IP地址,後者則是提供了一個讓待安裝機器下載啟動鏡像的途徑.

配置DHCP 伺服器

1) 安裝DHCP伺服器包(RPM包名:dhcpd).

2) 編輯DHCP伺服器配置文件 /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; }   }         


在這個例子中,定義的子網是 192.168.138.0/255.255.255.0.主機定義項testserver指出 IP 地址 192.168.138.30 將分配給乙太網卡00:0C:29:70:24:5B(待安裝機器),文件 pxelinux.0(在 TFTP 伺服器的根目錄中)將作為啟動映像被網卡ROM里的PXE客戶端載入內存並運行.

每增加一台需安裝的機器,我們需在dhcpd.conf中增加一條host條目.

3) 給啟動伺服器配置一個IP,這個IP必須在DHCP伺服器定義的子網內.

這裡我們使用192.168.138.1.關於如何為Red Hat Linux系統配置IP地址,請查閱參考資料3.

4) 啟動DHCP服務.


[root@bsvr] #service dhcpd restart         

配置TFTP伺服器

1) 安裝TFTP伺服器包(RPM包名:tftpd).

2) 編輯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       disable         = no   }         

這裡選定了/tftpboot為TFTP 伺服器的根目錄位置.

3) 將Linux安裝程序的內核/根文件系統文件複製到 TFTP 伺服器的根目錄.對於每一個要被安裝的Red Hat Linux版本,都需要執行一次該操作.

Red Hat Linux第一張安裝光碟/isolinux目錄下會包含Linux安裝程序的內核/根文件系統文件.下面一段命令將這些文件複製到TFTP伺服器的根目錄下,並按照版本重新命名.


[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複製到TFTP伺服器根目錄.

啟動鏡像pxelinux.0可以在syslinux安裝包里獲得.安裝好syslinux安裝包后,將pxelinux.0複製到TFTP伺服器根目錄.


[root@bsvr]#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/         


5) 編輯pxelinux.0的配置文件,以使pxelinux可以正確載入Red Hat Linux安裝程序.對於每一個要被安裝的Red Hat Linux版本,都需要執行一次該操作.

啟動鏡像pxelinux.0文件在執行過程中,會讀取配置文件以確定它應該載入什麼Linux內核文件來運行.所有的配置文件都放在啟動伺服器的 /tftpboot/pxelinux.cfg/目錄下.pxelinux.0根據一定的規則來搜索合適的配置文件名.舉例來說,對於前面為待安裝機器分配的IP地址192.168.138.30(十六進位表示為C0A88A1E),pxelinux.0會按如下次序搜索配置文件:


C0A88A1E > C0A88A1 > … > C0 > C > default         

就是說,如果C0A88A1E文件存在,它就是pxelinux.0將載入的配置文件.否則,繼續往下找.如果C0A88A1文件存在,它就是 pxelinux.0將載入的配置文件.如果前面的以C開頭的文件都不存在,那麼pxelinux.0將試圖從文件default中讀取配置.對於一台需要支持很多安裝機器的安裝伺服器來說,將配置寫在與IP地址對應的文件里很不靈活.把所有配置都集中在default文件中是個不錯的主意,可以減輕配置文件維護負擔.

可以將能想到的Red Hat Linux版本的配置都寫在default文件里,以便同時支持多種Red Hat Linux版本,如下所示(對於具體某個 Red Hat Linux版本,對應的行該如何寫,可以參考它安裝盤裡的配置文件 /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選項來實現.在上面的樣例中,我們將所有備選Red Hat Linux版本列在文件pxelinux.cfg/list中,它的內容會被pxelinux.0顯示出來.

在我們的例子中,/tftpboot/pxelinux.cfg/list文件內容如下:


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服務.


[root@bsvr]#service xinetd  restart         

4. 步驟2:配置安裝伺服器

安裝伺服器在安裝期間提供對 Linux 安裝介質和無人值守安裝配置文件的訪問.安裝介質存儲在伺服器上的一個目錄中,可以使用各種網路協議訪問它,比如 HTTP,FTP,和NFS.使用NFS協議,Red Hat Linux安裝程序可以支持多種安裝介質目錄結構,尤其是支持ISO光碟鏡像文件.這裡我們選擇使用NFS協議來訪問安裝介質.

配置NFS伺服器

1) 準備ISO安裝介質.將Red Hat Linux安裝介質的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伺服器配置文件 /etc/exports,以允許其它機器通過NFS訪問目錄/instsrv./etc/exports 文件內容如下:


/instsvr   *(ro,no_root_squash,sync)         

其中:

  • * 表示任何IP地址都可以訪問該目錄.為了安全的考慮,也可以指定具體的IP地址.
  • ro 表示遠程機器對該目錄只有讀許可權.
  • 其它選項請參考NFS手冊.

3) 重新啟動NFS服務以使新配置生效


[root@bsvr]# service nfs restart         

4) 檢測目錄/instsrv是否已被正確共享


[root@bsvr]#showmount -e localhost   Export list for localhost:   /instsrv *         

這樣,我們就設置好了一個安裝伺服器.很簡單吧!

配置kickstart安裝

自從 5.2 版開始, Red Hat Linux 開始支持一個稱為 kickstart 的功能,其主要目的是為了減少安裝過程中的人機交互,提高安裝效率.使用這種方法,只需事先定義好一個配置文件(通常存放在安裝伺服器上),並讓安裝程序知道該配置文件的位置,在安裝過程中安裝程序就可以自己從該文件中讀取安裝配置,這樣就避免了繁瑣的人機交互,實現無人值守的自動化安裝.

要使用 kickstart ,你必須:

1) 創建 kickstart 配置文件.

2) 部署kickstart配置文件,即將kickstart配置文件放置到安裝伺服器上,並在安裝程序的kernel參數中指定kickstart配置文件的位置.

創建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配置文件.

這裡有一個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選項告訴安裝程序:到伺服器192.168.138.1的NFS共享目錄 /instsvr/i386/rhel4u2下尋找安裝介質.Red Hat Linux安裝程序足夠聰明,可以識別該目錄下應該被讀取的ISO光碟鏡像文件名,所有這裡你不需要指定ISO文件名.

關於kickstart配置文件支持的所有選項及其相信說明,請查閱參考資料3.

部署kickstart配置文件

我們需要把kickstart配置文件放在安裝伺服器上.我們把它放到/instsvr/ks目錄下.即該文件的NFS訪問路徑為:


nfs:192.168.138.1:/instsvr/ks/ks.cfg         

其次,我們需要讓安裝程序知道我們希望它用kickstart方式安裝,並告知它可以從哪裡獲得kickstart配置文件.這可以通過給內核添加一個參數"ks=kickstart配置文件路徑"來實現.我們只需對啟動伺服器上的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         

這樣在啟動安裝程序的時候,參數ks=nfs:192.168.138.1:/instsvr/ks/ks.cfg會被傳遞給它,告訴它使用這個文件作為kickstart配置文件來進行kickstart安裝.

5. 步驟3:從網路啟動機器以完成安裝

前面的配置工作完成後,下面我們就在待安裝機器上通過網路以無人值守的方式來安裝Red Hat Enterprise Linux AS 4 Update 2.

1. 啟動待安裝機器,選擇從網卡啟動.具體方法因BIOS版本不同而異.圖2是從VMWare虛擬機上得到的選擇網路啟動的屏幕截圖.


圖2 從BIOS選擇網路啟動

2. 網卡中的PXE代碼會聯繫DHCP伺服器來獲取IP地址以及啟動鏡像,然後啟動鏡像被載入並運行,你可以看到你自己定義的一個Linux列表如圖3,選擇你需要安裝的系統版本.


圖3 網路啟動后pxelinux.0的提示界面


3. 安裝程序內核被啟動(圖4).


圖4 安裝程序anaconda開始運行

4. 安裝程序會讀取kickstart配置文件開始無人值守安裝.安裝過程中它會根據kickstart配置文件中指定的安裝介質地址,安裝指定的軟體包(圖5).


圖5 安裝程序在安裝軟體包

5. 直到安裝結束(圖6),你都不需要做任何工作.


圖6 安裝成功完成

6. 安裝完成後,安裝程序會提示你重新啟動機器.重新啟動機器時切記要在BIOS里改成從硬碟啟動.如果仍然從光碟啟動機器,又會重複前面的自動安裝步驟.

6. 總結

本文介紹了一種基於網路(網路啟動+網路安裝)的無人值守Red Hat Linux安裝方法.在需要安裝大量機器的情況下,以及在需要提供自助安裝服務的情況下,該方法可以節約大量人力.

本文中的示例只涉及了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架構及兼容架構伺服器(使用AMD64和EMT64處理器)

對其它Linux廠家的產品,只要利用上它們的無人值守安裝功能,也可以製造出類似的全自動安裝方案.例如,Novell SuSE Linux就提供了AutoYast功能來實現無人值守安裝.關於使用AutoYast的具體操作,請參閱參考資料4.


[火星人 ] 基於網路的 Red Hat 無人值守安裝已經有741次圍觀

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