21.3centos7 PXE自动安装操作系统

说明:Preboot Excution Environment 预启动执行环境 PXE(网络自动化安装操作系统)

Preboot Excution Environment 预启动执行环境
Intel公司研发
基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载 映像,并由此支持通过网络启动操作系统
PXE可以引导和安装Windows,linux等多种操作系统

总结:网卡从dhcp服务器获取ip,并获取dhcp服务器配置文件中的pxelinux.0的文件和tftp连接的文件服务器ip地址;
           网卡中集成的tftp客户端软件下载tftp服务器上的pxelinux.0(可以理解为grub),vmlinuz,initramfs;
          之后加载tftp服务器上下载的/var/lib/tftpboot/pxelinux.cfg/default。default中为启动菜单项,其配置和制作光盘启动的菜单内容一样,即把linux  ip=192.168.31.* netmask=255.0.0.0 ks=ks7.cfg写到启动菜单里。
            然后启动菜单根据ks7.cfg应答文件(手动安装时选择的众多选择项被按照一定格式写到ks7.cfg文件中了)设置安装中的选项。而ks7.cfg中的url链接为安装操作系统所需安装包,即链接的dhcp服务器或者其它文件服务器提供下载安装包  
  



PXE安装centos7步骤总结

此实验是一个单独的实验,所有服务都是从新配置,只是ks7.cfg文件是之前21.1半自动化安装centos6,centos7实验2生成的;
此处centos7为一个仅主机模式的网卡(配置ip为192.168.31.7)位于vmnet1仅主机模式的专有网络,基于21.2dhcp服务和PXE在centos7上搭建的dhcp服务完成,都是同一个centos7;

1、安装前准备:
        关闭防火墙和SELINUX,DHCP服务器静态IP
2、安装软件包
        httpd tftp-server dhcp syslinux system-config-kickstart
3、配置文件共享服务:
        systemctl enable httpd
        systemctl start httpd
        mkdir /var/www/html/centos/7
        mount /dev/sr0 /var/www/html/centos/7
4、准备kickstart文件
        /var/www/html/ks/centos7.cfg 注意:权限
5、配置tftp服务
        systemctl enable tftp.socket
        systemctl start tftp.socket

6、配置DHCP服务
        vim /etc/dhcp/dhcpd.conf
        option domain-name "example.com";
        default-lease-time 600;
        max-lease-time 7200;
        subnet 192.168.100.0 netmask 255.255.255.0 {
                range 192.168.100.1 192.168.100.200;
                filename "pxelinux.0";
                next-server 192.168.100.100;
        }
        systemctl enable dhcpd
        systemctl start dhcpd
       
      syslinux提供了pxelinux.0 提供了引导程序,可以理解为grub

7、准备相关文件
        mkdir /var/lib/tftpboot/pxelinux.cfg/
        cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
        cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
        cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default  
        文件列表如下:
        /var/lib/tftpboot/
        ├── initrd.img
        ├── menu.c32
        ├── pxelinux.0
        ├── pxelinux.cfg
        │ └── default
        └── vmlinuz
      上述文件列表所列的都是必须的文件

8、准备启动菜单
        Vim /var/lib/tftpboot/pxelinux.cfg/default
        default menu.c32
        timeout 600
        menu title PXE INSTALL MENU
        label auto
                menu label Auto Install CentOS 7
                kernel vmlinuz
                append initrd=initrd.img ks=http://192.168.100.100/ks/centos7.cfg
        label manual
                menu label Manual Install CentOS 7
                kernel vmlinuz
                append initrd=initrd.img inst.repo=http://192.168.100.100/centos/7
        label local
                menu default
                menu label ^Boot from local drive
                localboot 0xffff



具体步骤:


    1、 关闭selinux,清除防火墙
          [root@centos7:~ ]# yum install httpd tftp-server dhcp syslinux

   
    2、开启dhcp服务
         dhcp服务的67端口
         [root@centos7:~ ]# ss -ntlu
         Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
         udp    UNCONN     0      0                 *:5353                          *:*                  
         udp    UNCONN     0      0                 *:36475                         *:*                  
         udp    UNCONN     0      0                 *:734                           *:*                  
         udp    UNCONN     0      0      192.168.122.1:53                            *:*                  
         udp    UNCONN     0      0                 *:67  
    
         并且在dhcp服务的配置文件中配置好pxelinux.0的文件名和tftp需要连接的服务器地址,如下
         subnet 192.168.31.0 netmask 255.255.255.0 {
          range 192.168.31.100 192.168.31.130;
          option routers 192.168.31.254;
          filename "pxelinux.0";
          server-name "192.168.31.7";                                                                 
         }
         重启dhcpd服务:systemctl restart dhcpd
         设为开机启动:systemctl enable dhcpd
   
    3、开启tftp服务,端口号69
         [root@centos7:~ ]# yum install tftp-server
         [root@centos7:~ ]# 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@centos7:~ ]# ss -nulp

         UNCONN     0      0                   :::69                              :::*          
         users:(("in.tftpd",pid=3845,fd=0),("systemd",pid=1,fd=24))

         [root@centos7:~ ]# cd /var/lib/tftpboot/
         [root@centos7:/var/lib/tftpboot ]# cp /etc/fstab .
         [root@centos7:/var/lib/tftpboot ]#

         [root@centos6 ~ ]#yum info tftp
         Loaded plugins: fastestmirror, refresh-packagekit, security
         Loading mirror speeds from cached hostfile
         https://172.18.0.1/epel/6/%24basharch/repodata/repomd.xml: [Errno 14] PYCURL ERROR 7 - "Failed to connect to 172.18.0.1:   Network is unreachable"
         Trying other mirror.
         Available Packages
         Name        : tftp
         Arch        : x86_64
         Version     : 0.49
         Release     : 8.el6
         Size        : 32 k
         [root@centos6 ~ ]#yum install tftp

         [root@centos6 ~ ]#tftp 192.168.31.7

  
    4、httpd服务
         开启httpd服务,挂载centos7光盘到/var/www/html/centos/7/os/x86_64,并确保浏览器可以打开看到光盘内容。配好yum仓库
         把应答文件ks7.cfg放到/var/www/html/ksdir/目录下,并修改ks7.cfg中的url yum源路径等
         启动httpd服务,并设为开机启动
         systemctl start httpd
         systemctl enable httpd
    
    
   5、syslinux
        查看syslinux内容包含如下两项内容
        [root@centos7:~ ]# rpm -ql syslinux
        /usr/share/syslinux/menu.c32
        /usr/share/syslinux/pxelinux.0

     [root@centos7:/var/lib/tftpboot ]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} .
     [root@centos7:/var/lib/tftpboot ]# ls
      menu.c32  pxelinux.0
     [root@centos7:/var/lib/tftpboot ]# cp /media/isolinux/{vmlinuz,initrd.img} .
     [root@centos7:/var/lib/tftpboot ]# ls
     initrd.img  menu.c32  pxelinux.0  vmlinuz

     [root@centos7:/var/lib/tftpboot ]# mkdir pxelinux.cfg
     [root@centos7:/var/lib/tftpboot ]# cp /media/isolinux/isolinux.cfg pxelinux.cfg/default
     [root@centos7:/var/lib/tftpboot ]# ls
     initrd.img  menu.c32  pxelinux.0  pxelinux.cfg  vmlinuz

6、default
     [root@centos7:/var/lib/tftpboot/pxelinux.cfg ]# vim default
     #default vesamenu.c32
     default menu.c32
     timeout 600

     menu title zhaoliying                                                                           

     label auto
       menu label ^Auto Install CentOS 7
       kernel vmlinuz
       append initrd=initrd.img ks=http://192.168.31.7/ksdir/ks7.cfg

     label menu
       menu label  ^Manual install CentOS 7
       menu default
       kernel vmlinuz
       append initrd=initrd.img inst.repo=http://192.168.31.7/centos/7/os/x86_64/

     label local
       menu label Boot from ^local drive
       localboot 0xffff

7、确认
     [root@centos7:/var/lib/tftpboot ]# tree
     .
     ├── initrd.img
     ├── menu.c32
     ├── pxelinux.0
     ├── pxelinux.cfg
     │   └── default
     └── vmlinuz

     1 directory, 5 files

     1个目录,5个文件,确定后,新建一个虚拟机(如下图),新建完虚拟机一定要确认网络适配器是仅主机模式
      
     
    
    

   
   
   


 

猜你喜欢

转载自blog.csdn.net/csdn_immortal/article/details/81071093