發行版製做及Anaconda基礎

Anaconda是用於Fedora, RHEL等Linux發行版的安裝程序,能夠實現經過LiveCD,PXE,NFS等方式安裝Linux系統以及利用kickstart文件實現無人值守的無交互安裝。python

發行版製做(Fedoran系統環境)

  1. 選擇所需的軟件包。

製做本身的發行版首先要肯定你的發行版須要安裝哪些軟件。決定以後須要把這些軟件相應的RPM包拷貝到某個目錄,而後在這個目錄下執行createrepo命令來建立RPM軟件源。git

  1. 建立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

源碼目錄結構

  1. 接口:pyanaconda/ui/工具

    • gui/:圖形界面接口實現代碼。
    • tui/:字符界面及命令行界面實現代碼。
    • _init_.py 及 common.py:定義了gui和tui通用的基類(base class)
    • communication.py:負責UI中類的通訊。
  2. 自定義組件:widgets/ui

    • data/:存放時區地圖組件的圖片。
    • glade/及python/:讓用戶接口構建器知道組件的存在及實現python的自省。
    • src/:實現各組件。
  3. 分區:python-blivet包命令行

  4. Bootloader: pyanaconda/bootloader.py線程

  5. 各個步驟的配置:日誌

    • pyanaconda/desktop.py
    • pyanaconda/keyboard.py
    • pyanaconda/localization.py
    • pyanaconda/network.py
    • pyanaconda/ntp.py
    • pyanaconda/timezone.py
    • pyanaconda/users.py
  6. 安裝軟件包:接口

    • pyanaconda/packaging/
    • scripts/anaconda-yum
  7. 安裝類: 不一樣的發行版能夠定義不一樣的安裝類。隊列

    • pyanaconda/installclass.py
    • pyanaconda/installclasses/
    • pyanaconda/product.py
  8. 無人值守安裝:pyanaconda/kickstart.py

  9. liveCD:

    • data/icons/
    • data/liveinst/
  10. 錯誤處理:

    • pyanaconda/errors.py
    • pyanaconda/exception.py
  11. 安裝控制庫

    • pyanaconda/install.py:控制安裝步驟。
    • pyanaconda/progress.py:控制進度條。
    • pyanaconda/queue.py:控制通訊隊列。
    • pyanaconda/threads.py:多線程支持。
  12. 庫:提供一些工具如得到用戶位置,安裝日誌等。

    • 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
  13. 主程序anaconda:由systemd在系統啓動後調用,設置環境、VNC等。

  14. 啓動

    • data/systemd/
    • dracut/
  15. 內存監控

    • scripts/anaconda-cleanup:監控安裝過程當中的內存狀態,並記錄到/tmp/memory.dat文件中。
    • scripts/instperf及scripts/instperf.p:利用memory.dat文件生成相應的圖表。
  16. 升級工具

    • scripts/makebumpver
    • scripts/makeupdates
相關文章
相關標籤/搜索