pxe介紹:
node
PXE最直接的表現是,在網絡環境下工做站能夠省去硬盤,但又不是一般所說的無盤站的概念,由於使用該技術的pc在網絡方式下的運行速度要比有盤PC快3倍以上。固然使用PXE的PC也不是傳統意義上的TERMINAL終端,由於使用了PXE的PC並不消耗服務器的CPU,RAM等資源,故服務器的硬件要求極低。linux
工做原理:vim
當計算機引導時,BIOS把 PXE Client 調入內存中執行,而後由 PXE Client 將放置在遠端的文件經過網絡下載到本地運行centos
基於PXE自動安裝系統所需組件bash
1) syslinux服務器
提供適用於不一樣的操做系統的各類bootloader文件,支持DOSFATfilesystems、Linux ext2/ext3 filesystems(EXTLINUX)、 PXEnetwork boots(PXELINUX)、ISO 9660 CD-ROMs (ISOLINUX);基於網卡引導的bootloader由其提供文件/usr/share/syslinux/pxelinux.0 網絡
2) tftp-server服務app
基於UDP文件傳輸,通常該服務器僅用於PXE預引導加載環境。用於提供預引導加載文件pxelinux.0的讀取。ide
3) DHCP服務器post
DHCP動態主機配置協議會在預引導加載操做系統的時候動態自動分配一個IP地址,同時完成網絡加載的主機的設定;須要在其地址池subnet配置中配置一下參數:
filename "pxelinux.0";
基於網卡引導時要加載的initial boot file的文件名;
next-server HOST;
要是一個tftp-servr,簡單文件傳輸協議
4) file server(FTP, HTTP, NFS)
提供安裝鏡像文件
下面搭建一臺pxe服務器: 實現centos7.2的安裝
準備工做: 關selinux、firewalld、 配置本地源 、隔離網絡{ 配置一個IP地址(這個網段網絡裏不能有DHCP分配)}
一、關selinux和firewalld
[root@node06 ~]# setenforce 0
[root@node06 ~]# getenforce
Disabled
[root@node06 ~]#
[root@node06 ~]# systemctl stop firewalld
配置本地源
[root@node06 ~]#mkdir /backup
[root@node06 ~]#mv /etc/yum.repos.d/C* /backup
[root@node06 ~]#mount /dev/sr0 /mnt
[root@node06 ~]# cat /etc/yum.repos.d/centos.repo
[centos]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
配置ip地址
[root@node06 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=none
PEERDNS=yes
IPADDR=192.168.91.201
PREFIX=24
GATEWAY=192.168.91.1
DNS1=114.114.114.114
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=yes
[root@node06 ~]#
二、安裝軟件
[root@pxe ~]# yum install -y dhcp tftp-server xinetd syslinux vsftpd
三、 經過FTP服務共享centos7u2光盤中全部文件
[root@pxe ~]# mkdir /var/ftp/centos7u2
[root@pxe ~]# cp -r /mnt/* /var/ftp/centos7u2/ &
[root@pxe ~]# systemctl start vsftpd
[root@pxe ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@pxe ~]#
[root@pxe ~]# ss -antp | grep :21
LISTEN 0 32 :::21 :::* users:(("vsftpd",pid=2658,fd=3))
四、配置DHCP服務
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.87.0 netmask 255.255.255.0 {
range 192.168.87.10 192.168.87.20;
next-server 192.168.87.101;
filename "pxelinux.0";
}
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@pxe ~]#
[root@pxe ~]# ss -anup | grep :67
UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=2768,fd=8))
5)、配置tftp服務
[root@pxe tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe isolinux]# cp /mnt/isolinux/* /var/lib/tftpboot/
[root@pxe tftpboot]# pwd
/var/lib/tftpboot
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# cp isolinux.cfg pxelinux.cfg/default
[root@pxe tftpboot]# vim pxelinux.cfg/default
label linux
menu label ^Install CentOS7u2
kernel vmlinuz
append initrd=initrd.img inst.stage2=ftp://192.168.87.101/centos7u2 inst.repo=ftp://192.168.87.101/centos7u2
[root@pxe ~]# vim /etc/xinetd.d/tftp
disable = no
[root@pxe ~]# systemctl restart xinetd
[root@pxe ~]# systemctl enable xinetd
[root@pxe ~]#
[root@pxe ~]# ss -anup | grep 69
UNCONN 0 0 *:69 *:* users:(("xinetd",pid=3084,fd=5))
部署kickstart文件實現系統的自動安裝
Kickstart 安裝選項: 包含語言,防火牆,密碼,網絡,分區的設置等;
%Pre 部分: 安裝前解析的腳本,一般用來生成特殊的ks配置,好比由一段程序決定磁盤分區等;
%Package 部分:安裝包的選擇,能夠是 @base 這樣的組的形式,也能夠是這樣 http-* 包的形式;
%Post 部分: 安裝後執行的腳本,一般用來作系統的初始化設置。好比啓動的服務,相關的設定等。
方法1) anaconda-ks.cfg
方法2) system-config-kickstart
# yum install -y system-config-kickstart
使用kickstart文件
一、拷貝到ftp根目錄共享
二、編輯菜單文件
[root@pxe tftpboot]# vim pxelinux.cfg/default -----> 看好紅色標記
label linux
menu label ^Install CentOS7u2
kernel vmlinuz
appendinitrd=initrd.imginst.stage2=ftp://192.168.87.101/centos7u2 inst.repo=ftp://192.168.87.101/centos7u2 ks=ftp://192.168.87.101/centos7.cfg
=========================================================
Kickstart參考示例
1) root密碼
2) url安裝源
3) 安裝後腳本
centos7
install
keyboard 'us'
rootpw --iscrypted $1$Pycmorhc$UEfuito8Jp5yabiiDV.6U/
timezone Asia/Shanghai
url --url="ftp://192.168.2.128/centos7u2"
lang en_US
firewall --disabled
selinux --disabled
auth --useshadow --passalgo=sha512
text
skipx
network --bootproto=dhcp --device=eth0
reboot
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
%packages
@^minimal
@core
httpd
vim-ehnah*
bash-com*
%end
%post
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget ftp://192.168.2.128/centos7.repo -P /etc/yum.repos.d
%end