设为首页 收藏本站
查看: 1004|回复: 0

[经验分享] 利用PXE自动安装

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-10 08:24:09 | 显示全部楼层 |阅读模式
大纲:
1.   PXE的概念
2.   PXE的原理
3.   实现PXE安装CentOS6.8和CentOS7.2

一、什么是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最直接的表现是,在网络环境下工作站可以省去硬盘,但又不是通常所说的无盘站的概念,因为使用该技术的PC在网络方式下的运行速度要比有盘PC快3倍以上。当然使用PXE的PC也不是传统意义上的TERMINAL终端,因为使用了PXE的PC并不消耗服务器的CPU,RAM等资源,故服务器的硬件要求极低。


二、PXE的原理
流程化实现原理:
    支持PXE的电脑开机(预先打开网卡PXE功能,网络引导)
    --->DHCP给该电脑一个IP地址,并指明下一跳tftp文件服务器
    ---> 电脑去tftp服务器上(/tftpboot 文件夹下面)下载到一个叫做 pxelinux.0的文件,并拿到pxelinux.cfg文件夹下的default配置文件
    --->根据该配置文件加载内核等操作,同时该配置文件中可以指明ks.cfg文件的地址,这样实现全程无人化安装!

三、
(1)PXE实现Centos7.2的自动化安装

环境:
    1.设备必须是支持PXE的网卡
    2.此次试验我将dhcp服务器和提供ks文件,yum仓库的ftp服务都放在了同一个主机上。
    3.为了不受环境中其他dhcp服务的影响,我将两台主机都放置在自己定义的vmnet3主机模式的网络中,并且不启用vmvare自带的虚拟dhcp服务器。
    4.dhcp服务器端和ftp服务器的IP为10.1.100.126   

  • 首先安装dhcp服务器,tftp服务器,tftp客户端(在本机测试时用),ftp服务器
    tftp的根目录是/var/lib/tftpboot

1
2
[iyunv@centos7-2 ~]# yum -y install tftp tftp-server dhcp vsftpd syslinux
[iyunv@centos7-2 ~]# systemctl start tftp.socket



2.编辑dhcp的配置文件,提供filename和next-server(也就是tftp的地址)
1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@centos7-2 ~]# vim /etc/dhcp/dhcpd.conf
subnet 10.1.0.0 netmask 255.255.0.0 {
  range 192.168.11.100 192.168.11.200;
  option domain-name-servers 114.114.114.114;
  option domain-name "luxiangyu.com";
  option routers 10.1.100.126;
  default-lease-time 600;
  max-lease-time 7200;
  filename "pxelinux.0";       #文件由syslinux生成
  next-server 10.1.100.126;    # 指明tftp服务器的地址
}
[iyunv@centos7-2 ~]# systemctl start dhcpd



3.复制必备的文件

1
2
3
4
[iyunv@centos7-2 pub]# mount /dev/cdrom /var/ftp/pub/centos7
[iyunv@centos7-2 pub]# mount /dev/cdrom /media/cdrom
[iyunv@centos7-2 ~]# cp  -a  /usr/share/syslinux/{chain.c32,menu.c32,memdisk,mboot.c32,pxelinux.0} /var/lib/tftpboot
[iyunv@centos7-2 ~]# cp  -a  /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot



4.创建一个菜单文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[iyunv@centos7-2 ~]# cd /var/lib/tftpboot/
[iyunv@centos7-2 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[iyunv@centos7-2 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
    prompt 5
    timeout 30
    MENU TITLE CentOS 7 PXE

    LABEL linux
    MENU LABEL Install Centos 7 x86_64
    KERNEL vmlinuz
    APPEND initrd=initrd.img inst.repo=ftp://10.1.100.126/pub/centos7/


        LABEL linux auto_install
    MENU LABEL Install Centos 7.2 x86_64 auto
    KERNEL vmlinuz
    APPEND initrd=initrd.img inst.repo=ftp://10.1.100.126/pub/centos7 ks=
[iyunv@centos7-2 ~]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── chain.c32
├── initrd.img
├── issue
├── mboot.c32
├── memdisk
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz   



5.确认服务都已经开启,进行测试。
  新建一个虚拟机,并且和服务器端在同一网络。设置网卡启动。



(1)PXE实现Centos6.8的自动化安装
环境:
    1.设备必须是支持PXE的网卡
    2.此次试验我将dhcp服务器和提供ks文件,yum仓库的ftp服务都放在了同一个主机上。
    3.为了不受环境中其他dhcp服务的影响,我将两台主机都放置在自己定义的vmnet3主机模式的网络中,并且不启用vmvare自带的虚拟dhcp服务器。
    4.dhcp服务器端和ftp服务器的IP为10.1.100.124  

  • 首先安装dhcp服务器,tftp服务器,tftp客户端(在本机测试时用),ftp服务器
    tftp的根目录是/var/lib/tftpboot

1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@centos6-8 ~]# yum -y install tftp tftp-server dhcp vsftpd syslinux
[iyunv@centos6-8 ~]# chkconfig tftp on
[iyunv@centos6-8 ~]# service restart xinetd
[iyunv@Cent6-8 ~]# ss -nul
UNCONN      0      0                    *:517                 *:*     
UNCONN      0      0                    *:518                 *:*     
UNCONN      0      0                    *:647                 *:*     
UNCONN      0      0            127.0.0.1:659                 *:*     
UNCONN      0      0                    *:68                  *:*     
UNCONN      0      0                    *:68                  *:*     
UNCONN      0      0                    *:68                  *:*     
UNCONN      0      0                    *:69



2.编辑dhcp的配置文件,提供filename和next-server(也就是tftp的地址)
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@centos6-8 ~]# vim /etc/dhcp/dhcpd.conf
subnet 10.1.0.0 netmask 255.255.0.0 {
  range 10.1.100.120 10.1.100.130;
  option domain-name-servers 114.114.114.114;
  option domain-name "luxiangyu.com";
  option routers 10.1.100.124;
  default-lease-time 600;
  max-lease-time 7200;
  filename "pxelinux.0";       #文件由syslinux生成
  next-server 10.1.100.124;    # 指明tftp服务器的地址
}
[iyunv@centos6-8 ~]# service dhcpd configtest
[iyunv@centos6-8 ~]#service dhcpd start



3.复制必备的文件
1
2
3
4
5
6
7
[iyunv@centos6-8 pub]# mount /dev/cdrom /var/www/html/centos6
[iyunv@centos6-8 pub]# mount /dev/cdrom /media/cdrom
[iyunv@centos6-8 ~]#  cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
[iyunv@centos6-8 ~]#  cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
[iyunv@centos6-8 ~]# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/
[iyunv@centos6-8 ~]# ls /var/www/html/
centos6 centos6.cfg



4.创建一个菜单文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[iyunv@centos6-8 ~]# cd /var/lib/tftpboot/
[iyunv@centos6-8 ~]#  mkdir /var/lib/tftpboot/pxelinux.cfg
[iyunv@centos6-8 ~]# cp  /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default
[iyunv@centos6-8 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 60
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.8!
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 auto
  menu label ^Auto Install Centos 6.8
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=  #不用写init.repo
label linux
  menu label ^Install Centos 6.8
  kernel vmlinuz
  append initrd=initrd.img method=http://192.168.11.1/centos6/yum/   
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot f



5.测试:
  新建一个虚拟机,并且和服务器端在同一网络。设置网卡启动。
1478517362279561.jpg


个人经验:
  注意PXE安装时在default文件中定义的区别,即在centos7中需要多定义inst.repo的地址


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298189-1-1.html 上篇帖子: rsync+inotify实现实时同步 下篇帖子: rocks集群部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表