PXE+Kickstart实现无人值守批量安装Linux

PXE启动过程介绍

PXE(Pre-boot Execution Environment,预启动执行环境)是一个网络协议,使计算机可以通过网络启动,协议分为client和server端,PXE client在网卡得ROM中。

在开机的时候,BIOS把PXE client导入内存中执行,PXE client在自检完成后,以广播的形式发送一个请求,

DHCP服务器接收到了这个请求会进行回应,给客户端分配ip地址,并将tftp服务器的地址和需要的开机引导程序文件名字(linux为pxelinux.0)告诉给客户端,

然后客户端从tftp获取开机引导程序文件和启动菜单配置文件(/pxelinux.cfg/default),并将引导程序放入内存中执行,并在读取default文件后根据其要求加载menu.c32 or vesamenu.c32文件,向用户提供选择界面,用户选择自动安装后,继续加载vmlinuz内核文件及initrd.img镜像文件,

最后加载kickstart文件,计算机自动运行和读取kickstart file,定位软件包安装树(FTP、NFS、HTTP),软件包安装树可以由光盘或网络提供。,从vsftp或httpd或nas中获取真正的镜像文件和ks文件,并根据ks文件的配置安装。

Kickstart介绍

KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

PXE+kickstart无人值守自动化安装过程

机器内存一定要在2G或以上才行

dhcp

安装dhcp:

[root@centos777 ~]# yum install -y dhcp

修改dhcp配置文件:

[root@centos777 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y

然后将配置文件修改为如下:

[root@centos777 ~]# cat /etc/dhcp/dhcpd.conf

subnet 192.168.116.0 netmask 255.255.255.0 {

  range 192.168.116.55 192.168.116.77;

  option subnet-mask 255.255.255.0;

  option routers 192.168.116.2;

  option broadcast-address 192.168.116.255;

  default-lease-time 600;

  max-lease-time 7200;

  next-server 192.168.116.10;

  filename "/pxelinux.0";

}

红色部分是指定tftp服务器的地址和引导程序的名字

查看dhcp启动状态:

[root@centos777 ~]# netstat -nupl | grep dhcp

udp        0      0 0.0.0.0:67              0.0.0.0:*                           4921/dhcpd

创建一个新的虚拟机启动测试:

wps1

已经可以获取到ip地址,说明dhcp配置成功。

tftp

安装tftp:

[root@centos777 ~]# yum install -y tftp-server

配置tftp

tftp并不需要配置,更多的是将需要的文件放入tftp的目录中:

获取pxelinux.0引导程序

安装syslinux:

[root@centos777 ~]# yum install -y syslinux

将syslinux中的pxelinux.0放入tftp目录中:

[root@centos777 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@centos777 ~]# ll /var/lib/tftpboot/

total 28

-rw-r--r-- 1 root root 26759 Nov 26 16:18 pxelinux.0

添加pxelinux.cfg/default,即引导程序配置文件:

挂载镜像:

[root@centos777 ~]# mount /dev/cdrom /mnt/cdrom/

[root@centos777 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg

[root@centos777 ~]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

[root@centos777 pxelinux.cfg]# cp -a /mnt/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/

[root@centos777 pxelinux.cfg]# cp -a /mnt/cdrom/isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/

修改pxelinux.cfg/default配置文件

将其中部分修改:

label linux

  menu label ^Install CentOS 7

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet

修改为如下:

label linux

  menu label ^Install CentOS 7

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=http://192.168.116.10/centos7/ ks=http://192.168.116.10/centos7/ks.cfg quiet

还要将首行的default的参数值修改为linux,表示在安装选择界面的时候,自动选择安装,不用手动选择。

上面的网址是之后配置的http的资源地址,表示是从这个网络地址去寻找安装的资源。

httpd

安装httpd

Yum install -y httpd

配置http

由于httpd的默认位置是/var/www/html,所以,将光盘的内容拷贝到这个文件夹下:

Cp -a /mnt/cdrom /var/www/centos7

这样所有的资源就在centos7下了,在网页上来查看;

wps2

这样,安装程序就可以通过网络地址访问安装资源。

记得修改/var/www的权限,否则会不能读取,chmod -R 755 /var/www/

配置ks文件

在每个机器安装好系统之后,在/root下都会有一个anaconda-ks.cfg文件,这个就是在本机上安装过程中的ks文件,如果你安装的客户端都是同样的配置的话,就可以直接拿来用。

将其拷贝到/var/www/cnetos7/下,改名为ks.cfg,然后修改ks文件,将cdrom部分修改为url  --url=http://192.168.116.10/centos7,表示安装的时候,一些资源在这个路径下寻找。

启动一个空白虚拟机,测试接口,有问题仔细查看报错信息。

posted @ 2020-12-01 17:09  NewBird001  阅读(108)  评论(0)    收藏  举报