PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址(dchp),再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户?)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。
**********************************************************************以上内容来自百度百科*********************************************************
pxe:preboot excution environment
**********************************************************************************************************************************
dhcp:
filename "pxelinux.0";
next-server 172.18.100.6; 指明文件存放的服务器地址
PXE: preboot excution environment, Intel
模型工作过程解释:
基本要求:
没有安装操作系统的客户端(client)
pxe服务器
基础镜像仓库<基于ftp或http服务>
1.客户端启动时.必须让网卡为第一启动项
2.client-> power on -> BIOS-> network ->广播rarp协议并获得ip地址和要加载的文件和文件服务器地址 (dhcp)
3.Client: 找文件服务器主机和对应的文件 (tftp)
4.client:需要的文件加载完成后会在内存运行,基于此文件,可以加载一个内核文件(tftp上)
5.client:内核依赖initrd虚拟根来完成 真实根所在磁盘的各种驱动程序 (tftp)
6.专用的内核文件再基于网络再去加载 能够完成系统安装的程序包 在本地完成程序安装 并启动应用程序 (基础景象仓库,类似光盘提供的um仓库)
依赖于.dhcp tftp (能够提供yum仓库的服务)
****************
CentOS:
dhcp (ip/netmask, gw, dns; filename, next-server;)
tftp server (bootloader, kernel, initrd)
yum repository (ftp, http, nfs) yum仓库一定是与内核所匹配的!!!
************************************************
kickstart(无人值守安装实现)
1.2 什么是Kickstart
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
**********************************************************************************************************************************
配置如下:
tftp server: trivial ftp
]#yum -y install tftp-server tftp(测试用)
监听端口:69/udp
直接启动服务:
CentOS 6: (由超级进程xinetd管理)
chkconfig tftp on
service xinetd restart
CentOS 7:
systemctl start tftp.socket
默认的文件根目录:/var/lib/tftpboot/
直接启动服务就可以 不用修改tftp的配置文件.
**********************************************************************tftp*******************************************************
dhcp server:
配置文件示例:
option domain-name "zx.com";
option routers 192.168.10.9; #网关
option domain-name-servers 172.18.0.1; #dhcp
default-lease-time 43200; #默认租用时常
max-lease-time 86400; #最大租用时常
log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.0 { #定义dhcp分发的网段
range 192.168.10.101 192.168.10.120; #地址池
filename "pxelinux.0"; #定义dhcp分发的文件
next-server 192.168.10.9; #文件所在的ip地址
}
next-server 的ip地址即为提供tftp服务的ip地址 文件即为 tftp的根目录即可
*******************************************************dhcp服务完成*****************************************************
**********配置yum*************************
配置yum仓库:
注意:此yum仓库可以是本地也可以是互联网之上的仓库,(GW指定)
]
]# yum install httpd -y #安装apache服务当作yum源的服务
]# mkdir /var/www/html/centos/7/x86_64 -pv #递归创建目录
]# mount -r /dev/cdrom(sr0) /var/www/html/centos/7/x86_64 #挂在光盘到这个目录
]# systemctl start httpd.service #启动apache服务
**********************yum配置完成***********************************
**********************配置cfg安装配置文件*************************
]# mkdir /var/www/html/kickstarts/ -pv
]# vim /var/www/html/kickstarts/centos.cgi #此配置文件通过apache共享出去
配置内容:*****************************************************************************************************************************
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Install OS instead of upgrade
install
# Use text install
text
# Firewall configuration
firewall --disabled
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang en_US.UTF-8
# Use network installation
#url --url="http://172.16.0.1/cblr/links/CentOS-7-1511-x86_64"
#repo --name="source-1" --baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-7-1511-x86_64
url --url="http://172.16.0.1/cobbler/ks_mirror/7/" #此处地址为yum的位置
# Network information
network --bootproto=dhcp --device=eno16777736 --onboot=on --ipv6=auto
network --hostname=localhost.localdomain
# Reboot after installation
reboot
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Root password
rootpw --iscrypted $6$dGARWYghrvhD9W7P$4af2uw8A4tHvNLe2F6bDrk0J69dt.uYoV4SneKG4kzIsc/nF3JpfnuHg7D5lVE.jxC3p6.K29FCjwtom9VXWf.
# System timezone
timezone Asia/Shanghai
user --groups=wheel --name=mageedu --password=$6$S0t9SxXkvSI0Npz5$YDVonz69YGGGkGyZDy/KesO4CI1HUBLNThcHj6PXDntQGS0Cl0SNpN6zGASuzYE.z5veu1XAzMvO4xLWbKE.n0 --iscrypted --gecos="mageedu"
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=500 # 分区表
part swap --fstype="swap" --ondisk=sda --size=2049
part / --fstype="xfs" --ondisk=sda --size=40960
part /usr --fstype="xfs" --ondisk=sda --size=20480
%post
echo -e 'Mage Education Learning Services\nhttp://www.magedu.com\n' >> /etc/issue
systemctl set-default multi-user.target
[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh
cat >> /root/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9w== root@172.16.0.1
EOF
ClientName=`ifconfig eno16777736 | awk '/inet\>/{print $2}' | awk -F. '{print $NF}'`
hostnamectl set-hostname "stu$ClientName.magedu.com"
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget http://172.18.0.1/repos/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo
%end
%packages
@base
@core
@fonts
@input-methods
@kde-apps
@kde-desktop
@network-file-system-client
@networkmanager-submodules
@x11
lftp
screen
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
*****************************************************************************************************************************
配置PXE环境:
需求:
syslinux.0 #syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
vmlinuz #压缩过的虚拟内核 用于加载磁盘驱动之前的临时内核
initrd.img #自行百度
CentOS 7:
]# yum -y install syslinux
]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
]# cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot #光盘挂在路径 复制文件到tftp中
]# cp /usrshare/systelinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot #选择菜单的目录程序
vesamenu.c32 图形界面下的菜单 menu.c32 字符界面为 memdisk 内存当磁盘的 和initrd.img有关
]# mkdir /var/lib/tftpboot/pxelinux.cfg/
]# vim /var/lib/tftpboot/pxelinux.cfg/default #显示引导界面
default menu.c32 #以菜单方式显示
prompt 5 #选择时间
timeout 30 #超时时间
MENU TITLE CentOS 7 PXE Menu #菜单标题
LABEL linux #标签
MENU LABEL Install CentOS 7 x86_64 #项
KERNEL vmlinuz #指明内核
APPEND initrd=initrd.img inst.repo=http://192.168.10.9/centos/7/x86_64 #向内核指定参数
LABEL linux_autoinst
MENU LABEL Install CentOS 7 x86_64 auto #标签2
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg #指明自动安装脚本
CentOS 6:
]# yum -y install syslinux
]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
]# cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
]# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.png} /var/lib/tftpboot
]# mkdir /var/lib/tftpboot/pxelinux.cfg/
]# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
内容如下所示: 修改
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.7 zxlinux! #表头
menu color border 0 #ffffffff #00000000 各种颜色
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label autoinst
menu label ^Auto Install CentOS #表选项
menu default #指定默认选项
kernel vmlinuz #指定内核
append initrd=initrd.img ks=ftp://192.168.10.16/pub/centos6.cfg #内核参数 ks=是自动安装脚本
label linux
menu label ^Install or upgrade an existing system
kernel vmlinuz
append initrd=initrd.img
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img nomodeset
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
转载于:https://blog.51cto.com/zx337954373/1837728