我正在阅读这个问题如何在映像安装后重命名机器 ,我想知道你为Linux机器做什么。 我是一个Windows的家伙,对Linux毫无头绪。 如果我有一个Linux映像或虚拟机,是否有一个NewSid或SysPrep程序,我必须运行,如果我将图像恢复到新的机器?
我想了解更多有关NewSid程序而不是SysPrep的信息,我想创build一个已经安装的机器的映像,我不需要sysPrp来为我进行安装。
这取决于Linux发行版,但通常意味着要调整/etc
的几个文件以获取主机名和IP详细信息。 在RedHat风格的发行版中,你将不得不改变:
/etc/hosts
:主机名和IP地址 /etc/sysconfig/network
:主机名 /etc/sysconfig/network-scripts/ifcfg-eth*
:networkingconfiguration grep -r image_hostname /etc
和grep -r image.ip.add.ress /etc
会find你需要编辑的东西。 更改文件不会立即进行更改 – 您必须重新引导或通过更新主机名(使用hostname
命令)并通过重新启动service network restart
启动networking来手动应用它们。
现代Linux发行版将记住它们首次安装到的卡的MAC地址。 在任何其他机器上引导它们可能会导致您的eth0在最不经意的时候变成eth1。
解决方法是删除维护MAC地址和以太网接口之间持久映射的文件(至less在Debian / Ubuntu上;这是一个非常特定发行版的区域)是/ etc / udev / 75-persistent-净generator.rules。
这个答案不能回答你的问题,但更多的是为成像问题添加不同的解决scheme。
使用系统映像的另一种方法是使用像Debian / Ubuntu的预置版或者CentOS / Redhat / Fedora的kickstart来安装基本系统,然后使用类似Puppet,CFEngine2或Chef的configuration来configuration系统的其他部分。 这使您可以灵活地更改设置,并且可以在安装初始系统后用于保持configuration同步。 这不会花费更长的时间来安装系统,并且会减less生成图像的时间。
在Debian上,修改: 在/ etc /主机名 / etc / hosts文件 在/ etc /邮件名 在/etc/resolv.conf /etc/postfix/main.cf中 /etc/exim4/update-exim4.conf.conf /etc/udev/rules.d/z25_persistent-net.rules 并运行: 脚本/etc/init.d/hostname.sh rm -f / etc / ssh / ssh_host * dpkg-reconfigure openssh-server
我当前使用以下脚本克隆虚拟机。 自90年代中期以来,我一直在使用相同的技术,当时我经常克隆debian盒来充当学校的网关/防火墙机器。
#! /斌/庆典 #将虚拟机的主机名从“$ 1”更改为“$ 2” 错误(){ echo“用法:$ 0 OldName NewName”>&2 出口1 } OLD = “$ 1” NEW = “$ 2” [-z“$ OLD”-o -z“$ NEW”] &&错误 find/ 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密钥。