PXE无人值守批量安装系统

PXE无人值守批量安装系统 

作者:达内大数据讲师Alex Romeo

更新日期:2018年2月24  

实现思路、方法:FTP+TFTP+DHCP+Kickstart+PXE 

原版(官方)镜像安装完成以后,将系统做成gho系统备份镜像文件。

通过网络将gho系统备份镜像分别利用网卡的Mac地址进行ip地址的分配,再分发。

 

概括:从网络引导系统的做法可以不必从硬盘、软盘或者 CDROM 光盘,而是完全通过网络来引导一台计算机。这对于安装来说很方便,因为它意味着你可以坐在桌子旁边,不必走到机器那里插入 CDROM 光盘或者软盘,就可以从网络上引导位于别处的一台机器。 

PXE 的作用就像是在网卡上 ROM 里的一小小操作系统,它通过一个标准 API 把自已的网络引导功能提供给系统的 BIOS,就可以通过网络启动 linuxPXE 网络引导过程:一台主机广播一个设置了 PXE 选项的 DHCP“发现”请求,然后一台 DHCP 服务器用一个包含有 PXE 选项的 DHCP 包来响应它(引导服务器的 IP 地址和引导文件的名字)。客户机通过 TFTP 下载它的引导文件,然后执行这个引导文件。 

用于执行自动安装的工具叫做 kickstart, system-config-kickstart 工具生成 kickstart 的配置文件 ks.cfg.

实验环境:准备两台虚拟机

一台作为测试环境(CentOSIP 192.168.10.1

另一台作为 CentOS 被安装端,设置网络引导安装。安装所需要的服务及修改相应配置文件: 

1. yum 来安装所需要的软件包,先来搭建 yum 光盘源: 

[root@test1 ~]# mount /dev/cdrom /mnt   # 先检查根目录中是否有mnt目录

/etc/yum.repos.d 目录下创建一个以.repo 结尾的文件: 

[root@test1 ~]# vi /etc/yum.repos.d/server.repo

配置内容如下: 

 

[base]

name=base

baseurl=file:///mnt/      #(部分系统可能需要使用file:///mnt/server 的路径)

enabled=1

gpgcheck=0

# 备份后,删除/etc/yum.repos.d/下的其他文件:rm -rf C* e*

2.安装 ftp 服务以及开启服务,设置为开机自动启动。(yum install vsftpd tftp-server dhcp tftp

–y)此命令可一次性安装需要的服务,建议一步一步来!

[root@test1 ~]# yum install vsftpd  –y

 

如果出现上图的错误,原因在于server.repo文件编辑错误,再次确定文件内容的正确性。

如果出现vsftpd-2.2.2-11.el6_4.1.x86_64: failure: Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm from base: [Errno 256] No more mirrors to try.”的情况,先检查是光盘是否挂在至/mnt下。如果已挂在还依然提示该错误,执行命令“yum clean all”命令。

[root@test1 ~]# /etc/init.d/vsftpd start  service vsftpd start

[root@test1 ~]# chkconfig vsftpd on

3.安装 TFTP,修改 tftp 配置文件及开启服务 

[root@test1 ~]# yum install tftp  –y

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

 

vim /etc/xinetd.d/tftp

修改配置文件里面的 1314  

13. –s /tftpboot

14. no

接着重新启动 xinetd 服务,然后查看服务端口是否打开。 

[root@test1 ~]# /etc/init.d/xinetd restart 或者service xinetd restart

 

出现以上的结果是正确的现象,原因在于一开始xinetd服务就是关闭的,所以停止xinetd提示失败的字样

[root@root yum.repos.d]# lsof -i:69

 

OKTFTP 服务正常启动。Xinetd 服务本来就是开机启动的,所以这里我们不再需要设置。 

(注:xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet服务)

4.安装 dhcp,修改配置文件及开启服务: 

[root@test1 ~]# yum install dhcp  –y

[root@test1 ~]#vim /etc/dhcp/dhcpd.conf

910 行是网络引导需要的配置,必须要有的。 

 

ddns-update-style interim;

ignore client-updates;

# 注意网段需要相同。否则无法使用 

subnet 192.168.10.0 netmask 255.255.255.0 {     

  # 与服务器IP地址相同

   option routers 192.168.10.1;

  # IP默认租约时间

default-lease-time 21600;  

  #IP最大租约时间

max-lease-time 43200;

#IP租约地址池,这里要注意网段一定相同,否则起不来DHCP服务

range 192.168.10.10  192.168.10.100;   

option subnet-mask 255.255.255.0;

next-server 192.168.10.1;  # 与服务器IP地址相同

filename "pxelinux.0";

}

# !!!复制内容请自行修改缩进!!!(缩进最好使用空格键,缩进前使用2个或者4个空格字符。)                           

 [root@test1 ~]# /etc/init.d/dhcpd start 或者service dhcpd start    # 启动 DHCP

[root@test1 ~]# chkconfig dhcpd on   #设置开机自启

# 可能会存在启动失败的情况!!

如果是虚拟机,请查看配置信息是否与当前网段匹配。

如果启动DHCP服务的时候提示Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file”

 修改 /etc/rc.d/init.d/dhcpd 文件,将其中的

 user=dhcpd

 group=dhcpd

 改为:

 user=root

 group=root

准备工作完成,我们开始配置 Kickstart 

----如果找不到 syslinux 目录,需要安装包 yum  install  system-config-kickstart.noarch  –y 

[root@test1 ~]# mkdir /tftpboot

[root@test1 ~]# mkdir /tftpboot/pxelinux.cfg

[root@test1 ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/

[root@test1 ~]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

[root@test1 ~]# cp /mnt/images/pxeboot/initrd.img /tftpboot/

[root@test1 ~]# cp /mnt/images/pxeboot/vmlinuz /tftpboot/

[root@test1 ~]# chmod 644 /tftpboot/pxelinux.cfg/default

然后修改  /tftpboot/pxelinux.cfg/default 的配置文件。 

vim /tftpboot/pxelinux.cfg/default

 

 

文件里面需要修改两行,修改第 1 ,后面的 linux 意思是寻找下面 18 行的 label linux,然后修改下 22 行(即在后面添加 ks=ftp://”pxe-server-ip”/ks.cfg)。第 22 行的意思是使安装程序通过 FTP 服务器访问 kickstart 文件。 

其中第 1 :default linux 表示指定默认入口名称;第 2 行:prompt 1 prompt 用来设置是否等待用户选择,1 表示等待用户控制;第 18232731 label linux 表示定义的引导入口,表示系统的不同安装方式,如第 18 行定义的入口表示图形安装。 

配置文件修改完了,要开始自动安装,安装程序必须能访问 kickstart 文件。有多种方法可访问 kickstart 文件,其中最常用的一种方法是通过网络服务器进行,例如:ftp 服务器、WEB 服务器或 NFS 服务器,这种方法非常易于部署,并且也使管理更改变得十分简单。也可以通过 USB 磁盘、CDROM 或本地硬盘。如果 USB CDROM 中的 kickstart 文件非常便于访问,只需将 kickstart 文件放置在用来开始安装的引导介质中。而使用 DHCP 服务器和 TFTP PXE 配置起来更为复杂。 

使安装程序指向 kickstart 文件的书写格式如下: :

ks=ftp://server/dir/file  :ks=ftp://ftp 服务器 IP/ks.cfg ks=http://server/dir/file :ks=http://http 服务器 IP/ks.cfg ks=nfs:server:/dir/file   :ks=nfs:nfs 服务器 IP:/var/ftp/pub/ks.cfg ks=hd:device:/dir/file   :ks=hd:sdb1:/kickstar-files/ks.cfg ks=cdrom:/dir/file      :ks=cdrom:/kickstart-files/ks.cfg

以上有关 default 配置文件的修改就是通过 ftp 服务器方式来访问 kickstart 文件。

接下来我们制作 kickstart 的无人值守安装文件。我们打开终端输入 system-config-kickstart 弹出来界面。 (需要在服务器中打开。)

 

我们设置下默认安装的语言,时区,根口令,然后勾选下面的安装后重新引导。然后选择安装方法。 

 

我们配置 ftp 服务器的安装方法。选择执行新安装。然后点击引导装载程序选项 

 

GRUB 选项如果无特殊需求,可以不勾选。 

 

到这一步,选择部分参考我的。布局这里,我们自己设置下分区大小。 

分区大小需要自己根据情况而定。 

比如我的虚拟机配置较低就要用下面的分区: 

/boot 分区  文件系统类型:ext4   使用硬盘空间大小:200MB

/swap 分区                      使用硬盘空间大小::2048MG(内存小于 8G 的需设置成内存的两倍,16G以后的内存最好保持物理内存的8G或者相同物理内存的大小,这里实验虚拟机只有1G内存,所以swap分区2048 

/   根分区  文件系统类型:ext4   使用硬盘空间大小: 剩下所有硬盘空间 

 

以上三个为基本分区,其他的分区需根据情况制定。本文档不再提供方案。 

 

 

网络这里,默认没有,点击添加网络,设备名称为 eth0,网络类型为 dhcp

 

参考我的配置 

 

防火墙和 selinux 根据自己需求选择开启或者禁用 

 

 

在这里勾选一些包,默认没有勾选桌面。根据自己需求勾选。 

#  附上Linux系统最小化安装包选择

 


或者:使用之前在课程上提到的方式,但具体的方式还是要根据具体的方案来定。

 

后面剩余的两项不需要配置。 

提示:安装脚本:在“预安装脚本”,“安装后脚本”对话框中,可以分别添加在安装前、安装后自动的可执行语句。此项设置使服务器自动化配置变得更加容易,例如可以在客户机在完成安装后自动设置 YUM 仓库,如下图所示,需要注意的是:应确保所编写的代码能够正确执行,以免安装失败。 

 

提供一个参考的案例:

 

然后点击左上角的文件选择保存,选择下保存的路径,然后复制 ks.cfg 文件到/var/ftp/ 目录下: 

[root@test1 ~]#cp ks.cfg  /var/ftp/

注:ks.cfg 就是无人值守安装时要用的 Kickstart 文件,该文件可以手动进行编辑,如果手动编辑 Kickstart 文件,则使用 ksvalidator 来验证该文件使用正确的关键字,但却无法验证 URL 路径、各个数据包或组等书写错误。Ksvalidator system-config-kickstart 数据包的一部分,

因此必须要安装该软件包 

---还记的/tftpboot/pxelinux.cfg/default 文件中设置过 ks=ftp://192.168.10.1/ks.cfg 因此必须

执行上面的一步重新挂载 安装光盘到/var/ftp/pub 目录下,开始执行另一台机器的无人值守安装: 

[root@test1 ~]#umount /dev/cdrom      # 取消原来是挂载到/mnt 下的镜像文件。

[root@test1 ~]#mount /dev/cdrom /var/ftp/pub

建议关闭防火墙和 selinux,如果没有关闭的话,tftp 服务会有问题。

设置防火墙: 

#chkconfig iptables off  (重启生效)

#service iptables stop    (即刻生效)

关闭 selinux 功能:有如下两种方法可以实现 

1) 永久关闭 selinux 功能:修改/etc/sysconfig/selinux 文件,将 SELINUX=enforcing 改为 disabled,要重启系统才生效 

2) 临时关闭 selinux 功能:#setenforce  0  不需要重启系统若使用 vmware 虚拟机,如果还失败的话,就 vmware 虚拟机软件所提供的 DHCP 功能停掉(一般情况下不影响)

接下来启动你要安装的机器了(设置为网络引导安装,你就可以休息下,等待自己安装完成)

 

如果出现这个状态请查看 ks 的路径和 selinux 是否关闭。 

查看 SELinux 状态:

1、 /usr/sbin/sestatus -v      ##如果 SELinux status 参数为 enabled 即为开启状态

SELinux status:                 enabled

2、 getenforce                 ##也可以用这个命令检查

如果遇到 Unable to retrieve ftp ,确认是否进行了镜像挂载, ls /var/ftp/pub/

即可。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值