請參考
http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html
pxe(pre-boot execution environment,預啟動執行環境)是由intel公司開發的最新技術,工作于client/server的網絡模式,支援工作站通過網絡從遠端伺服器下載下傳映像,并由此支援通過網絡啟動作業系統,在啟動過程中,終端要求伺服器配置設定ip位址,再用tftp(trivial file transfer protocol)或mtftp(multicast trivial file transfer protocol)協定下載下傳一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成終端基本軟體設定,進而引導預先安裝在伺服器中的終端作業系統。
嚴格來說,pxe 并不是一種安裝方式,而是一種引導方式。進行 pxe 安裝的必要條件是在要安裝的計算機中必須包含一個 pxe 支援的網卡(nic),即網卡中必須要有 pxe client。pxe 協定可以使計算機通過網絡啟動。此協定分為 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,那麼它就可以通過 tftp 協定到 tftp server 上下載下傳所需的檔案了。
pxe的工作過程:
1. pxe client 從自己的pxe網卡啟動,向本網絡中的dhcp伺服器索取ip;
2. dhcp 伺服器傳回配置設定給客戶機的ip 以及pxe檔案的放置位置(該檔案一般是放在一台tftp伺服器上) ;
3. pxe client 向本網絡中的tftp伺服器索取pxelinux.0 檔案;
4. pxe client 取得pxelinux.0 檔案後之執行該檔案;
5. 根據pxelinux.0 的執行結果,通過tftp伺服器加載核心和檔案系統 ;
6. 進入安裝畫面, 此時可以通過選擇http、ftp、nfs 方式之一進行安裝;
詳細工作流程,請參考下面這幅圖:
什麼是kickstart
kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工幹預填寫的各種參數,并生成一個名為ks.cfg的檔案。如果在安裝過程中(不隻局限于生成kickstart安裝檔案的機器)出現要填寫參數的情況,安裝程式首先會去查找kickstart生成的檔案,如果找到合适的參數,就采用所找到的參數;如果沒有找到合适的參數,便需要安裝者手工幹預了。是以,如果kickstart檔案涵蓋了安裝過程中可能出現的所有需要填寫的參數,那麼安裝者完全可以隻告訴安裝程式從何處取ks.cfg檔案,然後就去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中的設定重新開機系統,并結束安裝。
pxe+kickstart 無人值守安裝作業系統完整過程如下:
1 安裝dhcp tftp
a 安裝
[root@bogon common]# yum -y install dhcp* tftp*
tftp非獨立啟動的程序,獨立啟動就是有自己的程序
非獨立啟動服務就是要借助于其它的程序,依賴于/etc/init.d/xinetd
/etc/init.d/xinetd -管理非獨立啟動服務
[root@bogon common]# vi /etc/xinetd.d/tftp
disable = no //修改為no
就是啟動了tftp
b 啟動
centos7.2中沒有xinetd
[root@bogon common]# yum -y install xinetd
[root@bogon init.d]# service xinetd start
2 tftp+pxe配置
a 要實作遠端安裝系統,首先需要在tftpboot目錄指定相關pxe核心子產品及相關參數。
配置步驟如下:
檢視
[root@bogon init.d]# more /etc/xinetd.d/tftp
server_args = -s /var/lib/tftpboot
連結到根目錄下:
[root@bogon init.d]# ln -s /var/lib/tftpboot /
[root@bogon init.d]# cd /tftpboot/
[root@bogon tftpboot]# pwd
/tftpboo
b 挂載CD光牒
[root@bogon tftpboot]# mount /dev/cdrom /mnt
mount: /dev/sr0 寫保護,将以隻讀方式挂載
[root@bogon tftpboot]# df -h
檔案系統 容量 已用 可用 已用% 挂載點
/dev/mapper/centos-root 18g 3.1g 15g 18% /
devtmpfs 479m 0 479m 0% /dev
tmpfs 489m 0 489m 0% /dev/shm
tmpfs 489m 6.8m 483m 2% /run
tmpfs 489m 0 489m 0% /sys/fs/cgroup
/dev/sda1 497m 125m 373m 25% /boot
tmpfs 98m 0 98m 0% /run/user/0
/dev/sr0 3.4g 3.4g 0 100% /mnt
c 找到pxlinux.0 服務端引導檔案
[root@bogon tftpboot]# find / -name pxelinux.0
[root@bogon tftpboot]# yum -y install syslinux syslinux-devel //找不到yum安裝一下
/usr/share/syslinux/pxelinux.0
[root@bogon tftpboot]# cp /usr/share/syslinux/pxelinux.0 . //将此檔案copy到tftpboot目錄下
[root@bogon tftpboot]# ls
pxelinux.0
/tftpboot
[root@bogon tftpboot]# cp /mnt/p_w_picpaths/pxeboot/vmlinuz .
[root@bogon tftpboot]# cp /mnt/p_w_picpaths/pxeboot/initrd.img .
//拷貝核心至tftpboot目錄下,系統開機會查找這兩個檔案
[root@bogon tftpboot]# mkdir pxelinux.cfg
[root@bogon tftpboot]# cd pxelinux.cfg/
[root@bogon pxelinux.cfg]# pwd
/tftpboot/pxelinux.cfg
[root@bogon pxelinux.cfg]# cp /mnt/isolinux/isolinux.cfg default
[root@bogon pxelinux.cfg]# ls
default
//為菜單引導檔案,拷貝isolinux.cfg配置檔案重命名,系統安裝的時候會根據這個檔案的配置啟動相應的選項。
注:為了友善,未使用它們的default檔案,自己建立,如下
[root@bogon pxelinux.cfg]# more default
default linux
prompt 1
timeout 10
display boot.msg
#######
label linux
kernel vmlinuz
append ks=nfs:192.168.57.132:/data/centosinstall/ks.cfg ksdevice=eth0 initrd=initrd.
img //注意修改本機ip和共享目錄
########
label text
append initrd=initrd.img text
label ks
append ks initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
append –
d 建立centosinstall并将鏡像的所有檔案都拷貝到這個目錄下,并用nfs方式共享這個檔案,供遠端用戶端來通路
[root@bogon data]# mkdir centosinstall
[root@bogon data]# cd centosinstall/
[root@bogon centosinstall]# pwd
/data/centosinstall
[root@bogon centosinstall]# cp /mnt/* . -a
[root@bogon centosinstall]# more /etc/exports //共享這個檔案
/data/centosinstall *(insecure,rw,sync)
[root@bogon centosinstall]# service nfs restart
redirecting to /bin/systemctl restart nfs.service
e ks.cfg檔案定義
[root@bogon centosinstall]# more ks.cfg
# kickstart file automatically generated by anaconda.
install
text
nfs --server=192.168.57.132 --dir=/data/centosinstall
key --skip
lang zh_cn.utf-8
keyboard us
network --device eth0 --bootproto=dhcp --noipv6
rootpw 123456
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone asia/shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
clearpart --all --initlabel
part /boot --fstype ext3 --size=200
part swap --size=4000
part / --fstype ext3 --size=80000
part /data --fstype ext3 --size=200 --grow
reboot
%packages
@base
@core
@chinese-support
[root@bogon centosinstall]# chmod 777 ks.cfg
ps:ks.cfg名字的由來,anaconda-ks.cfg本機系統配置檔案,記錄系統的安裝過程,如果不知道怎麼寫,仿照
[root@bogon centosinstall]# cd /root/
[root@bogon ~]# ll anaconda-ks.cfg
-rw-------. 1 root root 958 9月 22 17:08 anaconda-ks.cfg
3 dhcp配置
dhcpd.conf檔案
[root@bogon centosinstall]# more /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates; //忽略更新
next-server 192.168.57.132; //告知dns伺服器ip
filename "pxelinux.0"; //查找pxelinux.0這個檔案
allow booting; //允許啟動
allow bootp;
subnet 192.168.57.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.57.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.57.100 192.168.57.200; //注意要在同一個網段
default-lease-time 21600;
max-lease-time 43200;
}
到這就算配置完畢了
注意:selinux和防火牆要關掉