如何在文件中安装 Ubuntu?

如何在文件中安装 Ubuntu?

基于 Linux 的系统中,所有内容都是文件。每次安装 Ubuntu 时,我都会选择一个根分区。现在,我想创建一个根文件系统,但在一个文件中,例如~/ubuntu.img。我有另一个 Linux 发行版(基于 Ubuntu)作为主操作系统。有没有办法安装 (s)ubiquity 并选择~/ubuntu.img作为根文件系统?据我所知,安装程序将根文件系统挂载在/target并使用chroot。也许我可以在那里挂载我的根文件系统并手动安装?

我想这样做是因为:

  1. 我不想安装超过 1 个操作系统和双重启动。
  2. 当我想编译某些项目时,我的主操作系统不支持某些软件包或存在一些依赖问题。

如果我能通过这种方式安装 Ubuntu,我将使用它chroot来安装根文件系统映像内的软件包。

答案1

我已经成功从这个答案。 您可以使用此链接下载它。

由于某种原因,我无法使用partedcfdisk或等工具直接读取fdisk映像。我不得不将映像刷入 16GB(或更大)的 USB 驱动器,然后使用dd、或 GNOME 磁盘实用程序复制根分区。

因此,我将根分区复制到~/ubuntu.img并设置 chroot 环境:

cd # go to the directory where the root filesystem image is located
mkdir ubuntu
sudo mount -o loop ubuntu.img ubuntu
sudo mount -t proc /proc ./ubuntu/proc
sudo mount -t sysfs /sys ./ubuntu/sys
sudo mount -o bind /dev ./ubuntu/dev
sudo chroot ./ubuntu

我甚至可以从 chroot 环境访问 USB 设备。

您可能已经注意到互联网连接仅部分可用 - 如果指定 IP 地址,您可以 ping 任何服务器,但无法解析域名。此命令应该可以修复它:

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

这种方法的缺点是,如果您需要访问 USB 设备,则必须始终准备 chroot 环境。但是,可以通过编写 shell 脚本来简化这一过程。

离开 chroot 环境后进行清理(并且那里没有运行任何进程):

sudo umount ./ubuntu/{proc,sys,dev}
sudo umount ./ubuntu

我认为有一种方法可以在基础系统上手动安装 Ubuntu。有类似的工具debootstrap,但我没有尝试过。欢迎发表另一个答案 :)

答案2

您的建议本质上是虚拟机背后的想法。为什么不直接使用 VirtualBox 并将 Ubuntu 安装为 VirtualBox VM?

相关内容