我想在已连接(但未安装)的磁盘上安装 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,就会出现一个创建此类磁盘的程序。