Anaconda是用於Fedora, RHEL等Linux發行版的安裝程序,能夠實現經過LiveCD,PXE,NFS等方式安裝Linux系統以及利用kickstart文件實現無人值守的無交互安裝。python
發行版製做(Fedoran系統環境)
- 選擇所需的軟件包。
製做本身的發行版首先要肯定你的發行版須要安裝哪些軟件。決定以後須要把這些軟件相應的RPM包拷貝到某個目錄,而後在這個目錄下執行createrepo命令來建立RPM軟件源。git
- 建立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/ui
- 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等。
-
啓動
-
內存監控
- scripts/anaconda-cleanup:監控安裝過程當中的內存狀態,並記錄到/tmp/memory.dat文件中。
- scripts/instperf及scripts/instperf.p:利用memory.dat文件生成相應的圖表。
-
升級工具
- scripts/makebumpver
- scripts/makeupdates