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

Ond*_*žka 5 external-hdd system-installation

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

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

我有哪些选择?

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

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

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

小智 5

如果您使用的是 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

现在您已准备好 chroot:

$ sudo chroot /target
# (now you are in the external HD as root)
Run Code Online (Sandbox Code Playgroud)

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

# blkid
Run Code Online (Sandbox Code Playgroud)

然后,将 /etc/fstab 中的 UUID 替换为通过blkid.

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

# grub-install /device/name
# update-grub
Run Code Online (Sandbox Code Playgroud)

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

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

# ^D
$ sudo umount /target/sys
$ sudo umount /target/proc
$ sudo umount /target/dev
$ sudo umount /target/home
$ sudo umount /target/
Run Code Online (Sandbox Code Playgroud)

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


Mac*_*zyk 2

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

https://wiki.ubuntu.com/LiveUsbPendrivePersistent

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