从正在运行的系统将 Ubuntu 安装到其他硬盘

从正在运行的系统将 Ubuntu 安装到其他硬盘

我想在已连接(但未安装)的磁盘上安装 Ubuntu,而无需从 DVD 或 USB 启动。目标是将 Ubuntu 安装在外部磁盘上,拔下它,将其插入其他计算机并运行。

我知道这需要 20 分钟等等。我只是想从正在运行的系统执行此操作,而无需重新启动它。

我有什么选择?

编辑:为了更清楚地说明这一点,我有这样的场景:

  • 我的朋友带着空磁盘来了
  • 我从正在运行的系统(Ubuntu)在该磁盘上安装系统
  • 朋友将磁盘放回他的机器并启动这个已安装的系统。

所以使用 USB 密钥或复制我自己的系统的解决方案并不是我所需要的。

答案1

如果您使用的是 Ubuntu 机器,那么您只需将运行的系统复制到外部硬盘上即可。

假设您已经对外部硬盘进行了分区。在本例中,我将使用 2 个分区:/ 和 /home。

$ sudo mkdir -p /target
$ sudo mount /media/external-hdd/main /target
$ sudo sync
$ sudo cp -ax / /target
$ sudo mount /media/external-hdd/home /target/home
$ sudo cp -ax /home /target/home

cp -ax不跨越不同的文件系统并且被归档(保留权限,不遵循符号链接等)

然后,您必须更新目标磁盘中的 grub 设置和 fstab。您可以使用chroot,但在此之前,您需要:

$ sudo mount -o bind /sys /target/sys
$ sudo mount -o bind /proc /target/proc
$ sudo mount -o bind /dev /target/dev

现在您已准备好 chroot:

$ sudo chroot /target
# (now you are in the external HD as root)

现在,您必须更新 fstab 和 grub 中的 UUID。为了获取 UUID,您可以运行:

# blkid

然后,在 /etc/fstab 中将 UUID 替换为通过 获取的适当 id blkid

最后一步是更新引导配置并在外部硬盘中安装引导加载程序。 在我的情况下,我使用 grub,因此,我编辑了/boot/grub/menu.lst。 在那里,您必须替换以 开头的行# kopt=root=UUID=... ro,并将 UUID 的内容替换为具有根文件系统的分区。

# grub-install /device/name
# update-grub

其中 /device/name 是外部硬盘。

然后,您可以退出 chroot 并卸载设备。

# ^D
$ sudo umount /target/sys
$ sudo umount /target/proc
$ sudo umount /target/dev
$ sudo umount /target/home
$ sudo umount /target/

磁盘应该已准备好使用。一旦您启动它,它可能会运行fsck,因为它没有正确卸载(您实时复制了内容)。

答案2

你可以使用debootstrap它,它应该正是你所需要的。看看此链接

答案3

如果您有 ISO 映像,则可以使用本文提到的两种工具之一创建带有实时系统的可启动 USB:

https://wiki.ubuntu.com/LiveUsbPendrivePersistent

只要在 Unity 中输入 USB,就会出现一个创建此类磁盘的程序。

相关内容