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

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

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

我有什么选择?

编辑:为了更清楚,我有这样的场景:

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

因此,使用USB密钥或复制我自己的系统的解决方案不是我需要的。

如果您在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替换为使用blkid的相应id。

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

 # 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 ,因为它没有正确卸载(你实时复制了内容)。

你可以使用debootstrap ,这应该是你需要的。 看看这个链接 。

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

https://wiki.ubuntu.com/LiveUsbPendrivePersistent

只需在统一中键入USB,就会出现创建此类磁盘的程序。