CentOS 从内部安装是如何进行的?

CentOS 从内部安装是如何进行的?

我试图了解 Linux 发行版 ISO 映像文件的内容以及安装过程是如何进行的。这里我专门讲一下中央操作系统6.4 的最小版本。

所以操作系统被触发,并且我显示菜单。然后我点击安装。

它加载内核和 initrd 文件系统。

我的问题是:

  1. 如何蟒蛇接到电话吗?

  2. images/install.img 文件的作用是什么? (谁调用/挂载它?)

  3. Anaconda 是否安装 Packages/*.rpm?如果我想在那里添加一个,可以吗?会安装吗?

答案1

我是 Anaconda 的作者/维护者之一。我可以进入太多细节关于安装程序如何启动,但我会尽量简短。

(请注意,这仅适用于 RHEL/CentOS 6.x 或 Fedora 14 及更早版本;安装程序为几乎完全重写Fedora 15、16 和 17 之间,所以现在情况非常不同。)

  1. Anaconda 是如何被调用的?
  2. images/install.img 文件的作用是什么? (谁调用/挂载它?)

安装介质上的initrd.img就是我们所说的阶段1图像。它包含一个名为 的程序loader,其唯一的工作就是查找和加载images/install.img

install.img是个阶段2图像。这就是蟒蛇的地方实际上lives - 它是一个包含安装程序根文件系统的squashfs 映像。

有一个 有很多不同的方式加载程序可以找到install.img,但是当您从 DVD 启动时,这很简单:加载程序会注意到安装程序 DVD,安装它,然后安装images/install.img为其根文件系统。

一旦 stage2 镜像被挂载,加载器就会启动 Anaconda,然后它会启动 Xorg 并放置一个 shelltty2以及所有这些好东西,然后安装程序真的开始。

3. Anaconda 是否安装 Packages/*.rpm?如果我想在那里添加一个,我可以并且会安装它吗?

不,它不仅仅在那里安装所有东西。它使用comps.xml文件(在 中repodata/)来决定哪些包组可用(以及这些组中包含哪些包)——这就是包选择 UI 的填充方式。

如果您向该Packages/目录添加任何内容(例如,如果您尝试创建自定义 DVD 映像)并且希望它可安装,则需要使用createrepo来重新生成该repodata/目录。这至少可以让您通过 kickstart 安装软件包。

如果您需要它们显示在用户界面中,您还需要进行编辑comps.xml

答案2

当您从 CD 引导时,您将获得 ISOLINUX 引导加载程序,并加载 Linux 内核和初始 ramdisk。这会启动 Anaconda,它会加载其各个部分,例如 install.img。然后 Anaconda 负责安装各种软件包等。

让 Anaconda 安装附加软件包(或进行附加配置)的最简单方法是编写 kickstart 脚本。 kickstart 脚本告诉 Anaconda 要安装哪些软件包、如何配置操作系统等等。要告诉 anaconda 使用特定的 kickstart 脚本,您可以输入“install ks=http://example.com/my_kickstart.ks“在 ISOLINUX 提示符下。然后它将下载该 kickstart 文件(在此示例中为从 Web 服务器下载),并使用它来了解要安装哪些软件包。

有关 kickstart 脚本的更多详细信息,请访问http://fedoraproject.org/wiki/Anaconda/Kickstart

答案3

当您启动安装 CD 时,它会加载内核和 initrd,就像您提到的那样。这基本上会将一个最小的 Linux 系统加载到您的计算机内存中。 Anaconda 在启动时作为服务运行并且程序启动。然后 Anaconda 找到您的 HD 并将其安装为 /mnt/sysimage。 Anaconda 确实从安装 CD 安装 Packages/*.rpm,您可以将 RPM 添加到 Packages 目录,然后重新刻录 iso,但 Anaconda 仍然不知道需要安装它。至于破解 Anaconda 让程序寻找 RPM,我没有答案。

相关内容