因此,我有一台安装了 SSH 服务的远程计算机,我可以完全访问它。直到明天我才能物理访问该机器,但我不想等。
我需要制作硬盘映像,但问题是,我启动到我试图映像的分区。因此,我能想到的唯一选择是创建一个小分区,重新启动,将一些小型 Linux 发行版提取到该分区,将 Grub 的设置更改为自动启动到该分区,chroot 并更改安装的 root 密码,重新启动,祈祷,ssh 返回框(现在正在运行嵌入式安装),映像主分区,更改 Grub 默认分区,然后重新启动。
有人知道获取图像的发行版或其他解决方案吗?
答案1
有几种方法可以做到这一点:
将小型发行版(如puppy、tinycore、knopix等)的内容复制到另一个分区。在小型发行版中设置ssh守护程序以在启动时启动网络和sshd,更改grub配置以在重新启动后启动新发行版,然后重新启动。然后,您可以采用以下任何一种方式制作映像。
使用 cpio、tar 或 rsync 复制文件系统。它不会给您映像,而是内容的副本。这可能是您所需要的,但如果不是,请查看其他选项。
使用 dump 制作映像。如果您使用的文件系统有 fs dump,则 dump 会为您提供文件系统的映像,该映像可以恢复到任何足够大的分区以容纳所有数据。xfs 和 ext2 都有 dump 实用程序。您也可以将 ext2 dump 用于 ext3 文件系统。要制作完整的映像,您需要运行类似
dump -0f - /mountpoint/or/dev_entry > image_file
使用 dd 制作正在运行的驱动器的映像,如果使用 dd,则可能需要在使用映像之前对其进行 fsck。我曾对许多不同的 Unix 变体使用过 dd 方法。最大的缺点是即使没有数据,它也会复制每个块。您可能希望在进行复制之前尝试块大小,但 16M 通常是一个合理的起点。
dd if=/dev/sda1 bs=$((16 * 1024 * 1024))> image_file
就是一个例子。
如果您有足够大的可用分区,则可以在本地进行复制。否则,您需要通过网络进行复制,这可能会非常耗时。如果带宽是瓶颈,压缩可以帮助减少网络时间。可以通过将 gzip 的输出管道传输到 ssh 来完成,方法是
"> image_file"
将"| gzip | ssh user@remote_host '> /path/to/file.gz'"
答案2
如果你使用的是 Debian 系统,你可以使用解引导在额外分区中创建最小的 Debian 安装。其他内容都已包含在您的问题中,不过我想在“chroot”部分后添加:“安装 ssh 服务器并确保它在启动时启动”。
还要确保网络将在最小安装中启动。
答案3
您可以使用 Debian 执行此操作。我相信它支持所谓的 chroot 安装。除此之外,我无法提供帮助,因为我只是从朋友那里听说过。
答案4
为什么要进行物理磁盘复制?为什么不只是进行“正常”复制?以 root 身份:
mount / /mnt/copy -obind
cd /mnt/copy
tar cvpzf /mnt/backup-disk/backup.tar.gz . #that's a dot
并尝试什么都不用。如果您有足够新的 tar,您可以将 bzip2 或 --lzma 的 z 替换为 j。