我们可以在目录中拥有任何操作系统的完整文件系统结构。我们可以做到这一点chroot
,因此它的行为与本机登录一样好。
有没有办法在 chroot 的帮助下将操作系统安装到分区上?
例如,我想在我的/home/SHW/Ubuntu-14.04
目录中安装 Ubuntu-14.04。安装后,我可以 chroot 并可以执行一些用户空间工作
(将操作系统安装到分区并将其安装在 /home/SHW/Ubuntu-14.04 不是我想要的)
编辑:
虽然我在原来的问题中提到了Ubuntu,但我的目标操作系统是由第三方从头开始开发的。根据@mattdm,debootstrap
对于 ubuntu 很有用。但我需要几乎类似的解决方案来安装任何操作系统
答案1
是的!这是什么启动程序是为了 — 至少在 Debian 衍生的发行版(如 Ubuntu)中是这样。在 Ubuntu wiki 上有一些很棒、简单的说明,可以(几乎)完全满足您的要求:https://wiki.ubuntu.com/DebootstrapChroot。这有一些绑定安装的重要步骤/proc/
,/dev/
并且/sys/
chroot 部分需要这些步骤。
不幸的是,在基于 Fedora/RPM 的发行版世界中,我们没有类似的东西,尽管 a) 我认为 anaconda(Fedora 安装程序)实际上可以做到这一点,但没有关于该过程的良好文档 b) 你能只是yum install
打包到 chroot 中,这可以工作,但与在那里安装真实的系统并不完全相同。这嘲笑工具执行“b”以便为包构建提供一个干净的环境,并执行绑定安装和所有操作,并且您实际上可以mock shell
在紧要关头将它(与 )用于其他事情。
我说“几乎正是您正在寻找的”,因为 chroot 操作系统的行为与本机安装不太一样。为了更接近,你想使用容器,这基本上是一个使用 Linux 内核功能的系统,使 chroot 对于在其中运行的应用程序来说看起来更像是一个完整的本机操作系统。目前这个领域的热门话题是码头工人,一个用于管理和启动各种容器的简单工具。您可以制作自己的基础映像(debootstrap
例如,从在 chroot 中使用开始!),也可以从注册表启动现有的映像。尝试:
$ sudo docker run -i -t fedora /bin/bash
即使在 Ubuntu 系统上,这将下载并让您进入基于 Fedora 的容器内的 shell 提示符。或者,您可以ubuntu
在 Fedora 或其他任何地方使用该基础 - 唯一的要求是主机内核不是古老的(或者,当然,您可以在容器中运行与主机操作系统相同的操作系统)。