使用PXE实现自动化安装rockylinux8.10

PXE

一、简介

  • 实现多台服务器自动化安装系统。

二、部署

  • 这里宿主机是 centos7PXE 部署的是 rockylinux8.10
  • 宿主机需提前关闭 selinux 和防火墙。

2.1 部署 dhcp

  1. 安装 dhcp
[root@test-server ~]# yum install -y dhcp
  1. 修改配置文件
# 复制默认的配置文件
[root@test-server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y

# 修改配置文件,修改几行即可,其他不用动,测试下来这里面的指定地址池没生效
[root@test-server ~]# vim /etc/dhcp/dhcpd.conf
14 ddns-update-style none;  # 取消这行的注释
32 subnet 192.168.88.0 netmask 255.255.255.0 {  # 指定网段
33   range dynamic-bootp 192.168.88.160 192.168.88.210;  # 指定地址池
34   option routers 192.168.88.1;  # 指定网关
35   option domain-name-servers 8.8.8.8;  # 指定DNS
36   next-server 192.168.88.1;  # 指定tftp服务器地址
37   filename "pxelinux.0";  # 指定pxe引导程序的文件名
38 }
  1. 启动 dhcp
# 根据自己情况是否设置开机自启
[root@test-server ~]# systemctl start dhcpd
[root@test-server ~]# systemctl status dhcpd

2.2 部署 tftp

  1. 安装 tftp
# 这里tftp依赖于xinetd,所以这里也安装一下xinetd
[root@test-server ~]# yum -y install tftp-server xinetd
  1. 修改配置文件
# 修改wait disable后面的即可
[root@test-server ~]# vim /etc/xinetd.d/tftp
service tftp
{
    socket_type     = dgram
    protocol        = udp
    wait            = no  # yes:一台一台的连接; no:允许多台一起连接
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /var/lib/tftpboot
    disable         = no  # yes:关闭tftp; no:开启tftp
    per_source      = 11
    cps         = 100 2
    flags           = IPv4
}
  1. 启动 tftp
# 根据自己情况设置开机自启
[root@test-server ~]# systemctl start xinetd
[root@test-server ~]# systemctl start tftp

[root@test-server ~]# systemctl status xinetd
[root@test-server ~]# systemctl status tftp

2.3 部署 http

这里也可以安装 nginxftp

# 安装
[root@test-server ~]# yum install -y httpd

# 启动
[root@test-server ~]# systemctl start httpd

# 确保启动成功
[root@test-server ~]# systemctl status httpd

# 挂载光盘镜像
[root@test-server ~]# mkdir /var/www/html/rockylinux8.10
[root@test-server ~]# mount -t iso9660 /data/iso/Rocky-8.10-x86_64-dvd1.iso /var/www/html/rockylinux8.10

# 准备安装源,可选
[root@test-server ~]# vim /var/www/html/local.repo
[BaseOS]
name = BaseOS
baseurl = http://192.168.88.1/rockylinux8.10/BaseOS
enabled = 1
gpgcheck = 0

[AppStream]
name = AppStream
baseurl = http://192.168.88.1/rockylinux8.10/AppStream
enabled = 1
gpgcheck = 0

2.4 准备引导程序

[root@test-server ~]# yum install -y syslinux

# 复制几个文件到/var/lib/ftpboot下
[root@test-server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@test-server ~]# cp /var/www/html/rockylinux8.10/isolinux/initrd.img /var/lib/tftpboot/
[root@test-server ~]# cp /var/www/html/rockylinux8.10/isolinux/vmlinuz /var/lib/tftpboot/

2.5 配置启动菜单文件

# 注释不用写入
[root@test-server ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@test-server ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default linux  # 指定入口名称
prompt 0  # 0自动执行ks文件,1代表手动

label linux  # 安装模式,地址根据自己的情况修改,inst.ks指定的文件名要与后面编写的文件名一致
    kernel vmlinuz
    append initrd=initrd.img inst.repo=http://192.168.88.1/rockylinux8.10 root=live:http://192.168.88.1/rockylinux8.10/images/install.img inst.ks=http://192.168.88.1/rockylinux.cfg net.ifnames=0 biosdevname=0

2.6 编写 ks 文件

  • 这里 ks 文件可以用 system-config-kickstart 工具生成,我这里就直接编写了,可以自行搜索 system-config-kickstart 使用方法
# 生成密码
[root@test-server ~]# openssl passwd -1 "123456"
$1$NAAAcDvm$9aYMh4fRsFKjr1jPsjWXH.

[root@test-server ~]# vim /var/www/html/rockylinux.cfg 
# 安装系统,而不是升级系统
install

# 键盘设置
keyboard 'us'

# root密码
rootpw --iscrypted $1$NAAAcDvm$9aYMh4fRsFKjr1jPsjWXH.

# 系统语言
lang en_US

# 时区设置
timezone Asia/Shanghai

# 配置系统中用户密码的加密算法和存储位置
auth  --useshadow  --passalgo=sha512

# 配置安装方式,graphical图形化,text文本
# graphical
text

# 禁用系统首次启动设置向导
firstboot --disable

# 关闭selinux
selinux --disabled

# 关闭firewalld
firewall --disabled

# 网络配置,这里的device名称好像也可以成功
network  --bootproto=dhcp --device=eth0 --onboot=yes

# 安装完之后重启
reboot

# 网络源,根据自己实际情况填
url --url="http://192.168.88.1/rockylinux8.10"

# 系统引导加载配置
bootloader --location=mbr

# 擦除磁盘上的分区并初始化
zerombr
clearpart --all --initlabel

# 磁盘分区,默认单位是M,--grow --size=1代表剩余的都分给它
part /boot --fstype="xfs" --size=1024
part swap --fstype="swap" --size=4096
part / --fstype="xfs" --grow --size=1

# 安装软件包和相关组
%packages
@^minimal-environment
bash-completion
net-tools
vim
%end

# 安装完毕运行的命令,这里写的是更新安装源
%post --interpreter=/bin/bash
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/local.repo http://192.168.88.1/local.repo
%end

三、使用

3.1 创建虚拟机

  • 基本上都是默认安装即可
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 选择虚拟机存放目录
    在这里插入图片描述

  • 配置 cpu
    在这里插入图片描述

  • 配置内存,尽量给 2G2G 以上,不然会卡在那边,后面有图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 修改虚拟机的网络,根据自身实际情况修改
    在这里插入图片描述
    在这里插入图片描述

3.2 启动虚拟机

在这里插入图片描述

  • 如果卡在这边,将内存加到 2G 或以上即可。
    在这里插入图片描述

  • 安装成功,用户名 root,密码 123456
    在这里插入图片描述

四、总结

4.1 出现的问题

  1. default 文件中的第一行 default 指定的入口名称,不同版本都不太一样,一开始填的是 auto 不行。
  2. 内存问题,rockylinux8.10 要求的内存不能太低。
  3. 虚拟机安装的时候,有概率会出现 cpu 的问题,给这 cpu 配置中的 Virtualization Engine 下面的三个勾上就行了。
  4. 如果开机之后一开始就提示有什么找不到,请检查/var/lib/tftpboot/pxelinux.cfg/default 中的 append 那一行的 url 是否配置正确。
  5. 如果 /var/www/html/rockylinux.cfg 文件中的 packages 标注的组或者安装包,不存在,需要在安装过程中手动输入 yes 忽略。
  6. 如果安装 centos7 ,需要手动修改 defaultks 文件。

4.2 个人理解

  • 其实 pxe 中最重要的就是 default 文件和 ks 文件,default 文件指定安装源,ks 配置自动化安装。
  • 这里我使用的是在 ks 文件中指定文本安装,应该也可以在 default 中指定文本安装。
  • 这里我在 default 中就指定了一个 label,如果想添加多个系统的 pxe,可以添加多个 label
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值