我刚刚在嵌入式设备上运行 Debian 系统。它有自定义分区、大量配置文件更改、Web 内容和几个从源代码编译的应用程序。
现在需要将此确切设置镜像到十几个其他相同的嵌入式设备。它们都具有相同的处理器、内存、磁盘大小等(因此“相同”)。最好的方法是什么?
设备中的磁盘实际上无法通过物理方式访问,否则我首先会将第二个磁盘放入完成的盒子中,然后使用 dd 来镜像它。
如果我将磁盘镜像到 USB 记忆棒,我该如何将其放到干净的盒子上?我猜这取决于 BIOS 是否有帮助?
答案1
您的嵌入式设备可能存在某些限制,因此我仅概述您可以采取的一般方法。
制作已安装系统的磁盘映像。选择最适合您设备的磁盘映像软件。
创建启动媒体,该媒体将启动您的设备并完全无人值守地完成映像恢复过程。您可以将设备映像存储在启动媒体本身上或某个网络共享上(假设您可以轻松访问它)。
将启动介质放入新设备并让其自行工作。您也可以制作十几个启动介质副本并同时运行它们。
正如之前所建议的,看看 Clonezilla。如果它适用于您的设备,那么它可能是最简单的选择。
答案2
我使用复制方法多次调整了我的根文件系统的大小,并取得了巨大的成功,但这些都是普通磁盘,我能够从一个正在运行的(源)实例中使用两个文件系统(源和目标)。
(cd / ; tar -cf - . --one-file-system) | (cd /mnt ; tar xvfpB - )
这会将所有内容复制到已挂载的目录(新磁盘的根目录),但您可能需要单独复制 /dev/ 中的文件。
在您的环境中我无法猜测的一个重要步骤是引导加载程序的设置。
几年前,当使用嵌入式 NSLU2 系统(ARM、32MB 内部存储器、内部 8MB 片上闪存磁盘)时,我能够从内部 mmcblk0 执行 dd 操作到文件进行备份。
答案3
如果您的盒子可以从 USB 启动,您可以:
- 制作一个 USB Clonezilla 并将映像克隆到网络,然后多次从网络克隆。
- 如果您的 USB 足够大,请将图像存储在 USB 本身上。