【shell脚本】全自动完成pxe无人值守批量装机脚本,匹配centos系列

本脚本采用的是搭建ftp服务器、tftp服务器、dhcp服务器来完成文件的传输

ks应答文件为最小化安装,免去图形化,可以实现一键装机~~

#!/bin/bash
yum -y install tftp-server dhcp vsftpd syslinux &> /dev/null
###脚本说明:需要输入dhcp地址池的最小主机编号和最大主机编号,请仔细阅读,并按要求赋值

IP=`ip a s ens33 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.
read -p "请输入地址池最小主机号:" min
read -p "请输入地址池最大主机号:" max


#修改分配网段地址,指定服务器地址(本机IP),指定pxelinux.0引导程序文件
echo "subnet ${NET}0 netmask 255.255.255.0 {
range ${NET}${min} ${NET}${max};
option routers ${IP};
next-server ${IP};
filename \"pxelinux.0\";
}" > /etc/dhcp/dhcpd.conf
#开启dhcp服务
systemctl  start dhcpd

#开启TFTP服务,准备四大文件
sed -i  "14 s/yes/no/" /etc/xinetd.d/tftp
mkdir /var/ftp/centos7
mount /dev/sr0 /var/ftp/centos7
#复制内核文件即初始化镜像文件到TFTP根目录下
cp /var/ftp/centos7/isolinux/vmlinuz /var/lib/tftpboot/
cp /var/ftp/centos7/isolinux/initrd.img /var/lib/tftpboot/
#复制pxelinux.0引导程序到TFTP根目录下
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

#准备ks应答文件到ftp服务器上
echo "install
keyboard 'us'
rootpw --plaintext 123 
<think>首先,用户的问题是关于无人值守装机完成后启动提示错误代码 -110 的解决方案。错误代码 -110 可能与系统启动过程相关,常见于引导加载器(如 GRUB)或内核加载问题。 我需要参考提供的引用内容来查找相关信息。引用[1]到[5]主要涉及无人值守装机的配置,包括 Cobbler、DHCP、Kickstart 等,但没有直接提到错误代码 -110。不过,我可以从这些引用中推断出可能的配置问题。 关键引用: - 引用[3]提到在 Cobbler 同步时遇到错误,并修改了 Python 脚本以修复 DHCP 重启问题。 - 引用[5]讨论了允许动态设置,并重启 Cobbler 服务。 - 引用[4]涉及 Kickstart 文件的配置和密码生成。 可能的错误原因: - 错误代码 -110 可能表示启动过程中的硬件或驱动程序问题,如磁盘、网络或内核模块加载失败。 - 在无人值守装机环境中,这可能是由于 Kickstart 文件配置错误、内核参数不正确或驱动程序缺失导致。 解决方案步骤: 1. **检查 Kickstart 文件**:确保 Kickstart 文件中包含所有必要的驱动程序和内核参数。例如,添加 `dracut` 参数以包含额外驱动。 2. **验证内核版本**:确保安装的内核与硬件兼容。可能需要更新内核或添加特定驱动。 3. **检查日志文件**:在安装完成后,查看系统日志(如 `/var/log/messages` 或 `/var/log/boot.log`)以获取详细错误信息。 4. **Cobbler 配置检查**:确保 Cobbler 正确配置了 DHCP、TFTP 和 Kickstart 服务。引用[3]中提到的服务重启可能相关。 5. **硬件兼容性**:如果使用虚拟机,检查虚拟化设置;如果是物理机,确保驱动程序已包含在安装介质中。 基于引用[4],可以生成加密密码用于 Kickstart,但这可能不直接相关。 结构化回答: - 逐步引导用户解决问题。 - 使用中文。 - 添加引用标识。 - 生成相关问题。 最终回答结构: 1. 解释错误代码 -110 的可能含义。 2. 提供解决方案步骤。 3. 引用相关部分。 4. 生成相关问题。</think>### 无人值守装机启动错误代码 -110 的解决方案 在无人值守装机(如使用 Cobbler 或 Kickstart)完成后,系统启动时提示错误代码 -110,通常表示内核加载或硬件初始化失败。这可能是由于内核参数配置错误、驱动程序缺失、硬件兼容性问题或引导加载器(如 GRUB)设置不当引起。以下我将基于常见原因和配置实践,逐步为您提供解决方案。解决方案参考了 Cobbler 和 Kickstart 的配置指南[^1][^4][^5],并结合了系统启动错误的通用排查方法。 --- ### 步骤 1: 检查 Kickstart 文件配置 Kickstart 文件(`.ks.cfg`)控制无人值守安装过程。错误代码 -110 可能与内核参数或驱动程序加载相关。 - **验证内核参数**:确保 Kickstart 文件中包含必要的内核启动选项。例如,添加 `dracut` 参数以强制加载额外驱动: ```plaintext bootloader --location=mbr --append="console=tty0 crashkernel=auto dracut=force" ``` 如果硬件较新(如 NVMe 磁盘或特定网卡),需添加驱动模块,如: ```plaintext bootloader --append="modprobe.blacklist=nouveau rd.driver.pre=vfio-pci" ``` - **检查分区和文件系统**:错误可能源于磁盘分区错误。确保 Kickstart 的分区部分正确,例如: ```plaintext part /boot --fstype="xfs" --size=500 part / --fstype="xfs" --size=10000 part swap --size=2000 ``` - **引用支持**:Kickstart 文件需通过工具如 `system-config-kickstart` 生成或验证,避免手动错误[^4]。 **操作建议**: 1. 编辑 Kickstart 文件(如 `/var/lib/cobbler/kickstarts/sample.ks`)。 2. 添加调试参数:在 `bootloader --append` 中添加 `debug`,以便启动时输出详细日志。 3. 重新同步 Cobbler:运行 `cobbler sync` 应用更改[^3][^5]。 --- ### 步骤 2: 验证 Cobbler 服务状态 Cobbler 管理 DHCP、TFTP 和 HTTP 服务,配置错误可能导致启动失败。错误 -110 可能与网络引导或内核传输问题有关。 - **重启关键服务**:确保所有相关服务正常运行: ```bash systemctl restart httpd rsyncd dhcpd xinetd cobblerd tftp.socket systemctl enable httpd rsyncd dhcpd xinetd cobblerd tftp.socket ``` - **检查 DHCP 和 TFTP 配置**: - 确认 DHCP 配置文件(`/etc/dhcp/dhcpd.conf`)包含正确的 `next-server` 和 `filename` 选项,指向 TFTP 服务器和引导文件(如 `pxelinux.0`)。 - 使用 `tftp` 客户端测试内核文件下载: ```bash tftp localhost get /var/lib/tftpboot/pxelinux.0 ``` - **引用支持**:服务重启是解决配置同步问题的常见步骤,如引用[2][^2]和[3][^3]所示。 **操作建议**: 1. 检查日志:查看 `/var/log/cobbler/cobbler.log` 和 `/var/log/messages`,搜索 "error" 或 "failed"。 2. 修复 Python 脚本错误:如果遇到类似引用[3][^3]的 `dhcpd -t failed` 错误,修改 Cobbler 的 Python 脚本并重新编译: ```bash cp -a /usr/lib/python2.7/site-packages/cobbler/modules/sync_post_restart_services.py /tmp cd /tmp sed -i 's/"service %s restart"/"\/usr\/bin\/systemctl restart %s"/' sync_post_restart_services.py python -m compileall sync_post_restart_services.py cp sync_post_restart_services.py* /usr/lib/python2.7/site-packages/cobbler/modules/ systemctl restart cobblerd cobbler sync ``` --- ### 步骤 3: 排查硬件和内核兼容性 错误代码 -110 常由硬件驱动不匹配引起,尤其是在安装介质未包含新硬件驱动时。 - **更新内核或添加驱动**: - 在 Cobbler 中更新内核版本:下载最新内核 RPM,运行 `cobbler import --path=/mnt/iso --name=CentOS-7`。 - 在 Kickstart 中添加 `%post` 脚本,安装额外驱动: ```plaintext %post yum -y install kmod-vfio-pci dracut --force %end ``` - **启用动态设置**:如引用[5][^5]所示,允许 Cobbler 动态调整配置: ```bash sed -ri '/allow_dynamic_settings:/c\allow_dynamic_settings: 1' /etc/cobbler/settings systemctl restart cobblerd ``` **操作建议**: 1. 测试硬件兼容性:在物理机上检查 BIOS/UEFI 设置(如禁用 Secure Boot);在虚拟机上确认虚拟化类型(如 KVM 或 VMware)。 2. 使用调试模式:重启目标机,在 GRUB 菜单按 `e` 编辑启动项,添加 `init=/bin/bash` 进入应急 shell,检查 `/var/log/boot.log`。 --- ### 步骤 4: 分析系统日志 启动失败后,收集日志是诊断关键: - 从目标机获取日志:如果系统无法启动,使用 Live CD 挂载磁盘: ```bash mount /dev/sda1 /mnt cat /mnt/var/log/boot.log | grep -i "error" ``` - 常见日志位置: - `/var/log/anaconda/`(安装日志) - `/var/log/dmesg`(内核消息) - `/var/log/cobbler/`(Cobbler 操作日志) 如果日志显示 "error -110" 与特定设备相关(如磁盘或网卡),在 Kickstart 中添加对应的驱动参数[^1][^4]。 --- ### 总结 错误代码 -110 通常源于内核加载或硬件初始化失败。通过逐步检查 Kickstart 文件、Cobbler 服务和硬件兼容性,大多数问题可解决。重点确保: - Kickstart 内核参数正确。 - Cobbler 服务正常运行且配置同步。 - 硬件驱动已包含在安装介质中。 如果问题持续,提供详细的日志输出可进一步分析。企业级批量无人值守安装依赖于细致的配置验证[^1][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维菜鸟XY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值