文章目錄
CentOS下配置PXE+Kickstart無人值守安裝(Howto install CentOS through PXE+KickStart)
環境:CentOS 5.1 最小安裝。
理論
來源:http://coolerfeng.blog.51cto.com/133059/48801
什麼是PXE
PXE(Pre-boot Execution Environment)是由Intel設計的協議,它可以使電腦通過網路啟動。協議分為client和server兩端,PXE client在網卡的ROM中,當電腦引導時,BIOS把PXE client調入記憶體執行,並顯示出命令菜單,經使用者選擇後,PXE client將放置在遠端的作業系統通過網路下載到本地運行。
PXE協議的成功運行需要解決以下兩個問題:
1. 既然是通過網路傳輸,那麼電腦在啟動時,它的IP地址由誰來配置;
2. 通過什麼協議下載Linux核心和根檔案系統
對於第一個問題,可以通過DHCP Server解決,由DHCP server來給PXE client分配一個IP地址,DHCP Server是用來給DHCP Client動態分配IP地址的協議,不過由於這裡是給PXE Client分配IP地址,所以在配置DHCP Server時,需要增加相應的PXE特有配置。
至於第二個問題,在PXE client所在的ROM中,已經存在了TFTP Client。PXE Client使用TFTP Client,通過TFTP協議到TFTP Server上下載所需的檔案。
這樣,PXE協議啟動並執行條件就具備了,下面我們就來看看PXE協議的工作過程。
工作過程
在中,PXE client是需要安裝Linux的電腦,TFTP Server和DHCP Server運行在另外一台Linux Server上。Bootstrap檔案、設定檔、Linux核心以及Linux根檔案系統都放置在Linux Server上TFTP伺服器的根目錄下。
PXE client在工作過程中,需要三個二進位檔案:bootstrap、Linux 核心和Linux根檔案系統。Bootstrap檔案是可執行程式,它向使用者提供簡單的控制介面,並根據使用者的選擇,下載合適的Linux核心以及Linux根檔案系統。
實踐
要實現一個PXE+Kickstart無人值守安裝,從上面的理論解說中,我們知道,至少需要DHCP與TFTP服務來完成引導。要進行網路安裝的 話,我們則需要NFS或者HTTP或者FTP服務。這裡,我們選擇NFS。TFTP要工作的話,我們又要安裝xinetd。加上要產生bootstrap 檔案要安裝的syslinux。我們要安裝的軟體包一共如下:
- dhcp
- tftp-server
- xinetd
- syslinux
- nfs-utils
DCHP
安裝dhcp:
yum install -y dhcp
安裝完成之後,把dhcp.conf.sample檔案拷貝到/etc下面
cp /usr/share/doc/dhcp-3.0.5/dhcp.conf-sample /etc/dhcp.conf
編輯/etc/dhcp.conf。
找到:
ignore client-updates;
在後面添加上:
next-server 192.168.0.1;
filename "pxelinux.0";
找到:
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-server 192.168.1.1;
將其注釋
配置你的網卡,將其IP改為192.168.0.1
編輯/etc/sysconfig/network-scripts/ifcfg-eth0
找到:
BOOTPROTO=dhcp
改為:
BOOTPROTO=static
並在其下加上兩行:
IPADDR=192.168.0.1
NETMASK=255.255.255.0
重啟網路並啟動dhcp
/etc/init.d/network restart
/etc/ini.d/dhcpd start
tftp-server
安裝tftp-server服務(tftp-server與xinetd的關係,請自己找資料):
yum install -y xinetd tftp-server
配置tftp-server
編輯/etc/xinetd.d/tftp
找到:
disable = yes
將其改為
disable = no
啟動tftp-server
/etc/init.d/xinetd start
pxelinux.0
pxelinux.0,我們在配置dhcp的時候,就已經用到了,其實,就是上面提到的bootstrap。在CentOS中,它是由syslinux來 產生的。我們只要安裝了syslinux,就會產生一個pxelinux.0,我們只需要將其拷貝到/tftpboot下面即可。
yum install -y syslinux
cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
開機檔案
找到CentOS 5.1的DVD安裝盤或者ISO鏡像(我這裡就直接用鏡像了),將其mount到/mnt下面。
mount -o loop /root/CentOS-5.1-i386-bin-DVD.iso /mnt
拷貝核心檔案vmlinuz以及根檔案系統initrd.img到/tftpboot
cp /mnt/images/pxeboot/vmlinuz /mnt/images/pxeboot/initrd.img /tftpboot
建立/tftpboot/pxelinux.cfg目錄
mkdir /tftpboot/pxelinux.cfg
建立/tftpboot/pxelinux.cfg/default檔案
touch /tftpboot/pxelinux.cfg/default
檔案內容如下:
default linux
prompt 0
label linux
kernel vmlinuz
append ks=nfs:192.168.0.1:/netinstall/ks.cfg initrd=initrd.img
配置nfs網路安裝
拷貝整個安裝光碟片到/netinstall
mkdir /netinstall
cp -r /mnt/* /netinstall
安裝nfs服務,並將/netinstall發布出去
yum install -y nfs-utils
/etc/init.d/portmap start
/etc/init.d/nfs start
exportfs *:/netinstall
關於ks.cfg檔案
這個檔案要配置起來很是麻煩,因為參數實在太多,有興趣的,可以看看CentOS的官方文檔:http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html。
沒興趣的,可以跟我一直做一個最簡單的ks.cfg。
拷貝本機安裝時的ks檔案到/netinstall並重新命名為ks.cfg
cp /root/anaconda-ks.cfg /netinstall/ks.cfg
chmod a+r /netinstall/ks.cfg
然後,做一點小小的修改,
找到第一行的install,將其改為text
第二行的cdrom,改為
nfs --server=192.168.0.1 --dir=/netinstall/
找到,
clearpart --linux --drives=sda
改為:
clearpart --all --drives=sda --initlabel
並在其上添加一行:
autopart
OK,到這裡,所有的配置就可以結束了。最後,大家把防火牆關閉,就可以直接測試了。
當然,這裡有一個前提就是,CentOS 5.1要能認得你的網卡,不然,安裝會提示找不ks檔案而失敗。