配置PXE网络安装服务器实现网络安装CentOS系统

发布时间 2023-12-09 23:46:39作者: 南宫二狗

服务器设置

使用的一台CentOS 7虚拟机,网卡选择桥接模式,IP地址是192.168.199.129。

挂载系统镜像

把要安装的CentOS镜像放到VMware的CD驱动器里。如图所示。
/home/wd/Pictures/截图/截图 2023-12-09 21-28-28.pngenter description here

在虚拟里创建挂载点,并挂载ISO镜像。

mkdir -p /media/mydvd/
mount /dev/cdrom /media/mydvd

安装服务器软件

sudo yum install -y dhcp tftp-server vsftpd syslinux xinetd

编辑虚拟机网络的配置文件

 vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改以下内容:

BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.199.129
PREFIX=255.255.255.0
GATEWAY=192.168.199.1
DNS1=192.168.199.1

目的是防止这个作为服务器的机器IP地址发生变化。

配置dhcp服务器

vi /etc/dhcp/dhcpd.conf,在文件后面增加以下内容:

allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.199.0 netmask 255.255.255.0 {
  option subnet-mask 255.255.255.0;
  option domain-name-servers 192.168.199.129;
  option time-offset -10000;
  option netbios-node-type 2;
  range dynamic-bootp 192.168.199.1 192.168.199.254;
  default-lease-time 21600;
  max-lease-time 43200;
  filename "pxelinux.0";
  next-server 192.168.199.129;
}

重启dhcp服务并加入开机启动。

systemctl restart dhcpd
systemctl enable dhcpd

配置tftp服务

vi /etc/xinetd.d/tftp,把disable=yes改为disable=no
然后重启服务并加入开机启动。

systemctl restart xinetd
systemctl enable xinetd

设置防火墙开放tftp服务端口

firewall-cmd --permanent --add-port=69/udp
firewall-cmd --reload

设置syslinux

cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 ./
cp /media/mydvd/images/pxeboot/{vmlinuz,initrd.img} ./
cp /media/mydvd/isolinux/{vesamenu.c32,boot.msg} ./
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /media/mydvd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

编辑配置文件:

vi /var/lib/tftpboot/pxelinux.cfg/default 

将第一行的default vesamenu.c32修改为default vesamenu.c32
将第64行的append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
修改为:

append initrd=initrd.img inst.stage2=ftp://192.168.199.129 ks=ftp://192.168.199.129/pub/ks.cfg quiet

配置vsftpd服务

把挂载的镜像中的文件都复制到vsftpd服务程序的工作目录中

cp -r /media/mydvd/* /var/ftp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
setsebool -P ftpd_connect_all_unreserved=on
systemctl start vsftpd
systemctl enable vsftpd

配置kickstart

cp /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg 

vi /var/ftp/pub/ks.cfg,把第5行的cdrom修改为

 url --url=ftp://192.168.199.129

第25行显示的是时区,我的这里是

timezone Asia/Shanghai --isUtc

我把它改成了

 timezone Asia/Shanghai --isUtc --nontp

也就是不使用ntp服务。如果这里的时区不是上海,应修改成上海。
第32行左右,清除分区的方式,我这里是

clearpart --none --initlabel

应该是不清除的意思,修改成了

clearpart --all --initlabel

应该是清除所有分区的意思。这里要再做做实验,观察一下。
通过在system-config-kickstart图形工具中测试不同的选项,发现它的意思是是否清除现有的分区,--all是清除所有分区,--linux是清除所有已有的linux分区,--none是不清除分区,也就保留已有的分区。这个参数和安装系统时新建分区操作没有关系。

然后重启这个虚拟机。

通过网络安装系统

在VMware中新建一个虚拟机,要注意两点:

  1. 网卡的模式要选对,使新的虚拟机在启动时能够和服务器虚拟机通信,我两个虚拟机都是桥接模式。
  2. 新的虚拟机内存要大一点。我一开始使用的是1G,结果报错(后面有截图)。我后来改成了10G,可以正常安装。

安装的时候显示已经选择了gnome桌面,并且已经设置了root密码,并且要创建用户wd,这个用户是我作为服务器的那个虚拟机里的用户。所以我猜想,root用户的密码以及wd用户的密码应该和我服务器的一样。

遇到的问题

dhcp.conf配置错误

出现的问题是:
enter description here

因为我在/etc/dhcp/dhcpd.conf中把filename配成了pexlinux.0,名字写错了,改成pxelinux.0,然后重启dhcpd服务就可以了。

内存太小

/home/wd/Pictures/截图/截图 2023-12-09 22-29-11.pngenter description here

因为我在/var/lib/tftpboot/pxelinux.cfg/default中的第64行忘了按照上面说的进行修改了。重新按照上面说的进行修改。然后重启这个新的虚拟机,重启安装就可以了。

enter description here
enter description here

网上说内存没给够,修改一下内存,给它10G,重启安装。就可以了。