答案1
我是 Anaconda 的作者/维护者之一。我可以进入太多细节关于安装程序如何启动,但我会尽量简短。
(请注意,这仅适用于 RHEL/CentOS 6.x 或 Fedora 14 及更早版本;安装程序为几乎完全重写Fedora 15、16 和 17 之间,所以现在情况非常不同。)
- Anaconda 是如何被调用的?
- 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,我没有答案。