我有 50 多台机器运行 CentOS 6.4 或 6.8。我希望使用配置脚本(例如使用“基本服务器”模板并根据硬件 ID 设置主机名/静态 IP)使用位于本地网络上的公共 NFS 和/或 CIFS 共享上的安装介质重新安装 CentOS 7。稍后,我打算使用 Ansible 远程控制这些机器,因此我也想运行安装后脚本。
我如何远程(通过 SSH)触发此重新安装?
根据 Iain 的回答和一些谷歌搜索,以下是如何从 CentOS 7 执行此类安装:
下载 vmlinuz 和 initrd.img 到启动中:
sudo curl -o /boot/vmlinuz http://mirror.zetup.net/CentOS/7/os/x86_64/isolinux/vmlinuz
sudo curl -o /boot/initrd.img http://mirror.zetup.net/CentOS/7/os/x86_64/isolinux/initrd.img
添加自定义菜单条目到/etc/grub.d/40_custom
:
menuentry "My custom boot entry" {
set root=(hd0,1)
linux /vmlinuz ks=http://my-server/ks.cfg
initrd /initrd.img
}
在上面的行中添加任何其他选项linux
。
将自定义条目设为默认选择/etc/default/grub
:
GRUB_DEFAULT="My custom boot entry"
然后运行:
grub2-mkconfig --output=/boot/grub2/grub.cfg
喝杯咖啡然后重新启动:
reboot
答案1
您可以通过使用合适的命令行参数启动内核来从 grub 重新安装。我概述了以下过程:EL6 就在这里但 EL7 需要进行一些更改。这只是一个概述,但它应该能让您朝着正确的方向前进。
从您选择的 repo下载/centos/7/os/x86_64/isolinux/vmlinuz
到 下载到/boot
/centos/7/os/x86_64/isolinux/initrd.img
/boot
配置 grub 条目-把这个放在第一位。
title Install CentOS7
kernel /vmlinuz ro upgradeany biosdevname=0 net.ifnames=0 ip=192.168.254.44::192.168.254.220:255.255.255.0:somehost.tld:eth0:none ks=http://server.tld/ks/kickstart.ks nameserver=8.8.8.8 headless vnc vncpassword=SomePassword
initrd /initrd.img
上述操作将启动安装内核并按照说明配置其 IPv4,然后拉下 kickstart 脚本并从那里安装系统。
注意:当我这样做时,要求系统使用旧式 ethN 接口名称。如果您想要新的一致命名,那么您可能必须弄清楚如何为 ip 节提供接口
ip=address::gateway:netmask:hostname:interface:method
你可能会逃脱
ip=dhcp
可以省略接口,例如
ip=address::gateway:metmask:hostname::none
一旦你让它工作起来,它就会运行良好。你可能想看看相关文件。
我启动了一个 VNC 服务器,这样我就可以看到发生了什么,如果需要的话可以省略。
headless 参数会阻止系统查找和初始化视频硬件,您可能希望省略该参数并在 IPMI 控制台上观看。