我们通常在安装操作系统时使用 kickstart 脚本(由 Cobbler 提供)来配置服务器。
但是,我们将从 ISP 获得一台已经安装了操作系统的新服务器,并且可能没有远程控制台访问权限。
有没有办法重新启动 Linux 服务器(与我们通常使用的操作系统相同)并使用 kickstart 脚本强制它重新安装?
答案1
您可以尝试使用蛇服务器。
一旦配置完成,服务器和客户端机器都会提供一个 curses 界面来从其他选项中选择 kickstart 文件。
答案2
如果您有一个单独的物理分区来复制安装媒体,您可以这样做并在启动时将 Grub 修改为 Kickstart。
install harddrive --partition=sdb2 --dir=/path/to/installation-media
添加/etc/grub.conf
:
title Reinstall CentOS 6
root(hd0,0)
kernel /vmlinuz-kickstart ks=kickstart.cfg
initrd /initrd-kickstart.img
您需要根据您的环境修改上述值(如果适用)。内核和初始 ramdisk 可以从安装介质中复制(通常在./isolinux目录。)笔记:我附加了-kickstart文件名以便它们在目录列表中脱颖而出。
最后,将默认 Grub 条目设置为该条目并重新启动。(计算标题,从0开始。)
我再强调一下,您应该在共置系统上尝试之前在 VirtualBox VM 或类似设备上进行本地测试。
了解更多信息:
Kickstart 选项
开始 Kickstart 安装
答案3
如果提供商允许您远程访问服务器的带外管理硬件(例如 IPMI、iLO、DRAC),您可以自行安装。如果您没有获得此类访问权限,或者服务器甚至没有此类硬件,您可能不应该与他们做生意,而应该寻找其他提供商。
答案4
最近有人要求我考虑这样做,在寻找解决方案的过程中,我发现了这个问答。
正如迈克尔所说,带外是首选,但它并不总是可用的。
我查看了 Dawud 建议的 Snake Server。它能用,但不太受欢迎,而且文档中有错误。我不建议使用它。
我在 IRC #centos 上询问,他们告诉我从 grub 安装。这与 Aaron 的解决方案类似,但它使用网络资源而不是单独的分区。这是我最终实现的。要点是
- 下载安装 vmlinuz 和 initrd.img 到 /boot
wget -N http://mirror.centos.org/centos/6.5/os/x86_64/isolinux/vmlinuz
wget -N http://mirror.centos.org/centos/6.5/os/x86_64/isolinux/initrd.img
编辑 /boot/grub/grub.conf 并为新内核创建一个条目
title Reinstall CentOS kernel /vmlinuz ro upgradeany ip=192.168.254.44 netmask=255.255.255.0 hostname=somehost.tld ks=http://server.tld/ks/kickstart.ks gateway=192.168.254.220 dns=8.8.8.8 headless vnc vncpassword=SomePassword initrd /initrd.img
在 server.tld 上,你需要让 httpd 提供适当配置的 kickstart 文件,这里最重要的是 url 指令
url --url http://mirror.centos.com/centos/6.5/os/x86_64
这会导致从名为的远程系统复制安装文件。
这显然只有当您可以安装自己的内核时才有效,例如它不适用于 Digital Ocean droplet。
在开发解决方案时,您很容易配置错误,因此我不建议在没有轻松重新安装服务提供商映像的方法的系统上执行此操作。
自从这个工作以来我还没有遇到任何问题。