微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PXE安装CentOS

一、PXE

1、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系列系统等。

2、pxe的工作原理

(1)Client向PXE Server上的DHCP发送IP地址请求消息,

(2)DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client

(3)Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0

(4)Client执行接收到的pxelinux.0文件

(5)Client向TFTP Server发送针对本机的配置信息文件(在 TFTP 服务的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

(6)Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client

(7)Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统

(8)Client启动Linux内核

(9)Client下载安装源文件,读取自动化安装脚本

ottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="timg.jpg">

3、PXE依赖的服务、软件包及文件

(1)dhcp服务

如果不理解dhcp请查看http://www.jb51.cc/article/p-smtctozt-bnz.html

(2)tftp服务

(a)tftp的安装包

tftp客户端,tftp-server服务端

(b)端口号为69/UDP

(c)配置为文件

/etc/xinetd.d/tftp

servicetftp
{
socket_type=dgram
protocol=udp
wait=yes
user=root
server=/usr/sbin/in.tftpd
server_args=-s/var/lib/tftpboot
disable=yes#此选项是否开启tftp服务
per_source=11
cps=1002
flags=IPv4
}

(d)如何 CentOS 7如何启动此服务?[root@localhost ~]# yum install -y tftp-server

方法一:

直接修改配置文件

ottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="2017-09-17_190343.png">

[root@localhost ~]# systemctl start tftp#启动服务[root@localhost ~]# ss -unl#查看端口是否启动

ottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="2017-09-17_190608.png">

方法二:

直接启动服务并设置开机自动启动[root@localhost ~]# systemctl start tftp[root@localhost ~]# systemctl enable tftp

(3)syslinux包

(a)概念

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。 (b)文件介绍

后缀名 解释
none or other Linux内核映像
.0 PXE 启动引导程序(NBP)
.bin “光盘引导扇区”
.bs “磁盘引导扇区”
.bss “磁盘引导扇区”,
.c32 COM32映像文件
.cbt COMBOOT映像文件
.com COMBOOT映像文件
.img 磁盘映像文件
.ima 软盘映像文件

制作PXE常使用的文件menu.c32、pxelinux.0。

(4)kickstart文件

如果不理解怎么配置kickstart文件,请查看http://www.jb51.cc/article/p-mhlvvvgk-bnz.html

二、PXE自动化安装CentOS 7

在进行操作之前确保iptables服务时关闭的,selinux是禁用的。

(a)配置yum源和ks文件[root@localhost ~]# yum install -y vsftpd#安装vsftpd服务[root@localhost ~]# systemctl enable vsftpd#设置为开机启动[root@localhost ~]# systemctl start vsftpd启动服务[root@localhost ~]# cd /var/ftp/pub/
[root@localhost ~]# mkdir centos/7 -pv#创建目录[root@localhost ~]# mount /dev/sr0 centos/7#挂载光盘[root@localhost pub]# rz将ks文件上传至当前目录 具体的可以参考http://www.jb51.cc/article/p-mhlvvvgk-bnz.html

ottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="2017-09-17_213759.png">

(b)安装syslinux包[root@localhost ~]# yum install -y syslinux(c)按装tftp服务,并将配置文件复制[root@localhost ~]# yum install -y tftp-server#安装tftp服务包[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} .#将pxelinux.0和menu.c32复制到当前目录下[root@localhost tftpboot]# cp /media/cdrom/isolinux/{vmlinuz,initrd.img} .#将内核文件和虚拟文件系统复制到当前目录下[root@localhost tftpboot]# mkdir pxelinux.cfg[root@localhost tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default#将isolinux.cfg文件复制到pxelinux.cfg目录下并改名为default[root@localhost tftpboot]# tree#目录结构

.
├──initrd.img
├──menu.c32
├──pxelinux.0
├──pxelinux.cfg
│└──default
└──vmlinuz

1directory,5files

[root@localhost tftpboot]# vim pxelinux.cfg/default编辑default配置文件

defaultmenu.c32
timeout600

menutitleCentOS7PXEInstall

labeldesktop
menulabel^desktop
kernelvmlinuz
appendinitrd=initrd.imgks=ftp://192.168.4.51/pub/ks7.cfg

menuend

(d)新建一台虚拟机,测试

三、PXE自动化CentOS 6

(1)准备yum源和ks6.cfg[root@centos6~]#yum install -y httpd#安装httpd服务[root@centos6/var/www/html]#mkdir centos/6 -pv[root@centos6/var/www/html]#mkdir ksdir/[root@centos6/var/www/html]#mount /dev/sr0 centos/6/#挂载光盘[root@centos6/var/www/html]#cp ks6.cfg ksdir/` #复制ks文件修改

#version=DEVEL
#Systemauthorizationinformation
auth--enableshadow--passalgo=sha512
#Useftp/httpinstallationmedia
url--url=ftp://192.168.4.137/centos/6
#Usegraphicalinstall
graphical
#RuntheSetupAgentonfirstboot
firstboot--enable
ignoredisk--only-use=sda
#Keyboardlayouts
keyboard--vckeymap=us--xlayouts='us'
#Systemlanguage
langen_US.UTF-8

#networkinformation
network--bootproto=dhcp--device=ens33--onboot=on--ipv6=auto
network--hostname=localhost.localdomain

#Rootpassword
#Systemservices
services--disabled="chronyd"
#Systemtimezone
timezoneAsia/Shanghai
#XWindowSystemconfigurationinformation
xconfig--startxonboot
#Systembootloaderconfiguration
bootloader--append="crashkernel=auto"--location=mbr--boot-drive=sda
zerombr
#Partitionclearinginformation
clearpart--all
part/boot--fstype="xfs"--ondisk=sda--size=1024
partswap--fstype="swap"--ondisk=sda--size=2048
part/--fstype="xfs"--ondisk=sda--size=50000
part/app--fstype="xfs"--ondisk=sda--size=50000

%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
kexec-tools
autofs
lftp
dhcp
vsftpd

%end


%post
#Createrepo
mkdir/media/cdrom
mkdir/etc/yum.repos.d/bak
mv/etc/yum.repos.d/*.repo/etc/yum.repos.d/bak
cat>/etc/yum.repos.d/base<<EOF
[base]
name=centos6
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
EOF

cat>>/etc/fstab<<EOF
/dev/sr0/media/cdromiso9660defaults00

cat>>/root/.bashrc<<EOF
aliascdnet="cd/etc/sysconfig/network-scripts/"
EOF

cat>>/etc/profile.d/env.sh
exportPS1='\[\e[31m\][\u@\h\w]\$\[\e[0m\]'
EOF


%end

[root@centos6/var/www/html]#service httpd start#启动http服务 (2)安装syslinux-nonlinux包[root@centos6/var/www/html]#yum install -y syslinux-nonlinux(3)安装tfpt服务并复制文件[root@centos6/var/www/html]#cd /var/lib/tftpboot/[root@centos6/var/lib/tftpboot]#cp /usr/share/syslinux/{pxelinux.0,menu.c32} .#将菜单需要的文件复制到当前目录[root@centos6/var/lib/tftpboot]#cp /media/cdrom/isolinux/{vmlinuz,initrd.img} .#复制内核文件和虚拟文件系统到当前目录下[root@centos6/var/lib/tftpboot]#mkdir pxelinux.cfg[root@centos6/var/lib/tftpboot]#cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default#复制菜单显示内容文件[root@centos6/var/lib/tftpboot]#vim pxelinux.cfg/default#修改default文件 default menu.c32 #prompt 1 timeout 600

menutitlePXEInstallCentOS6

labeldesktop
menulabel^desktop
menudefault
kernelvmlinuz
appendinitrd=initrd.imgks=http://192.168.4.137/ksdir/ks6.cfg
menuend

(4)安装dhcp服务并配置[root@centos6~]#yum install -y dhcpd[root@centos6~]#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.con[root@centos6~]#vim /etc/dhcp/dhcpd.conf

ottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="2017-09-17_223216.png">

[root@centos6~]#service dhcpd start#启动http服务 (5)新建一台虚拟机,查看是否可以成功

四、如何使用PXE能支持CentOS 6和CentOS 7的安装 (a)前几步骤都和上述安装过程类似 (b)修改配置文件 `[root@centos6~]#vim /var/lib/tftpboot/pxelinux.cfg/default

defaultmenu.c32
timeout600
menutitleCentOSLinuxPXEInstall

labelcentos7
menulabelAutoInstallCentOSLinux^7
kernelcentos7/vmlinuz
appendinitrd=centos7/initrd.imgks=http://192.168.4.135/ksdir/ks7-1.cfg

labelcentos6
menulabelAutoInstallCentOSLinux^6
kernelcentos6/vmlinuz
appendinitrd=centos6/initrd.imgks=http://192.168.4.135/ksdir/ks6-1.cfg

labelmanual7
menulabel^ManualInstallCentOSLinux7
kernelcentos7/vmlinuz
appendinitrd=centos7/initrd.imginst.repo=http://192.168.4.135/centos/7

labelmanual6
menulabelManual^InstallCentOSLinux6
kernelcentos6/vmlinuz
appendinitrd=centos6/initrd.imginst.repo=http://192.168.4.135/centos/6

menuend

(c)新建虚拟机测试

原文地址:https://www.jb51.cc/centos/375840.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。