Linux网络---PXE网络装机与无人值守

前言

一:搭建PXE远程安装服务

1.1:搭建PXE远程安装服务器

1.1.1:服务器的批量部署

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

1.1.2:关于PXE网络

  • PXE,Pre-boot eXcution Environment

预启动执行环境,在操作系统之前运行

可用于远程安装,构建无盘工作站

  • 服务端

运行DHCP服务,用来分配地址,定位引导程序

引导程序:微代码,存放在TFTP服务器中

运行TFTP服务器,提供引导程序下载

TFTP服务器时UDP协议,端口号69

镜像文件存放在:vsftpd,TCP协议,端口号20,21

  • 客户端

网卡支持PXE协议

主板支持网络启动

1.1.3:配置PXE装机服务器

  • 基本部署过程
  1. 准备centos 7 安装源(yum仓库)

    [root@localhost ~]#yum -y install vsftpd
    [root@localhost ~]#mkdir /var/ftp/centos7
    [root@localhost ~]#cp -rf /media/cdrom/* /var/ftp/cdentos7/
    [root@localhost ~]#systemctl start vsftpd
    
  2. 启动TFTP服务

    1. 安装tftp-server软件包,启用tftp服务

    2. 配置文件位于/etc/xinetd.d/tftp

    3. tftp 站点 /var/lib/tftpboot

      [root@localhost ~]#yum -y install tftp-server
      [root@localhost ~]#vi /etc/xinetd.d/tftp
      disable   = no      '开启tftp服务'
      [root@localhost ~]#systemctl start tftp
      [root@localhost ~]#systemctl enable tftp
      
  3. 提供linux内核,pxe引导程序

    [root@localhost ~]# cd /media/cdrom/images/pxeboot '位于系统镜像文件夹images/pxeboot下'
    [root@localhost ~]# cp vmlinuz initrd.img /var/lib/tftpboot
    [root@localhost ~]yum -y install syslinux
    [root@localhost ~]cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
    
  4. 启动DHCP服务,用来分配地址,指导引导程序位置

    [root@localhost ~]#yum install dhcp -y
    [root@localhost ~]# vim /etc/dhcp/dhcpd.conf
    [root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
    [root@localhost ~]# vim /etc/dhcp/dhcpd.conf
    
     subnet 192.168.100.0 netmask 255.255.255.0 {
              range 192.168.100.20 192.168.100.30;
              option routers 192.168.100.100;
              option domain-name-servers 6.6.6.6;
              next-server 192.168.100.100;		'指定TFTP服务器地址'
              filename "pxelinux.0";		'filename:指定要下载的引导程序文件'
      }
    [root@localhost ~]#systemctl start dhcpd
    [root@localhost ~]#systemctl enable dhcpd
    
  5. 配置启动菜单

    [root@server tftpboot]# cd /var/lib/tftpboot
    [root@server tftpboot]# mkdir pxelinux.cfg         '创建pxelinux配置文件'
    [root@server tftpboot]# cd pxelinux.cfg/
    [root@server pxelinux.cfg]# vim default            '创建默认配置文件'
    [root@server pxelinux.cfg]# vim default
    
    default auto
    prompt 1
    
    label auto
      kernel vmlinuz
      append initrd=initrd.img method=ftp://192.168.100.100/centos7
    
    label linux text
      kernel vmlinuz
      append text initrd=initrd.img method=ftp://192.168.100.100/centos7
    
    label linux rescue
      kernel vmlinuz
      append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
    
    
  • 总结:TFTP服务及引导文件
  1. 安装tftp-server软件包,启动tftp服务
  2. 准备内核文件vmlinuz,初始化镜像initrd.img
  3. 准备引导程序文件pxelinux.0(依赖于syslinux)
  4. DHCP服务的PXE设置

1.2:PXE自动部署步骤与总结

  • 1.设置双网卡,

  • 2.设置DHCP,用来自动获取IP地址,引导定位TFTP位置

next-server TFTP IP

filename “pxelinux.0”

  • 3.设置TFTP(先安装tftp-server并设置)

1.安装syslinux(包含pxelinux.0)并设置,引导程序
2.压缩内核 vmlinuz (在iso镜像文件中获取)
3.初始化文件 initrd.img (iso镜像文件中获取)
4.默认配置文件 default (自建三个模式,默认时auto,指引FTP镜像系统文件位置)

  • 总结:

    DHCP 让客户端获取IP地址,能主动联网PXE服务器 配置中指向TFTP

    TFTP 简单文件系统 UDP 69 端口 快速加载引导程序,引导程序的容量小,默认配置文件指向FTP镜像位置

    FTP 文件系统 TCP ,21连接服务,20传输数据,系统镜像存放

    TFTP 四大文件

    • default 需要先创建pxelinux.cfg目录,引导配置文件默认被加载

    • vmlinuz 压缩内核 在default 中被定义

    • initrd.img 初始化镜像文件,在default被定义第二个加载

    • pxelinux.0 引导程序 需要安装syslinux包才会有,在dhcp配置中定义

1.3:验证PXE网络安装

为客户机安装系统

调整BIOS设置,以便从网络引导
自动获取IP地址,并指定centos7安装源
其余过程与本地安装相同
环境

使用VMware软件中centos 7系统

打开一台centos 7

'第一步,在服务器设置双网卡'
在centos 7添加一个网络适配器,并设置为仅主机模式。		'用来装机,做服务器的网卡'
原本的网络适配器保持NAT模式不变。		'用来安装yum包'  
两个网卡可以不在同一网段,正常只用一个仅主机模式网卡即可,此时是为了yum安装,多用一块vm8网卡
'第二步,设置添加的网卡IP地址,关闭防火墙'
[root@server lpf]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.100
PREFIX=24
注意双网卡36的uuid要删掉
[root@server lpf]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e927c915-1f32-4f8e-b4d4-77c7a3ed4823
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.110
PREFIX=24
GATEWAY=192.168.100.2
DNS1=8.8.8.8

'第三步,设置DHCP服务'
[root@localhost ~]#yum install dhcp* -y
[root@server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes

[root@server ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.100 192.168.100.200;
  option domain-name-servers 8.8.8.8;
  option routers 192.168.100.100;
  next-server 192.168.100.100;              '指定TFTP服务器地址'
  filename "pxelinux.0";             'filename:指定要下载的引导程序文件'
}

'第四步:设置TFTP--配置安装tftp-server'
[root@server ~]# yum install -y syslinux 
[root@server ~]# yum install tftp-server -y

[root@server ~]# vim /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

'第五步:安装并设置syslinux'
[root@server ~]# 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
[root@server ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@server ~]# vim /usr/sbin/in.tftpd
[root@server ~]# vim /etc/xinetd.d/tftp
[root@server ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# ll
总用量 28
-rw-r--r--. 1 root root 26759 7月  13 17:41 pxelinux.0

[root@server tftpboot]# yum install -y vsftpd
'第六步,在镜像中复制出文件'
[root@server yum.repos.d]# cd /var/ftp
[root@server ftp]# ls
pub
[root@server ftp]# mkdir centos7
[root@server ftp]# mount /dev/sr0 /var/ftp/centos7
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server ftp]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda3      xfs       295G  4.2G  291G    2% /
devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs          tmpfs     1.9G   13M  1.9G    1% /run
tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1      xfs      1014M  174M  841M   18% /boot
tmpfs          tmpfs     378M  4.0K  378M    1% /run/user/42
tmpfs          tmpfs     378M   36K  378M    1% /run/user/1000
tmpfs          tmpfs     378M     0  378M    0% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /var/ftp/centos7

mark

'第六步,在镜像中复制出文件'
[root@server ftp]# cd centos7/images
[root@server images]# ll
总用量 8707
-rw-r--r--. 1 root root 8912896 11月 26 2018 efiboot.img
drwxr-xr-x. 2 root root    2048 11月 26 2018 pxeboot
-r--r--r--. 1 root root     442 11月 26 2018 TRANS.TBL
[root@server images]# cd pxeboot
[root@server pxeboot]# pwd
/var/ftp/centos7/images/pxeboot
[root@server pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz
[root@server pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@server pxeboot]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz

'第七步,设置默认配置文件'
[root@server tftpboot]# mkdir pxelinux.cfg         '创建pxelinux配置文件'
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# vim default            '创建默认配置文件'
[root@server pxelinux.cfg]# vim default

default auto
prompt 1

label auto
  kernel vmlinuz
  append initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux text
  kernel vmlinuz
  append text initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
  kernel vmlinuz
  append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

[root@server pxelinux.cfg]# iptables -F
[root@server pxelinux.cfg]# setenforce 0
[root@server pxelinux.cfg]# systemctl start dhcpd
[root@server pxelinux.cfg]# systemctl start tftp
[root@server pxelinux.cfg]# systemctl start vsftpd
[root@server pxelinux.cfg]# netstat -ntap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      9894/X              
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      9748/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9310/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      9308/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      9706/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      12115/sshd: root@pt 
tcp        0      0 192.168.100.110:22      192.168.100.1:59737     ESTABLISHED 12115/sshd: root@pt 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::6000                 :::*                    LISTEN      9894/X              
tcp6       0      0 :::21                   :::*                    LISTEN      13253/vsftpd        
tcp6       0      0 :::22                   :::*                    LISTEN      9310/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      9308/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      9706/master         
tcp6       0      0 ::1:6010                :::*                    LISTEN      12115/sshd: root@pt 
[root@server pxelinux.cfg]# netstat -nuap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           8602/avahi-daemon:  
udp        0      0 192.168.122.1:53        0.0.0.0:*                           9748/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           13213/dhcpd         
udp        0      0 0.0.0.0:67              0.0.0.0:*                           9748/dnsmasq        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
udp        0      0 0.0.0.0:660             0.0.0.0:*                           8542/rpcbind        
udp        0      0 0.0.0.0:41765           0.0.0.0:*                           8602/avahi-daemon:  
udp6       0      0 :::69                   :::*                                1/systemd           
udp6       0      0 :::111                  :::*                                1/systemd           
udp6       0      0 :::660                  :::*                                8542/rpcbind   

第八步,开启虚拟机,选择

mark

mark

二:实现kickstart无人值守安装

2.1:装备安装应答文件

  • kickstart无人值守技术

    • 创建应答文件,预先定义好各种安装设置
    • 免去交互设置过程,从而实现全自动化安装
    • 通过添加%post脚本,完成安装后的各种配置操作
  • 应答文件的来源

    • 编辑CentOS7 系统中现有的应答文件

      /root/anaconda-ks.cfg

    • 使用system-config-kickstart 工具创建新的应答文件

      需要安装system-config-kickstart软件包

2.2:实现批量自动装机

[root@localhost ~]# yum install system-config-kickstart -y
'安装kickstart工具'

mark

mark

mark

mark

这一步要选择第一个安装引导程序

mark

mark

mark

mark

mark

mark

mark

mark

mark

mark

mark

[root@server ~]# cd /var/ftp
[root@server ftp]# ls
centos7  ks.cfg  pub
[root@server ftp]# cd
[root@server ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  下载  公共  图片  文档  桌面  模板  视频  音乐
[root@server ~]# vim anaconda-ks.cfg 
    ...'复制以下内容'
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools

%end
[root@server ~]# vim /var/ftp/ks.cfg 	'复制的粘贴到此'

[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# ls
default
[root@server pxelinux.cfg]# vim default
..
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cf
g '在原本此段内容后面输入ks=ftp://192.168.100.100/ks.cf
g'

[root@server pxelinux.cfg]# systemctl restart dhcpd	'重启服务'
[root@server pxelinux.cfg]# systemctl restart tftp
[root@server pxelinux.cfg]# systemctl restart vsftpd

mark
图示正在安装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值