发行版制作及Anaconda基础
Anaconda是用于Fedora, RHEL等Linux发行版的安装程序,可以实现通过LiveCD,PXE,NFS等方式安装Linux系统以及利用kickstart文件实现无人值守的无交互安装。
发行版制作(Fedoran系统环境)
- 选择所需的软件包。
制作自己的发行版首先要确定你的发行版需要安装哪些软件。决定之后需要把这些软件相应的RPM包拷贝到某个目录,然后在这个目录下执行createrepo命令来创建RPM软件源。
- 创建ks文件。
ks文件用于指定制作发行版时用到的软件源及软件包,具体语法可参考 kickstart语法,下面是一个简单的例子:
编译及安装
- 获取源码:git clone git://git.fedorahosted.org/git/anaconda.git
- 安装依赖包: sudo yum install libtool $(grep ^BuildRequires: anaconda.spec.in | awk ‘{print $2}’)
- 安装、配置transifex:sudo yum install transifex-client;tx init /tmp
- ./autogen.sh && ./configure && make po-pull && make
源码目录结构
- 接口:pyanaconda/ui/
- gui/:图形界面接口实现代码。
- tui/:字符界面及命令行界面实现代码。
- init.py 及 common.py:定义了gui和tui通用的基类(base class)
- communication.py:负责UI中类的通信。
- 自定义组件:widgets/
- data/:存放时区地图组件的图片。
- glade/及python/:让用户接口构建器知道组件的存在及实现python的自省。
- src/:实现各组件。
- 分区:python-blivet包
- Bootloader: pyanaconda/bootloader.py
- 各个步骤的配置:
- pyanaconda/desktop.py
- pyanaconda/keyboard.py
- pyanaconda/localization.py
- pyanaconda/network.py
- pyanaconda/ntp.py
- pyanaconda/timezone.py
- pyanaconda/users.py
- 安装软件包:
- pyanaconda/packaging/
- scripts/anaconda-yum
- 安装类: 不同的发行版可以定义不同的安装类。
- pyanaconda/installclass.py
- pyanaconda/installclasses/
- pyanaconda/product.py
- 无人值守安装:pyanaconda/kickstart.py
- liveCD:
- data/icons/
- data/liveinst/
- 错误处理:
* pyanaconda/errors.py * pyanaconda/exception.py
- 安装控制库
* pyanaconda/install.py:控制安装步骤。 * pyanaconda/progress.py:控制进度条。 * pyanaconda/queue.py:控制通信队列。 * pyanaconda/threads.py:多线程支持。
- 库:提供一些工具如获得用户位置,安装日志等。
* pyanaconda/**init**.py * pyanaconda/addons.py * pyanaconda/anaconda_log.py * pyanaconda/anaconda_optparse.py * pyanaconda/constants.py * pyanaconda/flags.py * pyanaconda/geoloc.py * pyanaconda/i18n.py * pyanaconda/image.py * pyanaconda/indexed_dict.py * pyanaconda/isys/ * pyanaconda/iutil.py * pyanaconda/nm.py * pyanaconda/safe_dbus.py * pyanaconda/simpleconfig.py * pyanaconda/sitecustoimze.py
- 主程序anaconda:由systemd在系统启动后调用,设置环境、VNC等。
- 启动
* data/systemd/ * dracut/
- 内存监控
* scripts/anaconda-cleanup:监控安装过程中的内存状态,并记录到/tmp/memory.dat文件中。 * scripts/instperf及scripts/instperf.p:利用memory.dat文件生成相应的图表。
- 升级工具
* scripts/makebumpver * scripts/makeupdates
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 三木的技术博客!
评论