linux配置PXE+DHCP批量安装操作系统

PXE(preboot execute environment,预启动执行环境)
如果只有一两台电脑要装系统,我们可以使用光盘或者U盘装系统,假如有成百上千台电脑需要装操作系统,如果还用光盘U盘的方式去安装,那是非常非常麻烦的,但是还好有PXE启动,配合kickstart就可以实现通过网络来给众多电脑装操作系统了。

一、配置PXE

1.配置yum源,配置dhcp服务 客户端开机后没有IP,请求服务端,dhcp服务器分配给客户端IP,之前的章节都有关于yum源以及dhcp的章节,这里不再做解释。
2.systemctl stop firewalld.service 关闭火墙,防止客户端访问不到服务器的文件`
3.yum install syslinux tftp-server -y 安装tftp-server提供tftp服务,为pxe客户端提供文件。安装syslinux是为了使用pxelinux.0文件。

[root@pxe ~]# systemctl stop firewalld.service
[root@pxe ~]# yum install syslinux tftp-server.x86_64 -y

4.cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 把pxelinux.0通过tftp共享出来,以便客户端可以读取此文件,pxelinux.0引导文件引导vmlinux和initrd两个启动文件。
5.vim /etc/xinetd.d/tftp 将disable设置为no,允许tftp服务开启 xinetd是tftp的守护文件 要开启tftp服务,需要xinetd同意,rhel7.0之后的版本可以直接重启tftp服务,rhel7.0之前的版本需要先设置xinetd然后重启xinetd服务。
6.systemctl restart xinetd.service 重启xinetd服务。可以通过chkconfig命令查看tftp是否开启
7.vim /etc/dhcp/dhcpd.conf 修改dhcp的配置文件,因为客户端需要通过dhcp服务将服务器的pxelinux.0共享来读取这个文件
30 subnet 172.25.254.0 netmask 255.255.255.0 {
31 range 172.25.254.60 172.25.254.80;
32 option routers 172.25.254.108;
33 next-server 172.25.254.108; tftp所在的服务器的IP
34 filename “pxelinux.0”; 共享文件的名称
35 }
8.systemctl restart dhcpd.service

[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe ~]# vim /etc/xinetd.d/tftp 
[root@pxe ~]# systemctl restart xinetd.service 
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf 
[root@pxe ~]# tail -n 5 /etc/dhcp/dhcpd.conf 
  range 192.168.1.50 192.168.1.80;
  option routers 192.168.1.120;
  next-server 192.168.1.120;
  filename "pxelinux.0";
}
[root@pxe ~]# systemctl restart dhcpd.service 

9.将真实主机的镜像挂载到/mnt下,为了后面拷文件

[root@foundation75 Desktop]# mount rhel-server-7.3-x86_64-dvd.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only
[root@foundation75 Desktop]# df
Filesystem                         1K-blocks     Used Available Use% Mounted on
..........                            ......................................
/dev/loop0                           3704296  3704296         0 100% /mnt
[root@foundation75 Desktop]# cd /mnt
[root@foundation75 mnt]# ls
addons  EULA  images    LiveOS      Packages       repodata                 RPM-GPG-KEY-redhat-release
EFI     GPL   isolinux  media.repo  release-notes  RPM-GPG-KEY-redhat-beta  TRANS.TBL
[root@foundation75 mnt]# cd isolinux/      这个目录下的文件都是需要用到的
[root@foundation75 isolinux]# ls
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL    vesamenu.c32
boot.msg  initrd.img  isolinux.cfg  splash.png  upgrade.img  vmlinuz

10.cd /var/lib/tftpboot/ mkdir pxelinux.cfg 按照提示文件(/usr/share/doc/syslinux-4.05/pxelinux.txt)在tftp服务的共享目录下创建此目录

[root@pxe ~]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# mkdir pxelinux.cfg

11.按照提示文件:将镜像的文件isolinux.cfg拷贝到/var/lib/tftpboot/pxelinux.cfg/下,并且重命名为default mv isolinux.cfg default,把镜像的所有文件拷到/var/lib/tftpboot/下

[root@pxe tftpboot]# cd pxelinux.cfg/
[root@pxe pxelinux.cfg]# scp [email protected]:/mnt/isolinux/isolinux.cfg .
The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.
ECDSA key fingerprint is c4:d7:0d:5e:96:29:ab:dc:47:77:5a:cf:3e:ce:2c:cd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.20' (ECDSA) to the list of known hosts.
[email protected]'s password: 
isolinux.cfg                                100% 3166     3.1KB/s   00:00    
[root@pxe pxelinux.cfg]# ls
isolinux.cfg
[root@pxe pxelinux.cfg]# mv isolinux.cfg default
[root@pxe pxelinux.cfg]# ls
default
[root@pxe pxelinux.cfg]# cd ..
[root@pxe tftpboot]# scp [email protected]:/mnt/isolinux/* .
[email protected]'s password: 
boot.cat                                    100% 2048     2.0KB/s   00:00    
boot.msg                                    100%   84     0.1KB/s   00:00    
grub.conf                                   100%  321     0.3KB/s   00:00    
initrd.img                                  100%   43MB  42.6MB/s   00:01    
isolinux.bin                                100%   24KB  24.0KB/s   00:00    
isolinux.cfg                                100% 3166     3.1KB/s   00:00    
memtest                                     100%  186KB 186.4KB/s   00:00    
splash.png                                  100%  186     0.2KB/s   00:00    
TRANS.TBL                                   100% 2438     2.4KB/s   00:00    
upgrade.img                                 100%   48MB  48.0MB/s   00:00    
vesamenu.c32                                100%  150KB 149.5KB/s   00:00    
vmlinuz                                     100% 5265KB   5.1MB/s   00:00    
[root@pxe tftpboot]# ls
boot.cat   initrd.img    memtest       splash.png   vesamenu.c32
boot.msg   isolinux.bin  pxelinux.0    TRANS.TBL    vmlinuz
grub.conf  isolinux.cfg  pxelinux.cfg  upgrade.img

12.vim default 修改default文件内容,当客户端进入预启动界面选择安装选项后,实际上界面什么也看不到,依然是一团黑,但这并不是代表没有操作,只是隐藏了显示的内容,如果想要显示,只需进入此文件删掉64行的quiet即可

 61 label linux
 62   menu label ^Install Red Hat Enterprise Linux 7.3
 63   kernel vmlinuz
 64   append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.3\x20Server.x86_64
 65 

客户端:
打开虚拟机管理:virt-manager
以server虚拟机作为例子,将server虚拟机的引导选项设置为网络引导的优先级最高,然后重启虚拟机就可以看到效果。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

二、批量安装操作系统

前面已经做了PXE了,然后只需设置默认选项为install选项,配合kickstart就可以自动批量操作系统了,如果觉得预安装的选择界面等待时间过长,可以将时间改短。如果觉得背景不美观,也可以换背景图片。
1.修改默认选项:

[root@pxe pxelinux.cfg]# ls
default
[root@pxe pxelinux.cfg]# pwd
/var/lib/tftpboot/pxelinux.cfg
[root@pxe pxelinux.cfg]# vim default 

将68行的menu default移动到install的选项,即移动到63行,这样本来默认选项为检测后安装变成了第一个直接安装,跟改后的default61-70行的内容为:

扫描二维码关注公众号,回复: 4537159 查看本文章
61 label linux
 62   menu label ^Install Red Hat Enterprise Linux 7.3    预安装选项第一个
 63   menu default
 64   kernel vmlinuz
 65   append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.3\x20Server.x86_64
 66 
 67 label check
 68   menu label Test this ^media & install Red Hat Enterprise Linux 7.3  预安装选项第二个
 69   kernel vmlinuz
 70   append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.3\x20Server.x86_64     rd.live.check quiet

2.修改等待时间
default文件的第二行表示的是修改等待时间10代表一秒,默认600,也就是60秒。这里我更改为5秒,也就是50。

  2 timeout 50

3.修改背景图片

default文件的第10行表示背景图片,可以自行修改,但需要格式正确。

 10 menu background splash.png

4 、配置kickstart
要配置kickstart,首先还得装http服务,需要把生成的ks.cfg脚本放到共享目录下,让客户端可以执行。然后安装kickstart

[root@pxe tftpboot]# yum install httpd -y
[root@pxe tftpboot]# systemctl start httpd
[root@pxe tftpboot]# yum install system-config-kickstart.noarch -y
[root@pxe ~]# system-config-kickstart     如果是远程连接,需要加-X连接到图形化界面

这时会进入kickstart的配置界面,这里的配置看以前的kickstart章节,这里不再重复。配置完成后将文件保存到/var/www/html/下

[root@pxe ~]# cd /var/www/html/
[root@pxe html]# ls
ks.cfg

在图形化界面并不能完全配置好,因此,还需要修改ks.cfg文件

11 timezone Asia/Shanghai
38 %packages
 39 @base                                  基础软件包
 40 @core                                  核心软件
 41 @fonts                                 字形字体
 42 @gnome-desktop                         桌面
 43 @input-methods                         输入法
 44 @x11
 45 vnc                                    vnc
 46 lftp                                   lftp服务      
 47 %end
 48 
 49 %post
 50 cat > /etc/yum.repo.d/yum.repo << EOF

配置完kickstart之后当然还需要将kickstart和PXE联系起来

[root@pxe html]# cd /var/lib/tftpboot/pxelinux.cfg/
[root@pxe pxelinux.cfg]# ls
default
[root@pxe pxelinux.cfg]# vim default 

 65   append initrd=initrd.img repo=http://192.168.1.20/mnt ks=http://192.168.1.120/ks.cfg
                               repo表示yum源                ks表示ks.cfg脚本所在位置

重启服务

[root@pxe pxelinux.cfg]# systemctl restart dhcpd.service 
[root@pxe pxelinux.cfg]# systemctl restart httpd.service 

打开虚拟机管理器,创建一个新的虚拟机,用PXE创建
在这里插入图片描述
在这里插入图片描述
后面都是默认。
在这里插入图片描述
当出来上方这个图片时就表示自动批量安装操作系统成功了。

猜你喜欢

转载自blog.csdn.net/lm236236/article/details/84898149
今日推荐