我需要在服务器上完全自动化地远程安装 Debian 系统。
如果我可以访问此服务器上的 Debian OS 映像(通过 DVD 驱动器或带有 Debian OS 映像的 USB 棒),这将非常容易:我只需在“启动/安装”提示符下输入 PreSeed 文件的 URL。但我无法访问服务器上的 DVD 驱动器或 USB 棒。
就我而言,我只能通过救援系统(运行最小 Debian)访问服务器。我知道我可以使用debootstrap
。但问题是,使用 debootstrap 不是自动的,我必须先格式化磁盘,安装它们,执行 debootstrap 等等。
我想要做的是,登录救援系统并调用一个“程序”,如 debootstrap 或带有预置文件的 debian 安装程序,一切都应该自动完成。但 debootstrap 不支持预置文件。我不知道如何在这样的救援系统环境中调用安装程序。
我该如何实现这一点?是否可以在救援系统中下载完整的 Debian ISO 映像,将其提取到内存中,然后以某种方式调用此 CD 的安装程序?但是怎么做呢?我必须在那里执行什么命令?
或者是否有一些小工具可以做到这一点,我需要使用图像和预置信息的 URL 来调用它,然后进行安装?如上所述,debootstrap 没问题,但我想使用 debian 安装程序中的预置文件,而无需任何手动干预。debootstrap 涉及太多手动工作。
非常感谢你的帮助!jens
答案1
如果可能的话,我建议你自己制作一张新 CD,然后将其邮寄或上传给可以将其放入托盘的人。使用虚拟机创建并测试映像,直到您可以获得 100% 非交互式映像。请记住,您只需要最基本的功能。一个运行着 SSH 的系统和一个用户就足够了。其余的你可以(小心地)远程完成。
我还没有对 Squeeze 做过这个,但我认为过程类似。最坏的情况是,您可以自动安装 Lenny 并升级到 Squeeze。
您需要一个预置文件作为先决条件。使用debconf-get-selections
来生成此文件。从该命令的输出开始,并根据需要进行编辑。请参阅Debian 的预安装安装程序官方文档有关预置内容的任何信息,请查阅。
1)下载 ISO来自 Debian.
2)挂载并复制 CD 内容
mount -o loop debian-508-amd64-netinst.iso /mnt
mkdir ~/autoinstall
rsync -a -H --exclude=TRANS.TBL /mnt/ ~/autoinstall/
3)编辑isolinux/isolinux.cfg
并替换全部内容内容如下:
default install
LABEL install
kernel /install.amd/vmlinuz
append vga=normal initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed.txt debian-installer/locale=en_US console-keymaps-at/keymap=us --
LABEL linux
kernel /install.amd/vmlinuz
append vga=normal initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed.txt debian-installer/locale=en_US console-keymaps-at/keymap=us --
prompt 0
timeout 0
4) 将预先植入的数据放置在名为 的 CD 映像的根目录中(在本例中~/autoinstall
)preseed.txt
。5
) 构建映像。
cd ~/autoinstall/
mkisofs -o ~/autoinstall.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ~/autoinstall/
现在,您可以使用该映像来启动虚拟机。安装程序在任何地方向您提问,将答案添加到 pressed.txt 文件中,然后重复步骤 4 和 5。
继续这样做,直到您拥有一个可行的安装程序。您可能会构建 20-30 个图像,同时调整您的预置文件,直到您得到正确的结果。确保您将其包含openssh-server
在内pkgsel/include
,您应该能够远程登录。