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 将验证是否已做了所有必要的选择。如果没有,您必须在互动安装模式中提供数据。完成所有必要的选择后,安装就可以开始 - 把数据写入安装系统的模块。