5.2. Anaconda 构架
Anaconda 是一组 Python 模块和脚本。它还使用几个外部软件包和程序库。这个工具组的主要组件包括以下软件包:
-
pykickstart- 解析并验证 Kickstart 文件。另外,提供存储安装值的数据结构。 -
dnf- 安装软件包并解决依赖项的软件包管理器 -
blivet- 处理与存储管理相关的所有活动 -
pyanaconda- 包含 Anaconda 的用户界面和模块,如键盘和时区选择、网络配置和用户创建。同时提供各种执行面向系统功能的工具 -
python-meh- 包含一个异常处理程序,它在崩溃时收集和存储额外的系统信息,并将这些信息传递给libreport库,后者本身是 ABRT 项目 的一部分 -
dasbus- 启用D-Bus库与 anaconda 模块和外部组件之间的通信 -
python-simpleline- 文本 UI 框架库,用于在 Anaconda 文本模式中管理用户交互 -
gtk- 用于创建和管理 GUI 的 Gnome 工具包库
除了上面提到的软件包外,Anaconda 在内部被分成用户界面和一组模块,这些模块作为独立的进程运行,并使用 D-Bus 库进行通信。这些模块是:
-
Boss- 管理内部模块发现、生命周期和协调 -
Localization- 管理区域设置 -
Network- 处理网络 -
Payloads- 处理以不同格式的安装数据,如rpm、ostree、tar和其他安装格式。有效负载管理安装的数据源 ; 源的格式可能会有所不同,比如 CD-ROM、HDD、NFS、URL 和其他来源 -
Security- 管理与安全相关的方面 -
Services- 处理服务 -
Storage- 使用blivet管理存储 -
Subscription- 处理subscription-manager工具和洞察力。 -
Timezone- 处理时间、日期、区域和时间同步。 -
Users- 创建用户和组。
每个模块声明其处理 Kickstart 的哪些部分,并具方法来将配置从 Kickstart 应用到安装环境和安装的系统。
Anaconda(pyanaconda)的 Python 代码部分作为拥有用户界面的"主"进程启动。您提供的任何 Kickstart 数据都使用 pykickstart 模块解析,并且启动 Boss 模块,其发现所有其他模块,并启动它们。然后主进程会根据其声明的功能将 Kickstart 数据发送到模块。模块处理数据,将配置应用到安装环境,UI 将验证是否已做了所有必要的选择。如果没有,您必须在互动安装模式中提供数据。完成所有必要的选择后,安装就可以开始 - 把数据写入安装系统的模块。