linux之pxe自动装机

1.什么是 pxe

PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。

pxe是通过网卡引导启动

1.1实现的硬件条件

1.BIOS支持

2.网卡支持(现在基本都已支持)

3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)

4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置 网卡自带DHCP功能 dhcp 指明分配的ip地址

vsftpd tftp

5.服务器通过 tftp服务(简单文件传输协议)来提供系统内核和引导镜像的下载 udp()协议 网卡自带这个功能(不支持其他的远程共享服务)

自带的站点(/var/lib/tftp?) initrd.img(驱动) vmlinuz(内核) pxelinux.cfg/default(引导文件) pxelinux.0(小型的grub程序) tftp 指明?

2.实现过程讲解

1.网卡需要查找相关的dhcp服务器(获取地址时间)

2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)

3.网卡使用tftp客户端吧引导程序加载到内存中来

4.bios执行引导程序

5.引导程序会去TFTP去查找配置文件

6.根据配置文件去引导安装系统

7.系统安装过程

3.搭建过程中服务详解

PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能 够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。

3.1TFTP服务

TFTP(简单文件传输协议):内核和引导文件

是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。

3.2 vsftp:安装系统镜像文件获取方式

可以使用http ftp等方式,ftp文件传输的一种。

3.3 syslinux

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。

pxelinux.0 启动pxe pxe可以支持

3.4 DHCP服务

4.pxe 优点

1.规模化:同时装配多台服务器 2.自动化:安装系统、配置各种服务 3.远程实现:不需要光盘、U盘等安装介质

5.操作过程

大概过程

  1. 分配给同一局域网内新加机器的地址(配置文件) dhcp 分配地址 指明tftp 服务器的地址

  2. tftp服务端开启 udp 配置 默认关闭

  3. 安装syslinux 取得 pxelinux.0 文件

  4. 安装vsftpd服务挂载软件安装源(mount /dev/sr0 /var/ftp/centos7)

  5. 将四大文件拷入 (/var/lib/tftpboot )

  • initrd.img 

  • pxelinux.0  (类似grub)

  • pxelinux.cfg/default (手写) 

  • vmlinuz

6.将服务开启,关闭防火墙,selinux

具体操作步骤:

[root@localhost ~]#yum install tftp-server   vsftpd   syslinux  dhcp   -y 
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 12:dhcp-common-4.2.5-58.el7.centos.x86_64 已安装并且是最新版本
软件包 12:dhcp-libs-4.2.5-58.el7.centos.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 dhcp.x86_64.12.4.2.5-58.el7.centos 将被 安装
--> 解决依赖关系完成
​
依赖关系解决
​
=========================================================================
 Package    架构         版本                            源         大小
=========================================================================
正在安装:
 dhcp       x86_64       12:4.2.5-58.el7.centos          abc       513 k
​
事务概要
=========================================================================
安装  1 软件包
​
总下载量:513 k
安装大小:1.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 12:dhcp-4.2.5-58.el7.centos.x86_64                   1/1 
  验证中      : 12:dhcp-4.2.5-58.el7.centos.x86_64                   1/1 
​
已安装:
  dhcp.x86_64 12:4.2.5-58.el7.centos                                     
​
完毕!
​

2.将配置文件模板复制到dhcp目录下

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example                 //配置文件模板在此目录下
#   see dhcpd.conf(5) man page
​
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf      //将模板文件覆盖掉配置文件
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@test2 ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.20.0 netmask 255.255.255.0 {
  range 192.168.20.50 192.168.20.100;
  option routers 192.168.20.90;
#  next-server 192.168.20.90;    #指定tftp的服务器地址
#  filename "pxelinux.0";          #指定启动文件 
}
[root@localhost isolinux]# rpm -ql tftp-server 
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
主要文件:
#/etc/xinetd.d/tftp    //配置文件
#/var/lib/tftpboot    //站点
[root@localhost isolinux]# vim /etc/xinetd.d/tftp 
#14行改成no,启动服务
  1 # default: off
  2 # description: The tftp server serves files using the trivial file transfer \
  3 #       protocol.  The tftp protocol is often used to boot diskless \
  4 #       workstations, download configuration files to network-aware printers, \
  5 #       and to start the installation process for some operating systems.
  6 service tftp
  7 {
  8         socket_type             = dgram
  9         protocol                = udp
 10         wait                    = yes
 11         user                    = root
 12         server                  = /usr/sbin/in.tftpd
 13         server_args             = -s /var/lib/tftpboot
# 14         disable                 = no                       #14行改成no,启动服务
 15         per_source              = 11
 16         cps                     = 100 2
 17         flags                   = IPv4
 18 }
​
[root@localhost isolinux]# rpm -ql syslinux |grep pxelinux.0    //安装完成后找到该文件的地址
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0      //地址
[root@localhost isolinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/    //拷贝到站点文件里
​
[root@localhost centos7]#rpm -ql vsftpd  
/var/ftp
[root@localhost centos7]# mkdir centos7
[root@localhost centos7]# mount /dev/sr0 /var/ftp/centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost centos7]# cd /var/ftp/centos7/
[root@localhost centos7]# ls
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img  pxeboot  TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# cd /var/lib/tftpboot/
[root@test2 tftpboot]# mkdir pxelinux.cfg
[root@test2 tftpboot]# cd pxelinux.cfg/
[root@test2 pxelinux.cfg]# vim default
default linux
prompt 1
​
label  linux
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.20.90/centos7 ks=ftp://192.168.20.90/ks.cfg
​
label linux text
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://192.168.20.90/centos7
​
label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.20.90/centos7
        
[root@test2 tftpboot]# ls
#四大文件
initrd.img  pxelinux.0  pxelinux.cfg/default  vmlinuz
[root@localhost pxeboot]# systemctl stop firewalld.service
[root@localhost pxeboot]# systemctl start dhcpd
[root@localhost pxeboot]# systemctl start tftp
[root@localhost pxeboot]# systemctl start vsftpd
[root@localhost pxeboot]# setenforce 0

6. kickstart 无人值守安装

具体过程:

然后保存到/var/ftp/

客户机内存需2G以上

7 Cobbler的工作原理

  • client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP

  • DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址

  • client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求

  • cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port

  • client裸机通过上面告知的TFTP server地址通信,下载引导文件

  • client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image

  • cobbler server发送请求的kickstart和os iamge

  • client裸机加载kickstart文件

  • client裸机接收os image,安装该os image

7.1 实际操作

安装相关包并启动服务

[root@centos7 ~]#yum install epel-release.noarch -y
[root@centos7 ~]#yum install cobbler dhcp httpd   -y
[root@centos7 ~]#systemctl enable --now cobblerd httpd tftp dhcpd

修改cobbler相关的配置

[root@centos7 ~]#cobbler check
​
​
#生成新密码,默认安装好的系统root密码为cobbler
[root@centos7 ~]#openssl passwd -1 '123123'
$1$1spuisnh$j34LNmyTQWs3l6xKxCZY60
​
​
#根据以上提示,只需要做1,2,8这三项即可,修改下面四行
[root@centos7 ~]#vim /etc/cobbler/settings 
default_password_crypted: "$1$1spuisnh$j34LNmyTQWs3l6xKxCZY60"
next_server:< tftp服务器的 IP 地址>   192.168.91.100
server:<cobbler服务器的 IP 地址>
manage_dhcp:1  #设置为1,表示通过cobbler生成dhcpd.conf配置文件
pxe_just_once: 1 #设置为1,防止重复安装系统
[root@centos7 ~]#systemctl restart cobblerd

实现dhcp服务

#修改dhcp的模版文件下面的行,用来生成dhcp的配置文件
[root@centos7 ~]#vim /etc/cobbler/dhcp.template
subnet 192.168.100.0 netmask 255.255.255.0 {
     option routers             192.168.100.1;
     option domain-name-servers 180.76.76.76,223.6.6.6;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp       192.168.100.1 192.168.100.200;
#自动生成dhcp配置文件并启动
[root@centos7 ~]#cobbler sync

下载启动的相关文件

[root@centos7 ~]#cobbler get-loaders
[root@centos7 ~]#ls /var/lib/cobbler/loaders
​
[root@centos7 ~]#tree /var/lib/tftpboot/
​
[root@centos7 ~]#cobbler sync

导入CentOS系统的安装文件,生成相应的YUM源

[root@centos7 ~]#cobbler import --name=centos-7-x86_64 --path=/mnt --arch=x86_64
​
​
#也可以在导入yum源的同时进行关联自定义的kickstart文件
[root@centos7 ~]#cobbler import --name=centos-7.7-x86_64 --path=/mnt --arch=x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.cfg
​
​
[root@centos7 ~]#du -sh /var/www/cobbler/ks_mirror/*
​
​
#设置默认安装菜单, 这样未装系统的设备会自动从pxe引导启动你需要安装的系统, 不需要再手动接显示器选了
​
[root@centos7 ~]#cobbler system add --name=default --profile=centos-7-x86_64
​
das
nas  只能管理文件
san  可以管理文件系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值