Linux PXE網絡安裝筆記

1. 安裝原理:
        客戶端PXE網卡啓動--DHCP服務器--得到IP--從TFTP目錄上下載pxelinux.0、--根據配置文件指定的vmlinuz、initrd--啓動系統內核--經過內核指定地點去下載ks.cfg文件--跟據ks.cfg去(HTTP、FTP、NFS)服務器下載RPM包並安裝系統----完成安裝。

2. 具體實現方法:
一、 安裝一臺REDHAT AS 3.O SERVER , 徹底安裝。(省得之後要用到一些東東再費時間安裝,以地址 192.168.1.1 爲例)。

二、 首先配製HTTP服務器(固然也能夠是NFS、FTP)。配好後,在HTTP的DocumentRoot目錄下(通常爲/var/www/html)建一個rhel目錄,用於放RedHat的安裝文件。把RedHat第一張安裝盤的RedHat目錄及下面的內容所有考到這個目錄下,把第2、第三張盤的RPMS目錄下的rpm包考到rhel/RedHat/RPMS目錄下,完成安裝文件的考貝。用service httpd restart開啓HTTP服務。用 lynx http://192.168.1.1/rhel 查看配置是否正確。

三、 使用 kickstart ,系統管理員能夠建立單個文件,該文件包括對典型 Red Hat Linux 安裝中所詢問的問題的回答。用redhat-config-kickstart命令作一個ks.cfg文件,注意在「安裝方法」選項中 選HTTP,在「HTTP服務器:」中打入HTTP服務器的IP地址192.168.1.1 ,在「HTTP目錄:」中打入rhel,其它的我就很少說了。作好後把這個ks.cfg文件考到HTTP服務器的DocumentRoot/目錄下。

四、 在一臺機器上作一下測試(注意:由於是自動安裝,這臺機器的上的數據可能所有被格式化)。用光盤啓動機器,在boot:提示符下打入:linux ks=http://192.168.1.1/ks.cfg,看一下是否是能實現自動安裝.若是能夠繼續如下步驟。

五、 配製DHCP、TFTP、和PXElinux。(固然這些服務能夠和HTTP、NFS、FTP放在一臺服器上)
1) 配置TFTP服務器,用chkconfig tftp on 打開xinetd代理的tftp服務。 用 service xinetd restart 重起服務。
2) 作一臺DHCP服務器,這是關鍵。下面是個人dhcp.conf文件:
ddns-update-style interim ;
ignore client-updates ;
allow booting ;
allow bootp ;
subnet 192.168.1.0 netmask 255.255.255.0
{
default-lease-time 216000 ;
max-lease-time 432000 ;
option routers 192.168.1.1 ;
option domain-name "gdlc.org";
option subnet-mask 255.255.255.0 ;
option domain-name-servers 202.96.128.68 ;
range dynamic-bootp 192.168.1.100 192.168.1.200 ;
filename"/linux-install/pxelinux.0" ;
}
用service dhcpd restart 開啓DHCP服務。
3) 配製PEXlinux。要遠程啓動機器,就必需要有PXElinux這個由syslinux、isolinux派生出來的,支持PXE的bootloader,它能夠實現遠程經過PEX啓動一臺機器。把/usr/lib/syslinux/pxelinux.0考到/tftpboot/linux-install目錄下,(若是此目錄下有此文件就沒必要再考了)把RedHat第一張安裝光盤上p_w_picpaths/pxeboot目錄下的initr.img和vmlinux也考到/tftpboot/linux-install目錄下。在/tftpboot/linux-install/pxelinux.cfg目錄用於放syslinux的配製文件。Sysconfig的配製文件有現成的可用,在RedHat第一張安裝光盤isolinux/下有一個isolinux.cfg文件,把它考成/tftpboot/ linux-install/pxelinux.cfg/default文件,把isolinux/*.msg考到/tftpboot/linux-install下.對default(也就是isolinux.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
F7 snake.msg
label linux
kernel vmlinuz
append initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label expert
kernel vmlinuz
append expert initrd=initrd.img
label ks
kernel vmlinuz
append ks initrd=initrd.img
label lowres
kernel vmlinuz
append initrd=initrd.img lowres
label autoinstall
kernel vmlinuz
append ks=http://192.168.1.1/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=16384 nofb
label redflag
kernel rfvmlinuz
append initrd=rfinitrd.img
相關說明:
        這個Default 文件實際上就是ISOLINUX 的配置文件, 很容易看懂, 就是告訴啓動後使用那個內核引導,須要添加什麼參數,粗體部分是根據個人須要添加的。
        當引導至BOOT: 時鍵入 autoinstall 內核引導時就會加載 http://192.168.1.1/ks.cfg這個安裝配置文件, 而後根據這個配置文件指導LINUX接下來的安裝。同時在ks.cfg這個配置文件裏指定了安裝介質的方式,能夠是 HTTP、FTP、NFS 的一種。有關配置文件的片段以下:
#Use Ftp installation
#url --url ftp://gdlc:123456@192.168.1.1/rhel
        若是選擇FTP 方式安裝就須要再配置 VSFTPD服務.在配置KICKSTART時要指定FTP服務器的地址及其用戶名和密碼,且FTP目錄路徑要用絕對路徑;
#Use Web installation
url --url http://192.168.1.1/rhel
#Use Nfs installation
#nfs --server=192.168.1.1 --dir=/rhel
        若是選擇NFS方式安裝須要配置NFS服務 .在這裏就再也不哆嗦了。注意NFS目錄路徑也要用絕對路徑;
        在以上三中方式安裝過程當中用戶是感受不到差異的,安裝速度均比用本地光驅安裝快。當你鍵入autoinstall 後就能夠去喝茶了,等你回來時你的系統已經所有裝好。
        當引導至BOOT: 時鍵入 redflag內核引導時就會加載rfvmlinuz和rfinitrd.img ,這兩個文件是從RedFlag安裝光盤裏拷貝過來該名的,用它來引導RedFlag DeskToplinux安裝界面, 其餘安裝過程和上面的都差很少,只是RedFlag 不支持KICKSTART ,且只有在NFS方式安裝是能夠進行圖形化安裝,其餘方式安裝過程都是文本的。因此中仍是交互安裝過程。
         其餘版本的LINUX 若是是以RPM 安裝包發行的估計均可以用一樣的方法進行安裝,因此有興趣的話你們能夠試試。
        本文簡要地介紹了使用 Red Hat LINUX 的 kickstart 及網絡安裝功能方便快捷地升級己有 LINUX 系統,文中的例子是從 Red Hat 7.2 遠程升級到 Red Hat 9.0。   自從 5.2 版開始, Red Hat LINUX 便 增長了一個稱爲 kickstart 的功能,其主要是爲了減小安裝過程當中須要交互式 (interactive)的系統參數輸入,提升安裝效率。將其運用於自動安裝 LINUX,特別是須要在短期迅速安裝至成百臺 LINUX 工做站這種特殊場合尤其適用,Stanford University 的 Menlo Park 已經有精彩的文章介紹,在此再也不累述[1]。   1.升級前系統檢查   在開始升級系統以前,有一些容易忽視的問題容易中斷 kickstart 過程,這些問題通常是系統配置達不到安裝最低要求,因此最好能在自動升級以前有實驗條件先進行充分的測試再實施。 Red Hat LINUX 系統發展至今,已經不是低得 386 均可以跑得很流暢的了(Red Hat 9 已經不能在 586 如下的機器上運行),因此在升級以前有必要對系統進行充分的檢查,主要包括如下方面:   存儲空間是否足夠。Red Hat 9 最少須要 32M 的內存和 472M 的硬盤,內存通常是不會成問題的,可是我未能在一個 500M 硬盤上裝好系統,固然如今你們的硬盤通常仍是比較大,均可以進行徹底安裝了。LINUX 的系統文件主要集中於 /usr 下,/ 下面也有一部分,通常不安裝 X 系統和大型軟件的狀況下,/usr 使用 1G 空間、/ 使用 500M 空間均可以工做得很好了。個人系統從 7.2 升級到 9.0 系統,/usr 和 / 的使用狀況大約較升級前增長了 30% 的樣子,因此若是你們的 /usr 和/使用率不是過高的話,磁盤空間 的限制通常是不會有什麼問題的。   交換分區空間是否足夠。Red Hat 9 與 7.2 的一個不易發現的區別便在此,7.2 系統是可使用少於兩倍物理內存容量的交換分區,兩倍或者多於兩倍物理內存的交換分區只是建議大小;而 Red Hat 9 則必須使用兩倍或者多於兩倍物理內存大小的交換分區,因此若是你的LINUX系統只有少於兩倍的交換分區,那就只有再劃分一個交換分區或者增長一個交換文件,或者撥下你的內存讓系統交換分區大於兩倍物理內存,我建議使用加一個交換分區的辦法,增長交換文件還沒法在 kickstart 中實現,至於撥下內存,遠程升級就根本沒有辦法撥下內存了。 其餘雜項。系統在自動升級過程當中會檢測一系列的硬件,若是選擇圖形界面安裝,可是沒有鼠標,系統則會提示使用文本方式安裝;或者只有 32M 內存則系統也不能進行圖形界面安裝,這些均可以在自動安裝配置文件裏進行修改以免其發生,可是記下系統的全部硬件配置製成一個清單會對製做自動配置文件有較大的幫助。   2.如何啓動安裝程序   首先從 Red Hat LINUX 的啓動安裝程序開始。從 Red Hat LINUX 的官方安裝裝手冊上咱們能夠看到主要的幾種啓動方式:CDROM、軟驅及從 dos 環境運行光碟上的 dosutilsautoboot.bat 文件三種方式,對於咱們來講這仍是不夠的,咱們的 LINUX 工做站是沒有軟驅和光驅的,固然更加不會有 dos。經過分析各發行版第一張光盤的 /p_w_picpaths目錄下的 boot*.img 文件咱們發現,這些啓動鏡像文件其實只有兩個主要的文件:vmlinuz 內核和 initrd.img,initrd.img是一個壓縮的最小文件系統[2]。將這兩個文件提取到己有的 LINUX 系統 /boot 目錄下,在系統的 bootloader(通常是 LILO 或者 GRUB)配置文件中加入相應的配置行便可啓動安裝程序。以 Red Hat 7.2 和 GRUB 爲例(使用 Red Hat 8.0 的網絡啓動鏡像文件):   [root@client mnt]# mount -o loop -o ro /mnt/nfs/psyche/cd1/p_w_picpaths/bootnet.img bootnet   [root@client mnt]# cd bootnet/   [root@client bootnet]# ls   boot.msg   initrd.img options.msg rescue.msg splash.lss  syslinux.png   general.msg ldlinux.sys param.msg  snake.msg  syslinux.cfg vmlinuz   [root@client bootnet]# cp vmlinuz /boot/vmlinuz8   [root@client bootnet]# cp initrd.img /boot/initrd8   [root@client bootnet]# vi /boot/grub/menu.lst   添加以下三行:     title Upgrade to Psyche via NFS     kernel /boot/vmlinuz8 ro     initrd /boot/initrd8   注意:以上是沒有 /boot 分區的配置,有 /boot 分區則不須要前面的 /boot,見 GRUB 配置文件中 NOTICE 部分。   從新啓動後便可選擇網絡升級,和用 bootnet 軟盤引導系統的效果是同樣的。在這裏咱們將使用 Red Hat 9 的另一個啓動文件,這也是最近纔在 Red Hat 發行版中出現的 boot.iso。將 Red Hat 9 發行版第一張光盤的 ISO 鏡像文件裝載後,咱們發現其下的 p_w_picpaths 目錄中較 7 系列發行版多了一個 boot.iso 文件(8.0 第一張光碟根目錄下也有相似目錄),將其裝載後發現其中包含一個比較大的內核和 initrd 文件,該initrd 包含了安裝系統時常見硬件的驅動,我使用該文件啓動時能自動識別出 PM133 主板的顯卡及比較少見的adaptec ANA-6911TX 網卡(starfire.o),因此強烈推薦使用 boot.iso 自動升級,能夠省卻驅動的麻煩。值得一提的是 Red Hat 9 如今已經不在 boot.img 中自帶網卡驅動了,而 Red Hat 8 在 bootnet.img 中帶了一些常見網卡的驅動的(intel 55X系列、tulip、8139等),你們有興趣能夠參考[2]中提到的方法解壓一下 bootnet.img 中的 initrd.img 文件就能夠在lib目錄中看到這些驅動模塊文件了。 3.從哪裏安裝   升級系統固然須要新系統的發行版源文件,發行版形式能夠多樣化,便可以是光碟,也能夠是光碟鏡像文件(ISO格式),同時也能夠是光碟文件的拷貝集。在 Red Hat 9 中,可供選擇的安裝模式有本地 CDROM、本地硬盤、NFS 鏡像、FTP、HTTP。從光碟安裝具備最好的兼容性和易操做性,適合我的安裝,大批量和遠程升級則不適用;本地硬盤是一種比較好的方式,速度快,並且也不須要頻繁更換光碟,可是也不適合大批量安裝,每臺工做站均保存一份發行版鏡像拷貝實在是很浪費存儲空間,並且要命的是個人那臺機器已經沒有空間能夠放下這麼巨大的文件了;NFS 則是一種比較成熟的方式,經過 NFS 方式安裝系統只須要將 ISO 格式的光碟鏡像文件共享便可,不像 FTP 和 HTTP 方式須要考慮目錄樹結構[2],並且 NFS 方式能夠選擇圖形界面安裝(FTP 和 HTTP 方式僅能使用文本界面),速度相對 FTP 和 HTTP 方式更快,因此網絡安裝建議使用 NFS 方式。創建 NFS安裝鏡像服務器的辦法很簡單,僅需經過 NFS 將發行版光碟鏡像文件共享便可。   [root@server root]$ cat /etc/exports /data/shrike 192.168.0.42/31(ro)   [root@server shrike]# ls   ks.cfg shrike-i386-disc1.iso shrike-i386-disc2.iso shrike-i386-disc3.iso   4.製做 kickstart   接下來天然就是製做 kickstart 文件了,kickstart 技術從最先推出至今已經更新了許屢次,配置的語法也是不盡相同,後來的版本也沒有作到徹底兼容舊有版本語法,不能說這也是一個遺憾,在此我強烈建議使用 Red Hat 9 官方文檔[3]來進行 kickstart 的配置,這樣才能作到萬無一失。配置文件主要內容以下:   1)ks.cfg 文件位置。很明顯安裝程序須要讀取到 ks 配置文件才能進行自動安裝,ks 配置文件能夠有如下幾種方式讀入:啓動軟盤、啓動光盤、硬盤、網絡。   軟盤讀取 ks 配置文件相對較簡單,將 ks.cfg 置於軟盤根目錄下便可,啓動後輸入 linux ks=floppy 便可開始 ks 安裝;   光盤讀取 ks 配置文件須要在製做啓動光盤時加入 ks.cfg 配置文件至根目錄下,啓動後輸入 linux ks=cdrom:/ks.cfg 便可開始 ks 安裝 ;   硬盤讀取 ks 配置文件通常是從光驅引導後,再讀硬盤中的 ks 配置文件(此時可能沒有軟驅和網絡支持),啓動後輸入 linux ks=hd:fd0:/ks.cfg,限制條件是該硬盤分區必須是 VFAT 或者 EXT2; 網絡讀取 ks 配置文件則用得很是多了,一般用到的是 NFS 方式和 HTTP 方式,格式分別是 ks=nfs:server:/path 和 ks=http://< server> /< path> 。須要注意的是網絡方式讀取 ks.cfg 文件時,局域網能自動分配 IP,由於在內核未取得 ks.cfg 配置文件以前,系統是不知道如何配置 IP 地址的,這時就要先經過 DHCP 得到一個 IP 地址,經過網絡讀取 ks.cfg 配置文件。在具有網絡條件的環境下,我強烈推薦使用網絡方式提供 ks.cfg 配置文件,使用 DHCP 配合 ks 的參數置空功能能夠爲大量的工做站配置不一樣的 kickstart 配置文件[1][3],自動安裝功能各異的系統。我是使用 NFS 方式讀取 ks.cfg 文件。   [root@server shrike]# ls   ks.cfg shrike-i386-disc1.iso shrike-i386-disc2.iso shrike-i386-disc3.iso   在待升級系統 GRUB 配置文件中加入 ks 配置語句:   kernel /boot/vmlinuz9 ro ks=nfs:192.168.0.19:/data/shrike/ks.cfg   2)通過測試,升級系統所須要的 ks 配置參數相對較少,具體配置參數就再也不累述了, UNIX 的風格就是 KISS。以個人配置爲例:   reboot   upgrade   lang en_US   keyboard us   mouse none   text   skipx   network --device=eth0 --bootproto=static --ip=192.168.0.42 --netmask=255.255.255.0 --gateway=192.168.0.253 --nameserver=192.168.0.4 --hostname=huter.xtu.edu.cn   nfs --server=192.168.0.19 --dir=/data/shrike   zerombr yes   bootloader --location=mbr   %post   chkconfig --level 345 sshd on   3)檢查一切配置無誤就能夠開始遠程升級系統了!重啓系統後,使用 ping 命令一直 ping 該升級系統的 IP,如無心外則大約半小時之後即可以看到該主機不可達,而後又恢復正常,使用 SSH 登錄該主機,再作一些系統參數調整(特別是 APACHE 和 PHP 的調整),升級就大功告成了! 4)失敗總結。事情總不是一路順風的,出錯在所不免,因此你們在實際操做以前仍是要多加測試,纔可一舉成功。常見的錯誤有:   系統內存、硬盤分區、交換機分區空間不夠,致使升級沒法完成,解決辦法是在升級前要留有充分的空間,若是硬盤空間不夠,則刪除部分不用的軟件包,在此我向你們推薦一個小腳本[4],是從水木清華 BBS 上得到,能解決 Red Hat Linux 刪除 RPM 軟件包時的依賴關係。   鼠標配置。鼠標配置語句通常能夠寫爲 mouse none,也能夠不接參數自動檢測;另外若是沒有鼠標是不能使用圖形模式安裝的,因此仍是使用 text 配置命令明確指定使用文本方式安裝,反正安裝過程咱們也不會看着顯示器,是吧?   配置語法錯誤。kickstart 一直在不斷髮展,若是語法錯則會沒法完成安裝,常見錯誤有 network 配置語法,之前的版本配置語法是 network --static --ip 198.168.254.253......而最新的 Red Hat 9 配置語法是 network --device=eth0 --bootproto=static --ip=192.168.0.42......,因此對 ks.cfg 配置文件的檢查必定要細心。   ks.cfg 配置文件儘量寫得精簡,能夠省卻的就省掉,特別是升級時不會對 ks.cfg 中的軟件包配置段進行處理,因此寫了也無益,反倒有可能讓安裝程序讀取到錯誤的配置行而中止自動安裝。   5.總結   遠程自動升級只是對 kickstart 應用的一個自我挑戰,實際應用場合可能不會太多,可是在大規模網絡安裝中,要作到一打開工做站就能徹底自動安裝,必定要將 DHCP 和 kickstart 密切結合才能達到事半功倍的效果,試想裝兩百臺工做站的時候每一個 kickstart 文件出錯三次,你就得在每臺機器上操做三次,而一個完美的 kickstart 文件甚至可讓您連顯示器都不接就徹底安裝好系統,這是一件多少愉快的事情!
相關文章
相關標籤/搜索