pxe无人值守(kickstart)系统批量自动安装——及报错处理


关于kickstart 就不作过多赘述了 , 反正就是节约人力 不必每一台都挂载光盘或u盘一台一台的装,通过pxe 就可以实现不需要光盘和u盘等直接用网络来装系统(但也需要准备服务器镜像挂载到主服务器上)。分为2种情况,一种是服务器数量不多,而且分区信息不一致,这时候可以用半无人值守,后面手动分区,另一种是无人值守 全程不需要人为操作,分区这些信息也是定义好的。(有些是基于半无人值守的 所以建议2样全部看)

kickstart 半无人值守

安装前 一般只留一个物理网络,否则可能会导致读取网卡不是自己想要的那个网卡,然后把dhcp关掉(一定要关闭):
在这里插入图片描述
一共需要安装3个服务:
在这里插入图片描述
实现网络安装系统
下面开始装第一个服务dhcp: yum -y install dhcp
装完以后查找配置文件所在目录:rpm -qc dhcp
在这里插入图片描述
编辑配置文件:vim /etc/dhcp/dhcpd.conf 打开后会发现里面只有3行内容,第二行说了 模版在这,可以把模版内容拷贝到当前文件:
在这里插入图片描述
拷贝模版信息到dhpdc.conf文件这个:cat /usr/share/doc/dhcp*/dhcpd.conf.example > /etc/dhcp/dhcpd.conf ,这时候在vim /etc/dhcp/dhcpd.conf 会发现里面就有很多内容了,但只保留如下图内容,其他全部删除(也可以一开始就直接手敲这些命令,但避免敲错,就选择拷贝并删除其他内容):
在这里插入图片描述
sunnet:网段 netmask:掩码
rnage:ip取值区间
option domain-name-servers :分配的DNS
option domain-name :“域名”(可任意写,也可以不写,直接"")
option routers :网关
option broadcast-address:广播地址
default-lease-time 、max-lease-time:这两项为增约,默认即可;
上述是默认模版:但还需要在文件里指定服务器(tftp-server-ip
)和文件从什么地方获取(pxelinux.0),所以需要在后面 } 前面填上2行内容:
next-server : 服务器地址(一般当前服务器ip)
filename “文件”:文件所属地方和文件名,注:这里的/不是服务器的/, 而是tftp的/ (tftp的根目录是:/var/lib/tftpboot/)
配置完以后,重启dhcp服务:systemctl restart dhcpd , 查看服务是否启动active代表已启动:systemctl is-active dhcpd ,设置开启自动启动:systemctl enable dhcpd:
在这里插入图片描述
getenforce查看selinux防火墙是否为Permissive,如果不是 执行setenforce 0 关闭(setenforce是Linux的selinux防火墙配置命令, 执行setenforce 0 表示关闭selinux防火墙。) ,然后再关闭服务器防火墙:systemctl status firewalld //查看状态
systemctl stop firewalld //关闭,systemctl disable firewalld //删除开机启动

下面开始配置第二个服务tftp:yum -y install tftp-server
tftp的根目录是 /var/lib/tftpboot
进入根目录后ls发现里面并没有 第一步文件所属的文件名pxelinux.0 。 所以这时候需要先 把pxelinux.0文件弄到根目录:执行yum whatprovides */pxelinux.0 查找源,这时候一般会匹配到多个文件,yum 其中任意一个包名安装,然后把文件cp到/var/lib/tftpboot 即可:
在这里插入图片描述
还需要两个内核文件vmlinuz和initrd,这个文件获取步骤:首先你要确定你系统光盘是否挂载(如果镜像拷贝到服务器了,查看服务器中镜像挂载位置,没有挂载就挂载上):
在这里插入图片描述
确定挂载以后,到服务器执行lsblk 查看光盘挂载目录,然后进入到光盘目录,如:我的挂载到/run/media/root//CentOS 7 x86_64 (尽量用tab自动补全) 然后ls 会有一堆文件:
在这里插入图片描述
然后cd images,cd pxeboot 下面就有initrd.img和vmlinuz文件:
在这里插入图片描述
( 上述是vm镜像挂载的,也可以使用工具把镜像文件拷贝到服务器中,然后再单独进行挂载,如图,我是拷贝到家目录,然后在手动挂载到指定目录的:
在这里插入图片描述
以上述挂载为例:要拷贝文件可以直接这样(如果不熟悉镜像文件,建议跳过这部 一步一步cd过去 了解一下过程 下面有每一步的详解):
[root@bogon ~]# mkdir /var/lib/tftpboot/pxelinux.cfg 
[root@bogon ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@bogon ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@bogon ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@bogon ~]# chmod +w /var/lib/tftpboot/pxelinux.cfg/default

然后把这2个文件拷贝到/var/lib/tftpboot/(tftp根目录)中:cp vmlinuz initrd.img /var/lib/tftpboot/
在这里插入图片描述
到/var/lib/tftpboot/目录中ls就会发现这3个文件都有了:
在这里插入图片描述
然后新建一个目录:mkdir pxelinux.cfg,建好以后 再次到光盘目录中后cd isolinux/ , 里面有一个isolinux.cfg的目录,把它拷贝到tftp刚建的目录中并更名为default:cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default ,因为要编辑,所以现在加一个写权限: chmod +w /var/lib/tftpboot/pxelinux.cfg/default
在这里插入图片描述
顺便在当前目录(cd isolinux/)拷贝一个boot.msg文件到根目录,这是装饰用的,可又可无,拷贝过去后同样加一个写权限:cp boot.msg /var/lib/tftpboot/ , chmod +w /var/lib/tftpboot/boot.msg
在这里插入图片描述
启动nfs服务:systemctl start nfs-server ,然后把mnt共享出去:vi /etc/exports 在里面写入:/mnt *(ro) 注:如果光盘挂载目录不是mnt ,/mnt替换为当前挂载目录即可:
在这里插入图片描述
里面可以有很多系统,然后装的时候可以选择装哪个系统,但/var/lib/tftpboot中initrd.img和vmlinuz名字不是固定的,可以随意更改,而且一个系统各对应一个,这里以rhce6和rhce7两个版本系统为例 ,把这2个文件分别cp 6和7,把原来的删了,注:后面编辑里面内容的时候两个文件必须版本6对应6,版本7对应7(以这样更名是防止2个文件配置混淆):
在这里插入图片描述
现在开始编辑(当前所处目录/var/lib/tftpboot):vim pxelinux.cfg/default ,然后输入:sp 分屏 便于区分理解(实操过程中不需要这一步),里面可以有很多label,一个label代表一个系统,后面装的时候可以选择系统:在这里插入图片描述

开始编辑:
在这里插入图片描述
其中如果是通过http共享的:
append initrd=initrd7.img inst.repo=http://0.0.0.0/dev quiet
光盘内容是在/var/www/html/dev
其中如果是通过ftp共享的:
append initrd=initrd7.img inst.ks=ftp://0.0.0.0/dev quiet
光盘内容是放在/var/ftp/dvd
其中如果是通过nfs共享的:
append initrd=initrd7.img inst.repo=nfs:0.0.0.0:/mnt
光盘内容要挂载到/mnt
如果是图形化安装的,rpcbind这服务的默认启动的systemctl is-active rpcbind(active表示启动的),如果不是图形化安装,就先把该服务启动:systemctl start rpcbind
prompt 1 :提示用户输入label, 然后编辑vim boot.msg 文件 在里面输入自定义提示信息(这是刚开始装的时候界面显示的内容)
在这里插入图片描述
编辑完以后启动tftp服务,由于tftp比较特殊,基于xineted,所以,需要先编辑 vim /etc/xinetd.d/tftp ,把里面disable 的yes改为no,在启动服务:systemctl start xinetd , systemctl enable xinetd
在这里插入图片描述
在这里插入图片描述
测试:新建一个虚拟机 前面全部默认即可,到最后一步 可以把其他多余的全部移除:
在这里插入图片描述
开启以后 便会进入DHCP 模式:
在这里插入图片描述
然后就会到提示这一步,让输入已经定义的label(如果不要选择这一步,vim pxelinux.cfg/default 把prompt 1 这行注释掉或者把1改为0即可):
在这里插入图片描述
在这里插入图片描述
引导完以后就到选择语言界面:
在这里插入图片描述
选择完语言后,会发现里面除了分区 其他已经全部自定义好了,点一下分区返回即可下一步,和平常装系统无异 测试成功了,后面继续说无人值守安装:
在这里插入图片描述
在这里插入图片描述

无人值守安装系统

(有些是基于半无人值守的 所以建议把半无人值守看完)
注:上面的步骤都要做
先把之前编辑的文件中内容注释掉或者删掉:vi /etc/exports
然后在/etc/yum.repos.d/下新建一个repo结尾的文件: vi /etc/yum.repos.d/***.repo 编辑以下内容:
在这里插入图片描述
[development] //中括号中内容不能变,否则kickstart配置程序中软件包这个用不了
name=my-rhce //自定义名字
baseurl=file:///var/ftp/pub //file:/后面是镜像挂载目录 如果之前配置了 这里要改
enabled=1
gpgcheck=0
在这里插入图片描述
无人值守可以理解为安装一个 应答软件 由应答软件替我们人为选择需求。
图形化配置,这种是很方便的:yum install -y system-config-kickstart
安装完以后运行:system-config-kickstart (这是需要图形化界面的,如果是最小安装的,先安装一个图形化再做此操作,或者在其他图形化机器上做好以后拷贝到该服务器),在该界面根据需求选择好相应设置即可:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他的默认即可,编辑完成后保存:
在这里插入图片描述
打开保存的目录 里面内容大概:vi ks.cfg
在这里插入图片描述
如果刚保存到文件里面没有packages,root 家目录中有一个文件纪录了之前安装时候的文件:vim anaconda-ks.cfg,在里面找到packages,并吧全部内容复制到:刚保存的文件(vim ks.cfg)里面即可:
在这里插入图片描述
应答文件准备好了,现在要让服务器能够找到该应答文件,为了方便,先装一个ftp:yum -y install vsftpd ,启动服务:systemctl start vsftpd ,启动后把应答文件拷贝到ftp目录中:cp ks.cfg /var/ftp
在这里插入图片描述
上述操作做完后,需要vim /var/lib/tftpboot/pxelinux.cfg/default 做如下操作:
在这里插入图片描述
-还记的/tftpboot/pxelinux.cfg/default 文件中设置过 ks=ftp://0.0.0.0/ks.cfg 因此必须,执行上面的一步重新挂载 安装光盘到/var/ftp/pub 目录下,开始执行另一台机器的无人值守安装: umount /mnt # 取消原来是挂载到/mnt 下的镜像文件。这里我是把镜像写进/etc/fstab 中每次都自动挂载, 测试是否能正常挂载,umount 先卸载,然后mount -a 看/etc/fstab中镜像是否会自动挂载即可,能自动挂载便正常的:
在这里插入图片描述

配置完成,然后新建一台虚拟机,操作系统稍后选择安装 将此虚拟机开机,默认会通过DHCP选择刚刚的服务器配置好的PXE进行安装系统 已经完成PXE无人值守系统安装,不需要人为操作了:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面系统虽然能正常装,但是和预期有许些差入,检查配置文件这些是否有误:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是直接连文件都读取不到:
在这里插入图片描述
因为kickstart配置中软件包选择一项选择了桌面安装,yum源不能正常获取镜像位置,所以会直接报错:
在这里插入图片描述
在这里插入图片描述

发布了67 篇原创文章 · 获赞 32 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/cuichongxin/article/details/102864136