CentOS 7的PXE服务器安装·没有完全成功系列·笔记

这几天学习了如何在虚拟机中安装了一个CentOS 7系统,然后将它作为一个PXE服务器。

那么PXE是什么呢?
PXE(preboot executeenvironment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。它可以自动的帮你安装系统,而不用人工一步步的操作!

操作步骤:

  1. 先测试虚拟机能不能上网:
    ping www.baidu.com

  2. 更新yum仓库源:
    yum repolist

  3. 批量安装dhcpd、tftp、syslinux、wget和vsftpd:
    yum install -y dhcp tftp tftp-server syslinux wget vsftpd

  4. 关闭SELinux和防火墙
    修改/etc/selinux/config
    vim /etc/selinux/configCentOS 7的PXE服务器安装·没有完全成功系列·笔记_第1张图片
    【或者setenforce 0 使得SELINUX=Permissive(暂时性,下次开机后失效)】
    systemctl disable firewalld
    systemctl stop firewalld (关闭防火墙)

  5. 在VMWARE中将虚拟机的网络适配器设置为“桥接模式”
    CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第2张图片

  6. 随便设置个虚拟机IP地址。
    nmcli con show 查看网卡
    nmcli con modi ens33 ipv4.method manual ipv4.addresses 192.168.1.1/24
    #我的网卡接口id是ens33。于是将它的IP设为192.168.1.1。
    nmcli con up ens33
    nmcli con show
    ip a #确认192.168.1.1已经成功设置。

  7. 设置DHCP服务器
    rm /etc/dhcp/dhcpd.conf(删除文件)
    【原先存在有该文件,但无法保证以下复制的配置文件内容格式正确所有先删除原先的文件,在重新创建并复制以下内容】
    Vim /etc/dhcp/dhcpd.conf
    确保配置文件内容如下:

    ddns-update-style interim;
     ignore client-updates;
     authoritative;
     allow booting;
     allow bootp;
     allow unknown-clients;
     
    #A slightly different configuration for an internal subnet.
     subnet 192.168.1.0 netmask 255.255.255.0 
    {
       range 192.168.1.2 192.168.1.253;
       option domain-name-servers 192.168.1.1;
       option domain-name "server1.example.com";
       option routers 192.168.1.1;
       option broadcast-address 192.168.1.255;
       default-lease-time 600;
       max-lease-time 7200;
     
      #PXE SERVER IP
       next-server 192.168.1.1; #  DHCP server ip
       filename "pxelinux.0";
     }

至此,上文的filename所指的pxelinux.0目前还没有部署到位。最终它的位置是/tftpboot/pxelinux.0,但不要在这里使用路径,仅使用这个名称就好。上面的每一行结尾都是一个分号(;)。

  1. 为xinetd配置TFTP服务器,即将tftp服务交给xinetd来管理。
    vim /etc/xinetd.d/tftp
    /etc/xinetd.d/tftp的内容如下:
service tftp
{
     socket_type             = dgram
     protocol                = udp
     wait                    = yes
     user                    = root
     server                  = /usr/sbin/in.tftpd
     server_args             = -s /tftpboot
     disable                 = yes
     per_source              = 11
     cps                     = 100 2
     flags                   = IPv4
 }
  1. 我们要将tftp服务的位置挪到/tftpboot中,将有个程序仍然认为它的路径在/var/lib/tftpboot中,所以,要改回来:
    vim /usr/lib/systemd/system/tftp.service
    将 ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
    修改为:ExecStart=/usr/sbin/in.tftpd -s /tftpboot
    只有这样,才能与/etc/xinetd.d/tftp中的相应内容保持一致。
  2. 设置TFTP服务器网络启动文件。首先要创建一个路径/tftpboot。
    mkdir /tftpboot
    chmod 777 /tftpboot
    将东西复制到/tftpboot中:
    cp -v /usr/share/syslinux/pxelinux.0 /tftpboot
    cp -v /usr/share/syslinux/menu.c32 /tftpboot
    cp -v /usr/share/syslinux/memdisk /tftpboot
    cp -v /usr/share/syslinux/mboot.c32 /tftpboot
    cp -v /usr/share/syslinux/chain.c32 /tftpboot

再创建两个路径:
mkdir /tftpboot/pxelinux.cfg
mkdir /tftpboot/netboot/

  1. 将CentOS的ISO文件发布到FTP的文件夹中。要做到这一点,必须要有一个CentOS 7的ISO文件。我要把它以虚拟光盘的形式挂载到虚拟机中。操作步骤如下图所示:

点击屏幕右下方光盘图标,在短菜单中选择“连接到主机”
在这里插入图片描述
lsblk查看光盘挂载的路径,如sr0 /run/media/root/CentOS 7 x86_64
CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第3张图片
创建一个新文件夹
mkdir -p /var/ftp/pub
将光盘里的内容全部复制到该文件中:
cp -r /run/media/root/‘CentOS 7 x86_64’/* /var/ftp/pub
“CentOS 7 x86_64”要用引号括起来,否则会出错。

  1. 将启动时需要使用的镜像文件拷贝到目录位置:
    cp /var/ftp/pub/images/pxeboot/vmlinuz /tftpboot/netboot/
    cp /var/ftp/pub/images/pxeboot/initrd.img /tftpboot/netboot/
  2. 创建一个kickstart,即无人值守安装文件,名字叫ks.cfg。
    vim /var/ftp/pub/ks.cfg
    其内容如下:
 #platform=x86, AMD64, or Intel EM64T
 #version=DEVEL
 # Firewall configuration
 firewall --disabled
 #Install OS instead of upgrade
 install
 #Use NFS installation media
 url --url="ftp://192.168.1.1/pub/"
 rootpw --plaintext 123456
#root的密码设为123456
 #Use graphical install
 graphical
 firstboot disable
 #System keyboard
 keyboard us
 #System language
 lang en_US
 #SELinux configuration
 selinux disabled
 #Installation logging level
 logging level=info
#System timezone
 timezone Asia/Shanghai
 #System bootloader configuration
 bootloader location=mbr
 clearpart --all --initlabel
 part swap --asprimary --fstype="swap" --size=1024
 part /boot --fstype xfs --size=200
 part pv.01 --size=1 --grow
 volgroup rootvg01 pv.01
 logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow

%packages
 @core
 wget
 %end
 %post
 %end

保存后,用ksvalidator检查一下是否有语法错误。
ksvalidator /var/ftp/pub/ks.cfg

  1. 创建一个pxe菜单
    vim /tftpboot/pxelinux.cfg/default

default的内容如下:

 default menu.c32
 prompt 0
 timeout 30
 MENU TITLE Togogo.net Linux Training

 LABEL centos7_x64
 MENU LABEL CentOS 7 X64
 KERNEL /netboot/vmlinuz
 APPEND initrd=/netboot/initrd.img inst.repo=ftp://192.168.1.1/pub ks=ftp://192.168.1.1/pub/ks.cfg

最后这个APPEND写成一行,中间不要断行

  1. 将以下服务设为开机自动启动:
    systemctl enable dhcpd
    systemctl enable tftp
    systemctl enable vsftpd

重新启动以下服务:
systemctl restart vsftpd
systemctl restart dhcpd
systemctl restart tftp

验证:

在VMware中创建一个新的虚拟机,以充当验证PXE服务器的客户机。将其网络适配器的网络连接设为“桥接模式”。
CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第4张图片
CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第5张图片
CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第6张图片CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第7张图片

结果:
CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第8张图片
没有找到操作系统 ……这就尴尬了
应该是网络的问题,但我不知道应该怎么解决,改了好几个地方的配置文件还是没有用。无奈之下只好恢复快照,重新再搞一遍,在第二遍的时候成功了。都是同样的步骤,但是我还是找出了跟第一遍操作不同的地方,不知道是不是这些地方导致网络的问题:

  1. 第一次时在关闭防火墙之后重启虚拟机,然后设置桥接模式,再设置网卡IP地址。此时无任何反应;但第二次,我时在关闭防火墙和设置完桥接模式后再重启的虚拟机,此时本机的网络已经断开了
    在这里插入图片描述
  2. 第一次操作的时候光盘ISO文件是提前挂好了连接上的;第二次我快照之后并没有及时的连接上光盘。(但这个应该不影响吧。。。)
    然后……
    CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第9张图片
    成功载入 /netboot/vmlinuz 和 /netboot/initrd.img 两个重要文件
    好像成功了:
    CentOS 7的PXE服务器安装·没有完全成功系列·笔记_第10张图片

但我之前做的好像不是这样子的啊!!!虽然是最小化安装,最后也是文本界面,但是我跟着做的是有跳到图形界面里自动安装的,它会自动下一步,我只要等他最后面reboot就好了……自闭了。
记一次失败的安装笔记?。。。

你可能感兴趣的:(CentOS)