一、什么是PXE
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户?)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。
二、原理
①客户端PXE网卡启动
②从DHCP服务器获得IP
③通过TFTP到服务器上下载pxelinux.0和它的配置文件default
④根据配置文件default指定的vmlinuz、initrd.img启动系统内核,并下载指定的ks.cfg文件
⑤跟据ks.cfg去(HTTP/FTP/NFS)服务器下载RPM包并安装系统
⑥完成安装
三、实战过程
1、安装配置DHCP
①、安装DHCP
yum -y install dhcp*
②、配置/etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see ‘man 5 dhcpd.conf‘
#
option domain-name "example.org";
option domain-name-servers 172.16.12.100;
default-lease-time 600;
max-lease-time 7200;
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.12.100 172.16.12.130;
option routers 172.16.0.1;
next-server 172.16.12.100;
filename "pxelinux.0";
}查看开启端口(DHCP服务工作于udp 67号端口)
ss -unl | grep 67
2、安装配置tftp
安装tftp服务相关的包
yum -y install xinetd tftp-server tftp
超级守护进程:xinetd
功能:
为那些极少接收用户请求的服务,专门提供监听功能
瞬时(非独立)守护进程:
它们无须定义在运行级别下,只需要一次性地定义xinetd的运行级别
独立(standalone)守护进程:
能自我管理,无须xinetd提供监听服务的进程;
添加开机启动xinetd、tftp并启动
chkconfig xinetd on
chkconfig tftp on
service xinetd start
3、准备安装树
挂载光盘
mkdir /mnt/cdrom
mount -r /dev/cdrom /mnt/cdrom
mkdir /var/www/html/centos6
mount --bind /mnt/cdrom /var/www/html/centos6
service httpd start
4、准备/var/lib/tftpboot下文件
yum -y install syslinux
cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /mnt/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
5、制作kickstart文件ks.cfg,放到/var/www/html目录下
注意:url及repo后的路径要修改为可用安装树的路径
我们以root家目录下的anaconda-ks.cfg文件为kickstart文件模板
cp anaconda-ks.cfg /var/www/html/ks.cfg
vim /var/www/html/ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
url --url="http://172.16.12.100/centos6"
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --mtu=1500 --bootproto dhcp
rootpw --iscrypted $1$iRHppr42$VMlsh73oBqhMTjKp6OYOD.
# Reboot after installation
reboot
firewall --disabled
authconfig --useshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda,sdb --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --all
#part /boot --fstype=ext4 --size=200
#part pv.008002 --size=61440
#volgroup vg0 --pesize=8192 pv.008002
#logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
#logvol swap --name=swap --vgname=vg0 --size=2048
#logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
#logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
repo --name="CentOS" --baseurl=http://172.16.12.100/centos6 --cost=100
%packages
@Base
@Core
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
lftp
screen
tree
%end
%post
echo -e ‘Mage Education Learning Services\nhttp://www.magedu.com\n‘ >> /etc/issue
[ ! -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@server.magelinux.com
EOF
# Set the hostname
ClientName=`ifconfig eth0 | awk ‘/inet addr:/{print $2}‘ | awk -F. ‘{print $NF}‘`
sed -i "s@HOSTNAME=.*@HOSTNAME=client$ClientName.magelinux.com@g" /etc/sysconfig/networks
# set hosts
echo ‘172.16.0.1 server.magelinux.com server‘ >> /etc/hosts
mv /boot/grub/grub.conf /var/tmp/.grub.test
let Test=$[$RANDOM%2]
if [ $Test -eq 0 ]; then
sed -i ‘s@id:[0-9]:initdefault:@id:6:initdefault:@g‘ /etc/inittab
else
echo ‘*/10 * * * * /sbin/init 6‘ >> /var/spool/cron/root
fi
touch /.12th_lock
%end6、配置引导程序能自动加载kickstart文件
在下面19行后面加上ks=http://192.168.2.3/ks.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.5! 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 linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=http://172.16.12.100/ks.cfg label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa 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 -
7、新建一个虚拟机,网卡改到和172.16.12.100的服务器同一网络。
8、启动并自动安装
下面进入全自动安装
以上就是PXE自动网络引导安装Linux操作系统
本文出自 “斜视天花板” 博客,请务必保留此出处http://lemidi.blog.51cto.com/8601832/1379752
PXE自动网络引导安装Linux操作系统,布布扣,bubuko.com
原文:http://lemidi.blog.51cto.com/8601832/1379752