我正在读这个问题如何在安装映像后重命名机器我想知道您对 Linux 机器做了什么。我是一个 Windows 用户,对 Linux 一无所知。如果我有一个 Linux 映像或 VM,如果我将映像还原到新机器,是否需要运行 NewSid 或 SysPrep 程序?
我询问的更多是有关 NewSid 程序而不是 SysPrep,我想制作一个已安装机器的图像,我不需要 sysPrp 为我进行安装。
答案1
这取决于 Linux 发行版,但通常意味着调整一些文件以/etc
获取主机名和 IP 详细信息。在 RedHat 风格的发行版上,您必须更改:
/etc/hosts
:主机名和 IP 地址/etc/sysconfig/network
: 主机名/etc/sysconfig/network-scripts/ifcfg-eth*
:网络配置
grep -r image_hostname /etc
并grep -r image.ip.add.ress /etc
会找到您需要编辑的任何内容。更改文件不会使更改立即生效 - 您必须重新启动或通过更新主机名(使用命令hostname
)并重新启动网络来手动应用它们service network restart
。
答案2
现代 Linux 发行版会记住首次安装的网卡的 MAC 地址。在任何其他机器上启动它们可能会导致您的 eth0 在您最意想不到的时候变成 eth1。
解决方案是删除维护 MAC 地址和以太网接口之间的持久映射的文件,该文件(至少在 Debian/Ubuntu 上;这是一个非常特定于发行版的区域)是 /etc/udev/75-persistent-net-generator.rules。
答案3
这个答案并不能回答你的问题,但更多的是为成像问题增加了不同的解决方案。
使用系统映像的替代方法是使用 Debian/Ubuntu 的预置或 CentOS/Redhat/Fedora 的 kickstart 等工具来安装基本系统,然后使用 Puppet、CFEngine2 或 Chef 等工具来配置系统的其余部分。这让您可以灵活地更改设置,并可用于在安装初始系统后保持配置同步。这不会花费太多时间来安装系统,并会减少生成映像的时间。
答案4
我目前在克隆虚拟机时使用以下脚本。自 90 年代中期以来,我一直在使用相同的技术,当时我定期克隆 Debian 机器作为学校的网关/防火墙机器。
/bin/bash #!/bin/bash # 将虚拟机的主机名从“$1”更改为“$2” 错误() { echo "用法:$0 OldName NewName" >&2 出口 1 } 旧=“$1” 新=“$2” [ -z "$OLD" -o -z "$NEW" ] && 错误 查找 /etc -type f -print0 | \ xargs -0r grep -l “\b$OLD\b” | \ egrep -v'ssh|\.db'|\ xargs -d“\n”-r sed -i -e“s/$OLD/$NEW/g”
还有一些手动更改我还没有开始自动化,主要是因为我做得不够频繁,所以不值得花时间去弄清楚。
如果克隆的机器具有硬编码的 IP 地址而不是 DHCP,我会编辑 /etc/network/interfaces。
编辑 /etc/udev/rules.d/70-persistent-net.rules 以便接口名称(eth0 和 eth1)分配给正确的 MAC 地址(否则它们将获得 eth2 和 eth3,因为 eth0 和 eth1 已经定义)。
删除并重新生成主机的 ssh 密钥。