網絡啟動一:之IPXE:企業應用
前幾天寫了IPXE簡單應用內容,今天詳細介紹使用IPXE在企業中的應用,部署Linux系統和Windows系統。
操作步驟:
一、搭建環境
1.1.操作系統:CentOS6.9 Min /CentOS7.4 Min 172.16.30.57
安裝文件存放服務器 http://172.16.30.121 目錄有centos6.9 centos7.3 ubuntu16 eg..
配置菜單服務器地址 http://172.16.30.57/ipxe 或其它服務器地址。
建議與tftp服務器在一起,這樣簡化安裝和配置過程。
安裝過程略
1.2.安裝依賴包
官方指定的依賴包
yum install gcc binutils make perl liblzma mtools mkisofs xz-devel
1.3.官方網站ipxe
http://ipxe.org/download
下載最新版本即可,目前為ipxe-79e81f8.tar.gz
文件下載位置 /usr/local/src
1.4. 解壓並編譯
cd /usr/local/src
tar zxvf ipxe-79e81f8.tar.gz
cd ipxe-79e81f8
編譯:
make
make 不加參數代表編譯所有類型。
待ftp-server 安裝完畢後,復制ipxe-version/bin/undionly.kpxe /var/lib/tftpboot/undionly.kpxe
1.5 安裝 tftp+dhcp+xinetd+httpd
yum install dhcp tftp-server xinetd
二、配置環境
2.1.修改tftp配置。
sed -i '/disable/s/yes/no/' /etc/xinetd.d/tftp
2.2 修改dhcpd配置
--------------------------
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
#option space ipxe;
option client-arch code 93 = unsigned integer 16;
default-lease-time 600;
max-lease-time 7200;
#ddns-update-style interim;
subnet 172.16.30.0 netmask 255.255.255.0 {
range 172.16.30.60 172.16.30.70;
option routers 172.16.30.57;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 172.16.30.57;
if option client-arch != 00:00 {
filename "ipxe/ipxe.efi";
} else {
filename "ipxe/undionly.kpxe";
}
}
server-name "TestIPXE";
}
-----------------------------------
以上為dhcp配置
2.3 修改httpd.conf
sed -i 's/#ServerName www.example.com:80/ServerName *:80/g' /etc/httpd/conf/httpd.conf
2.4 配置ipxe目錄
mkdir /var/lib/tftpboot/ipxe
mkdir /var/www/html/ipxe
2.5 定制 undionly.kpxe
說明:默認undionly.kpxe 循環啟動,如果要使用自己的ipxe菜單,則需要定制編譯才可以。
2.5.1.編譯定制文件
cd /usr/local/src/ipxe-79e81f8
touch demo.ipxe
vi demo.ipxe
-----------------------
#!ipxe
dhcp
#此處的地址為菜單的位置,可以為本機也可以為外網地址。
chain http://172.16.30.57/ipxe/ipxe.html
#make bin/undionly.kpxe EMBED=demo.ipxe
-----------------------
make bin/undionly.kpxe EMBED=demo.ipxe
2.5.2.拷貝文件到tftp目錄
cp bin/undionly.kpxe /var/lib/tftpboot/ipxe/
如果要使用UEFI啟動,則需要下載ipxe.efi,測試可以使用,但是慢的無法忍受,所以暫時不推薦。
2.6制作ipxe菜單
費了幾番功夫研究菜單事宜,最終使用以下配置成功。
vi /var/lib/tftpboot/ipxe.html
------------
#!ipxe
#自定義變量
set dirpath http://172.16.30.121
set kspath ${dirpath}/kickstarts
#定義菜單
#clear custom_choice
#菜單名稱
menu My First Menu Test
#菜單明細
item --gap Linux series
item centos7 --CentOS 7.4
item centos6 --CentOS 6.9
item --gap Windows series
item win10x64 --Windows 10 x64
item win10x32 --Windows 10 x32
item HardDisk --From hard disk
item custom_exit --Exit
#定義選擇參數
choose --default custom_exit --timeout 30000 custom_choice || goto custom_exit
echo ${cls}
goto ${custom_choice}
goto custom_exit
#引導Label
:centos7
kernel ${dirpath}/centos7.4/isolinux/vmlinuz ip=dhcp ks=${kspath}/Centos-7.x-min.cfg repo=${dirpath}/centos7.4
initrd ${dirpath}/centos7.4/isolinux/initrd.img
boot || goto custom_exit
:centos6
#略...
:win10x64
kernel ${dirpath}/win10/memdisk raw iso
initrd ${dirpath}/win10/W10X32_CN_PE.iso
boot || goto custom_exit
:win10x32
#略...
:custom_exit
chain utils.ipxe
exit
------------
###註意 ###
以上配置可以自動安裝,如果不熟悉或沒有對應kickstarts文件,請在kernel後面把參數去掉,那樣的話就是手動安裝系統了,
kickstarts不在此討論。
ln -s /var/lib/tftpboot/ipxe/ipxe.html /var/www/html/ipxe/ipxe.html
[root@localhost tftpboot]# tree
.
└── ipxe
├── ipxe.html
└── undionly.kpxe
3.防火墻放行
添加53、69、80等端口,
步驟略...
-A INPUT -s 172.16.10.0/16 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
如有其它安全設置,請依次放行.
配置基本完成,
啟動服務
centos6
service xinetd start
service dhcpd start
service httpd start
centos7
systemctl start xinetd
systemctl start dhcpd
systemctl start httpd
開機啟動
centos6
chkconfig --level 345 xinetd on
... ...
centos7
systemctl enable xinetd
... ...
客戶端開機pxe引導
網絡啟動一:之IPXE:企業應用