所以,我有一台安装了 SSH 服务的远程计算机,我完全可以访问它。直到明天我才能物理访问机器,但我不想等待。
我需要制作硬盘驱动器的映像,但问题是,我被引导到我要映像的分区中。所以,我能想到的唯一选择是创建一个小分区,重新启动,将一些小的 Linux disto 提取到该分区,将 Grub 的设置更改为自动启动到分区,chroot 并更改安装的 root 密码,重新启动,祈祷,ssh 回到盒子(现在运行插件安装),镜像主分区,更改 Grub 默认分区,然后重新启动。
有人知道发行版或其他获取图像的解决方案吗?
有几种方法可以做到这一点:
将小狗、tinycore、knopix 等小型发行版的内容复制到另一个分区。在小型发行版中设置 ssh 守护程序以在启动时启动网络和 sshd,更改 grub 配置以在重新启动后启动新发行版,重新启动。然后,您可以通过以下任何一种方式制作图像。
使用 cpio、tar 或 rsync 制作文件系统的副本。它不会为您提供图像,而是内容的副本。这可能是您所需要的,但如果没有看到其他选项。
使用转储制作图像。如果您正在使用的文件系统有 fs 转储,则转储会为您提供文件系统的映像,该映像可以恢复到任何大到足以容纳所有数据的分区。有用于 xfs 和 ext2 的转储实用程序。您也可以将 ext2 转储用于 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'"
如果您使用的是 debian 系统,则可以使用debootstrap在额外的分区中创建最小的 debian 安装。其他一切都在您的问题中,尽管我会在“chroot”部分之后添加:“安装 ssh 服务器并确保它在启动时启动”。
还要确保网络将在最小安装中启动。
你可以用 Debian 做到这一点。我相信它支持所谓的 chroot 安装。除此之外,我无能为力,因为我只从朋友那里听说过。
dd 命令可能会有所帮助,小型发行版将是 tinycore
为什么要物理磁盘副本?为什么不只是一个“正常”的副本?作为根:
并且尽量不使用任何东西。如果你有足够新的 tar,你可以用 j 替换 bzip2 或 --lzma 的 z。