国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Anaconda - 操作系統(tǒng)安裝程序 簡要介紹

這篇具有很好參考價值的文章主要介紹了Anaconda - 操作系統(tǒng)安裝程序 簡要介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Anaconda - 操作系統(tǒng)安裝程序 簡要介紹,# linux 系統(tǒng)內(nèi)核,運(yùn)維開發(fā)

官網(wǎng) 第 9 章 使用 anaconda 安裝

1. Anaconda 簡介

Anaconda是Fedora,Red Hat Enterprise Linux及其衍生產(chǎn)品中使用的操作系統(tǒng)安裝程序。它由Python模塊和腳本以及一些其他文件組成,如Gtk小部件(用C編寫),systemd單元和dracut庫。它們共同構(gòu)成了一個工具,允許用戶設(shè)置生成(目標(biāo))系統(tǒng)的參數(shù),然后在機(jī)器上安裝設(shè)置的系統(tǒng)。安裝過程有四個主要步驟:

  • 安裝目標(biāo)準(zhǔn)備(通常是磁盤分區(qū))
  • 包和數(shù)據(jù)安裝
  • 引導(dǎo)加載程序安裝和配置
  • 新安裝的系統(tǒng)的配置

Anaconda提供三種方法控制安裝程序并指定安裝選項(xiàng)。

  • 圖形用戶界面(GUI)。此接口旨在允許用戶在開始安裝之前以很少或不需要配置的交互式安裝,并且應(yīng)該涵蓋所有常見用例,包括設(shè)置復(fù)雜的分區(qū)布局。圖形界面還支持遠(yuǎn)程訪問VNC,即使在沒有顯卡的系統(tǒng)上也可以使用GUI。
  • 文本模式(TUI)。此接口旨在允許用戶執(zhí)行交互式安裝。TUI的工作方式類似于單色行式打印機(jī),即在不支持光標(biāo)移動,顏色和其他高級功能的串行控制臺上也能工作。文本模式的局限性在于它只允許您自定義最常用的選項(xiàng),例如網(wǎng)絡(luò)設(shè)置,語言選項(xiàng)或安裝(包)源; 此界面中不提供手動分區(qū)等高級功能。
  • Kickstart文件安裝。一個帶有類似shell語法的純文本文件,它可以定義驅(qū)動安裝過程的數(shù)據(jù)。Kickstart文件允許部分或完全自動化安裝。配置所有必需區(qū)域的某組命令完全自動化安裝; 如果缺少一個或多個所需命令,則安裝將需要交互。如果存在所有必需的命令,則將以完全自動的方式執(zhí)行安裝,而無需任何交互。Kickstart提供的選項(xiàng)涵蓋了TUI和GUI都不覆蓋的用例。Kickstart支持Anaconda中的每個功能; 其他接口僅遵循所有可用選項(xiàng)的子集。

注意:另一個Anaconda的字面含義:是一個用于python/R科學(xué)計(jì)算和機(jī)器學(xué)習(xí)的開源工具(也稱為Python的一種發(fā)行版),支持 Linux, macOS, Windows, 包含了conda等眾多工具包及其依賴項(xiàng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問題。請不要混淆!

2. Anaconda 體系結(jié)構(gòu)

Anaconda是由Python模塊、shell腳本和幾個外部包和庫組成。此工具集的主要組件包括以下幾塊:

  • pykickstart 用于解析和驗(yàn)證Kickstart文件,還提供存儲驅(qū)動安裝的值的數(shù)據(jù)結(jié)構(gòu)
  • yum 包管理器,它處理包的安裝和解決依賴關(guān)系
  • blivet 最初從anaconda包拆分為pyanaconda.storage; 用于處理與存儲管理相關(guān)的所有活動
  • pyanaconda 包含用戶界面核心和Anaconda獨(dú)有功能模塊的軟件包,例如鍵盤和時區(qū)選擇,網(wǎng)絡(luò)配置和用戶創(chuàng)建,以及許多實(shí)用程序和面向系統(tǒng)的功能
  • python-meh 包含一個異常處理程序,它在崩潰的情況下收集并存儲其他系統(tǒng)信息,并將此信息傳遞給libreport庫,庫本身也是ABRT項(xiàng)目的一部分。

安裝過程中數(shù)據(jù)的生命周期很簡單。如果提供了Kickstart文件,它將由pykickstart模塊處理并作為樹狀結(jié)構(gòu)導(dǎo)入到內(nèi)存中。如果未提供Kickstart文件,則會創(chuàng)建一個空的樹狀結(jié)構(gòu)。如果安裝是交互式的(并非所有必需的Kickstart命令都已使用),則會根據(jù)用戶在交互式界面中做出的選擇更新結(jié)構(gòu)。完成所有必需的選擇后,安裝過程開始,結(jié)構(gòu)中存儲的值用于確定安裝的參數(shù)。這些值也寫為Kickstart文件,保存在/root 已安裝系統(tǒng)的目錄中; 因此,可以通過重用此自動生成的Kickstart文件自動安裝。
?
樹狀結(jié)構(gòu)的元素由pykickstart包定義,但其中一些可以通過pyanaconda.kickstart模塊中的修改版本覆蓋。管理此行為的一個重要規(guī)則是沒有存儲配置數(shù)據(jù)的位置,并且安裝過程是數(shù)據(jù)驅(qū)動的,并且盡可能地依賴于事務(wù)。所以必須擁有以下功能:

  • Kickstart 必須支持 安裝程序的每個功能。
  • 在安裝過程中有一個明顯的點(diǎn),將更改寫入目標(biāo)系統(tǒng)之前,沒有進(jìn)行持久的更改(例如格式化存儲)。
  • 在用戶界面中手動進(jìn)行的每個更改都會反映在生成的Kickstart文件中,并且可以生成的Kickstart文件重復(fù)使用。

安裝是數(shù)據(jù)驅(qū)動的事實(shí),意味著安裝和配置邏輯位于樹狀結(jié)構(gòu)中的項(xiàng)的方法內(nèi)。setup如果需要,設(shè)置每個項(xiàng)目(方法)以修改安裝的運(yùn)行時環(huán)境,然后執(zhí)行(該execute方法)以在目標(biāo)系統(tǒng)上執(zhí)行更改。

3. Anaconda 開發(fā)模型

在Fedora的早期版本中,安裝程序的界面遵循向導(dǎo)設(shè)計(jì)模式,包括多個線性屏幕,偶爾嵌套模式彈出對話框。(參見下圖)雖然使用向?qū)ё鳛樵O(shè)計(jì)模式并不存在任何問題,但安裝程序所需的大量屏幕使其變得笨拙。你可以在這個過程中結(jié)束幾個屏幕,并且需要返回并在之前的屏幕上更改某些內(nèi)容,需要大量點(diǎn)擊和屏幕翻轉(zhuǎn)才能返回并返回到離開的位置。多個模態(tài)嵌套對話窗口有時使得與某些屏幕交互,特別是與分區(qū)相關(guān)的屏幕相混淆。
Anaconda - 操作系統(tǒng)安裝程序 簡要介紹,# linux 系統(tǒng)內(nèi)核,運(yùn)維開發(fā)
為了解決這些問題和其他問題,安裝程序開發(fā)團(tuán)隊(duì)將UI模型從基于線性向?qū)У哪P透臑?strong>中心輻射模型?;旧希惭b程序UI已被提煉為兩個主菜單,您可以從中選擇訪問各種選項(xiàng)屏幕。每個菜單都列出了每個子屏幕,并總結(jié)了為每個子屏幕選擇的選項(xiàng),因此您可以跳過不需要配置的屏幕(如果您愿意)。請參閱下圖,了解中心和輻條模型的工作原理。
Anaconda - 操作系統(tǒng)安裝程序 簡要介紹,# linux 系統(tǒng)內(nèi)核,運(yùn)維開發(fā)
Hub&Spoke模型中提供的新安裝程序解決了舊代碼庫中難以解決的許多問題:

  • 新安裝程序是以模塊化方式編寫的,因此沒有多個代碼副本可以分散在代碼庫中。
  • 使用安裝程序時,可以在后臺執(zhí)行長時間運(yùn)行的任務(wù)。例如,當(dāng)您首次啟動安裝程序并登陸第一個屏幕進(jìn)行語言選擇時,安裝程??序?qū)⒃诤笈_嘗試自動檢測您的網(wǎng)絡(luò)設(shè)置并為其設(shè)置網(wǎng)絡(luò)連接。
  • 新安裝程序的UI編寫方式使其在等待CPU和時間密集型任務(wù)處理時不會阻塞和凍結(jié)。
  • 新安裝程序主要基于kickstart,無論您是否使用自動和無人參與的kickstart選項(xiàng)進(jìn)行安裝,文本用戶界面或圖形用戶界面。除了實(shí)時媒體安裝方法之外,這三者共享一個通用代碼庫,提供跨安裝方法的更一致的體驗(yàn)以及更容易維護(hù)的代碼庫。最終,計(jì)劃是在安裝期間自動檢測系統(tǒng)可用的任何kickstart文件,并提供使用kickstart中的值預(yù)填充UI中的字段以幫助節(jié)省用戶時間。
  • 通過更改為hub-and-spoke模型而不是線性向?qū)P?,新UI允許用戶完全跳過他們不感興趣與之交互的屏幕,將安裝過程簡化為僅對那些最重要的屏幕安裝繼續(xù)。
  • 當(dāng)Fedora 19完成該功能后,新安裝程序?qū)⒃试S您在安裝程序下載并安裝Fedora到您的計(jì)算機(jī)時完成firstboot,從而有助于進(jìn)一步簡化安裝過程。如果您選擇在安裝期間未完成firstboot,則在重新引導(dǎo)系統(tǒng)后將顯示該引導(dǎo)。

線程和通信
在安裝過程中需要執(zhí)行的某些操作(例如掃描現(xiàn)有分區(qū)的磁盤或下載程序包元數(shù)據(jù))可能需要很長時間。為了防止等待并盡可能保持響應(yīng),Anaconda會在單獨(dú)的線程中運(yùn)行這些操作。

  • 在基于GTK工具包(GTK+(GIMP Toolkit)是一套源碼以LGPL許可協(xié)議分發(fā)、跨平臺的圖形工具包。最初是為GIMP寫的,已成為一個功能強(qiáng)大、設(shè)計(jì)靈活的一個通用圖形庫,是GNU/Linux下開發(fā)圖形界面的應(yīng)用程序的主流開發(fā)工具之一。)不支持從多個線程元素的變化。Gtk的主事件循環(huán)在Anaconda進(jìn)程本身的主線程中運(yùn)行,執(zhí)行涉及GUI的操作的所有代碼必須確保這些操作也在主線程中運(yùn)行。唯一支持的方法是使用GLib.idle_add,這并不總是容易或需要。為了緩解這個問題,pyanaconda.ui.gui.utils模塊中定義了幾個輔助函數(shù)和裝飾器。其中最有用的是@gtk_action_wait@gtk_action_nowait裝飾器。它們以這樣一種方式更改裝飾函數(shù)或方法:當(dāng)調(diào)用此函數(shù)或方法時,它會自動排入Gtk的主循環(huán),在主線程中運(yùn)行,返回值分別返回給調(diào)用者或刪除。
  • GIMP 是 GNU 圖像處理程序 (GNU Image Manipulation Program) 的縮寫。包括幾乎所有圖象處理所需的功能,號稱 Linux 下的 PhotoShop。GIMP 在 Linux 系統(tǒng)推出時就風(fēng)靡了許多繪圖愛好 者的喜愛,它的接口相當(dāng)輕巧,但其功能卻不輸于專業(yè)的繪圖軟件;它提供了各種的影像處理工具、濾鏡,還有許多的組件模塊,對于要制作一個又酷又炫的網(wǎng)頁按 鈕或網(wǎng)站 Logo 來說是一個非常方便好用的繪圖軟件,因?yàn)樗蔡峁┝嗽S多的組件模塊,你只要稍加修改一下,便可制作出一個屬于你的網(wǎng)頁按鈕或網(wǎng)站 Logo。

如前所述,使用多個線程的主要原因之一是允許用戶配置某些界面,而其他當(dāng)前正忙的界面(例如下載包元數(shù)據(jù)時的安裝源)自行配置。一旦配置完成,之前忙碌的輻條界面需要宣布它現(xiàn)在已經(jīng)準(zhǔn)備好并且沒有被阻止; 這由一個被調(diào)用的消息隊(duì)列處理,該隊(duì)列hubQ在主事件循環(huán)中被定期檢查。當(dāng)輻條變得可訪問時,它會向此隊(duì)列發(fā)送一條消息,通知此更改,并且不應(yīng)再阻止它。這種情況同樣適用于輻條需要刷新其狀態(tài)或完成標(biāo)志的情況,具有的不同配置和進(jìn)展稱為不同隊(duì)列progressQ用作傳送安裝進(jìn)度更新的介質(zhì)?;谖谋镜慕缑嬉残枰@些機(jī)制情況更復(fù)雜; 文本模式中沒有主循環(huán),而是在此模式下的大部分時間都花在等待鍵盤輸入上。

4. Anaconda 啟動概述

anaconda 啟動首先初始化線程,為啟動 Gtk 做準(zhǔn)備,然后設(shè)置 flags 準(zhǔn)備初始化日志記錄。導(dǎo)入系統(tǒng)安裝的設(shè)置模塊 vnc, kickstart, ntp, keyboard, display, startup_utils, rescue, geoloc 等,然后設(shè)置各種信號處理程序,加載 DBus ,獲取并讀取 (不執(zhí)行) 提供或者默認(rèn)的 kickstart 配置文件,獲取當(dāng)前位置,以便設(shè)置時區(qū), 設(shè)置語言, 初始化網(wǎng)絡(luò), 準(zhǔn)備啟動 UI, 通過 UI 進(jìn)行配置并將更新的內(nèi)容寫回 kickstart 文件中, 最后根據(jù)設(shè)置安裝程序。

5. Anaconda 源碼

源碼目錄結(jié)構(gòu)及簡單解析

1. 接口

pyanaconda/ui/

  • gui/:圖形界面接口實(shí)現(xiàn)代碼。
  • tui/:字符界面及命令行界面實(shí)現(xiàn)代碼。
  • init.pycommon.py:定義了gui和tui通用的基類(base class)
  • communication.py:負(fù)責(zé)UI中類的通信。包含用于在UI中的對象之間進(jìn)行通信的常量和方法。
  • pyanaconda/vnc.py: 此文件控制在安裝期間請求時設(shè)置VNC.

這些是anaconda支持的接口的主要UI文件:圖形,文本和命令行(實(shí)際上只是一種特殊形式的文本)。每個都由它自己的目錄實(shí)現(xiàn)。對于圖形安裝程序,glade接口文件位于同一位置。對于文本安裝程序,這還包括執(zhí)行面向行的輸入/輸出所需的代碼。這里有一個定義良好的API,允許添加額外的接口并使用新屏幕擴(kuò)展現(xiàn)有接口.

2. 自定義組件

  • glade/python/:讓用戶接口構(gòu)建器知道組件的存在及實(shí)現(xiàn)python的自省。這兩個目錄是支持文件。glade子目錄包含幫助glade理解這些新窗口小部件的代碼,以便可以在界面構(gòu)建器中使用它們。python子目錄包含允許以更原生的Python方式通過gobject-introspection使用小部件的代碼。
  • src/:實(shí)現(xiàn)各組件。這是自己實(shí)現(xiàn)小部件的代碼。每個窗口小部件類有一個標(biāo)頭和一個源代碼文件。

Glade是RAD (快速應(yīng)用開發(fā))工具,用于創(chuàng)建基于GTK 工具包和GNOME桌面。 其界面是類似于GIMP,可以進(jìn)行定制,甚至嵌入到Anjuta。Glade包括一些接口模塊,如文本框,對話框標(biāo)簽,數(shù)字輸入,復(fù)選框,菜單,使界面的開發(fā)更快。界面設(shè)計(jì)存儲為XML格式,從而使這些設(shè)計(jì)可以方便地與外部接口結(jié)合。安裝Glade也很簡單。例如,在Fedora中,您可以敲入命令yum安裝glade3。Glade沒有Anjuta一樣的強(qiáng)大的項(xiàng)目管理,但您可以創(chuàng)建,編輯和保存項(xiàng)目。

3. 硬盤分區(qū):使用python-blivet包

通過導(dǎo)入blivet包,對所選硬盤進(jìn)行分區(qū)。

  • pyanaconda/storage/osinstall.py
    class StorageDiscoveryConfig - 用于封裝各種檢測/初始化參數(shù)的類。
    class FSSet - 表示文件系統(tǒng)的類,對 FSH 定義的標(biāo)準(zhǔn)文件系統(tǒng)進(jìn)行配置,同時提供一些必要文件的解析(創(chuàng)建)函數(shù)如 /etc/fstab。以及掛載/卸載文件系統(tǒng)選項(xiàng)
    class Root - 將要安裝的系統(tǒng)路徑
    class BlkidTab
    class CryptTab
    class InstallerStorage - 對系統(tǒng)要安裝的設(shè)備進(jìn)行檢測,創(chuàng)建,設(shè)置,并且寫入相應(yīng)信息

  • pyanaconda/storage/autopart.py
    對所給 storage 設(shè)備根據(jù)需要進(jìn)行邏輯卷創(chuàng)建等操作,并進(jìn)行分區(qū)

4. Bootloader

  • pyanaconda/bootloader.py
    新版本已經(jīng)將此模塊拆分成一個package,此文件夾下的文件控制配置和寫入引導(dǎo)加載程序到已安裝的系統(tǒng)。每種類型的機(jī)器都有自己的引導(dǎo)加載程序方式(引導(dǎo)加載程序支持哪些類型的設(shè)備和文件系統(tǒng),配置文件的語法等)。因此有創(chuàng)建自己的類。此文件還可以處理內(nèi)核命令行參數(shù)。
    class Arguments - 獲取特定的ip
    class BootLoaderImage <- class LinuxBootLoaderImage - 定義bootloader image 的基本信息,包括返回 kernel 和 initrd 的文件名
    class BootLoader - 能夠?qū)Υ疟P進(jìn)行排序,遍歷安裝磁盤的信息判斷安裝磁盤是否適合安裝 bootloader,設(shè)置將要安裝的 boaotloader image 文件,設(shè)置 grub 的等待時間。
    class GRUB - 對 grub 安裝的基本信息進(jìn)行配置,讀取系統(tǒng)信息,對每個系統(tǒng)寫入 grub.cfg 等配置文件
    class GRUB2 繼承 class GRUB - 檢測并安裝 grub,以及密碼設(shè)置等

  • 函數(shù)

    def writeSysconfigKernel(storage, version, instClass): 根據(jù)版本獲取默認(rèn)內(nèi)核包的名稱
    def writeBootLoaderFinal(storage, payload, instClass, ksdata): 最后寫入引導(dǎo)程序
    def writeBootLoader(storage, payload, instClass, ksdata): 添加非默認(rèn)的其他的系統(tǒng)引導(dǎo)
    

5. 各個步驟的配置:

pyanaconda/desktop.py - 桌面配置
pyanaconda/keyboard.py - 設(shè)置鍵盤
pyanaconda/localization.py - 獲取位置
pyanaconda/network.py - 設(shè)置網(wǎng)絡(luò)
pyanaconda/ntp.py - 配置ntp
pyanaconda/timezone.py - 時區(qū)設(shè)置
pyanaconda/users.py - 設(shè)置用戶
?
這些文件包含通過界面或kickstart輸入的配置設(shè)置。在某種程度上,它們會影響安裝(例如,語言和鍵盤設(shè)置在anaconda中使用)。但是,主要目的是在安裝結(jié)束時將這些內(nèi)容寫入已安裝的系統(tǒng)。

6. 安裝軟件包:

  • pyanaconda/payload/
    這些文件控制以某種格式將文件安裝到系統(tǒng)中。anaconda允許多個安裝后端,但最常用的是 dnfpayload.py livepayload.py。每個后端都提供了選擇和刪除環(huán)境,組和包的方法; 配置回購以在安裝期間和安裝后使用; 報告進(jìn)展; 等等。這里有一個定義良好的API,允許添加額外的后端。

7. 安裝控制: 不同的發(fā)行版可以定義不同的安裝類。

安裝類定義形成一種安裝配置文件的設(shè)置。這包括顯示和跳過的步驟,產(chǎn)品名稱,安裝方法,啟用的存儲庫,配置設(shè)置等。主要使用它來創(chuàng)建Fedora和RHEL安裝之間的差異。其他項(xiàng)目或ISV可以為自己的默認(rèn)值定義自己的安裝類。

  • pyanaconda/installation_tasks.py
    class BaseTask - 保存任務(wù)的詳細(xì)信息
    class TaskQueue 繼承 class BaseTask - 任務(wù)隊(duì)列,提供 append(), insert() 等隊(duì)列操作,擁有 start() 來開始隊(duì)列中的任務(wù),能夠獲取任務(wù)的執(zhí)行的信息。
    class Task - 僅僅提供單任務(wù)執(zhí)行管理,與上面多個任務(wù)執(zhí)行的隊(duì)列不同,Task 類只支持單任務(wù)執(zhí)行,同時提供一些運(yùn)行信息。一個任務(wù)只能執(zhí)行一次,如果需要多次執(zhí)行,需要多個實(shí)例化 Task 類。

  • pyanaconda/installclass.py
    class BaseInstallClass - 記錄將要安裝系統(tǒng)的配置信息,并且提供設(shè)置系統(tǒng)安裝默認(rèn)信息的函數(shù),如 setDefaultPartitioning(), customizeDefaultPartitioning() 等。
    class InstallClassFactory - InstallClass工廠類

  • pyanaconda/installation.py
    doConfiguration() - 獲取系統(tǒng)各種配置(通過用戶給的kickstart文件,手動gui界面配置,tui界面配置),如以下代碼執(zhí)行對系統(tǒng)的各種配置進(jìn)行獲取。

    ...
    configuration_queue = TaskQueue("Configuration queue") #創(chuàng)建一個任務(wù)隊(duì)列
    # connect progress 
    reportingconfiguration_queue.queue_started.connect(lambda x:progress_message(x.status_message)) 
    configuration_queue.task_completed.connect(lambda x: progress_step(x.name))# 將任務(wù)添加到隊(duì)列中并且執(zhí)行。
    os_config = TaskQueue("Installed system configuration", N_("Configuring installed system"))
    os_config.append(Task("Configure authselect", ksdata.authselect.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure SELinux", ksdata.selinux.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure first boot tasks", ksdata.firstboot.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure services", ksdata.services.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure keyboard", ksdata.keyboard.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure timezone", ksdata.timezone.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure language", ksdata.lang.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure firewall", ksdata.firewall.execute, (storage, ksdata, instClass)))
    os_config.append(Task("Configure X", ksdata.xconfig.execute, (storage, ksdata, instClass)))
    configuration_queue.append(os_config)
     ...
    

    doInstall() - 對系統(tǒng)進(jìn)行安裝

  • pyanaconda/product.py

8. 無人值守安裝:pyanaconda/kickstart.py

Kickstart是一種自動化安裝的方法,它為anaconda提供了一個文件,其中包含用戶必須通過UI提供的所有數(shù)據(jù)。此文件是pykickstart包中的解析器和anaconda內(nèi)部之間的接口。它主要提供了一種在anaconda期望的地方保存設(shè)置的方法,幫助UI在內(nèi)存中構(gòu)造了一個kickstart數(shù)據(jù)對象。

9. 通過liveCD安裝系統(tǒng):

  • data/liveinst/
    這些文件通過Live CD實(shí)現(xiàn)安裝。它們提供了一種特殊的安裝方法,一個特殊的軟件包安裝后端,以及從Live CD桌面啟動安裝程序所需的一些文件。

10. 錯誤處理/日志:

  • 錯誤處理:
    pyanaconda/rescue.py - 提供救援模式
    pyanaconda/errors.py - 錯誤
    pyanaconda/exception.py - 異常
  • 日志記錄:
    pyanaconda/anaconda_loggers.py
    pyanaconda/anaconda_logging.py

這些文件控制著anaconda的所有錯誤報告。errors.py與UI結(jié)合,控制顯示用戶可以執(zhí)行某些操作的錯誤,或者至少是anaconda可以預(yù)期的錯誤。這是錯誤消息的中心位置。exception.py控制anaconda無法預(yù)料的錯誤顯示 - 基本上,這是處理未處理的異常的地方。這也是anaconda與libreport接口向Bugzilla報告問題的地方。

11. 安裝控制模塊

pyanaconda/progress.py - 控制進(jìn)度條。
pyanaconda/queue.py - 控制通信隊(duì)列。
pyanaconda/threads.py - 多線程支持。

這是一個松散的重要文件集合。install.py實(shí)際上執(zhí)行安裝步驟,其中包括調(diào)用kickstart,anaconda和python-blivet中的方法。progress.py提供了一種install.py和包后端的方法,用于與UI通信以移動進(jìn)度條和顯示消息。queue.py是一個支持文件,用于構(gòu)造通信隊(duì)列,如progress.py和communication.py中使用的那些隊(duì)列。最后,threads.py處理創(chuàng)建和管理線程,anaconda現(xiàn)在廣泛用于在后臺運(yùn)行任務(wù),同時仍允許UI更新。

12. 庫:提供一些工具如獲得用戶位置,安裝平臺等。

  • 平臺配置
    pyanaconda/addons.py
    pyanaconda/platform.py

  • GeoIP和WiFi定位模塊 - 基于IP地址的位置檢測,獲得所在時區(qū)等
    pyanaconda/flags.py
    pyanaconda/geoloc.py

  • 國際化工具
    pyanaconda/i18n.py

  • find first ISO Image,mount Image
    pyanaconda/image.py

pyanaconda/isys/
pyanaconda/iutil.py
pyanaconda/nm.py
pyanaconda/safe_dbus.py
這些文件提供了整個安裝程序中使用的各種其他方法。這些功能包括日志記錄框架,通過地理位置查找用戶的位置,查找有關(guān)附加光學(xué)安裝介質(zhì)的信息,與NetworkManager通信以及許多其他任務(wù)。它們還包含不適合其他任何地方的方法。

13. 主程序anaconda:由systemd在系統(tǒng)啟動后調(diào)用,設(shè)置環(huán)境、VNC等。

這是在系統(tǒng)啟動結(jié)束時通過systemd調(diào)用的主要anaconda程序。它處理大量環(huán)境設(shè)置,啟用更新(如果存在),讀取任何kickstart文件,設(shè)置VNC以及其他任務(wù)。完成所有這些操作后,它將控制權(quán)交給UI,后者又驅(qū)動安裝的其余部分。

14. 系統(tǒng)啟動

data/systemd/ - 用于系統(tǒng)啟動時的服務(wù)腳本
dracut/

15. 其他

  • 升級工具
    scripts/makebumpver
    scripts/makeupdates
    makeupdates是一個用于創(chuàng)建測試anaconda修復(fù)程序的更新圖像的工具。您可以參考特定標(biāo)記或提交來調(diào)用它,它將構(gòu)建一個包含自該點(diǎn)以來樹的所有更改的圖像。

  • 默認(rèn)配置
    data/interactive-defaults.ks
    data/post-scripts/
    鑒于anaconda通過UI在內(nèi)部構(gòu)建kickstart文件然后執(zhí)行它,某些安裝任務(wù)更容易實(shí)現(xiàn)為kickstart腳本。這樣做。interactive-defaults.ks是一個kickstart文件,在交互式非kickstart安裝開始時插入,該安裝包含UI的某些默認(rèn)設(shè)置。

  • 安裝清理
    scripts/anaconda-cleanup
    scripts/instperf
    scripts/instperf.p
    前者是一個程序,用于監(jiān)視安裝期間的內(nèi)存使用情況,并使用此信息寫出/tmp/memory.dat。后者是一個gnuplot腳本,它解釋該文件并生成圖形。我們使用它來識別內(nèi)存使用量的峰值。

  • 錯誤報告提交
    scripts/restart-anaconda
    utils/dd/
    utils/handle-sshpw
    utils/logpicker
    utils/log_picker/
    logpicker是一種工具,用于以各種方式從安裝環(huán)境中發(fā)送anaconda日志和其他有用的診斷信息(scp,ftp,Bugzilla …)。它與圖形處理有一些重疊,可讓您在anaconda崩潰時提交錯誤報告。自從2010年投入使用以來,它還沒有更新過.文章來源地址http://www.zghlxwxcb.cn/news/detail-701925.html

到了這里,關(guān)于Anaconda - 操作系統(tǒng)安裝程序 簡要介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 介紹一些操作系統(tǒng)— CentOS 系統(tǒng)

    CentOS 系統(tǒng) CentOS 是 Linux 發(fā)行版之一,是免費(fèi)的、開源的、可以 重新分發(fā) 的開源操作系統(tǒng)。 CentOS Linux發(fā)行版是一個穩(wěn)定的,可預(yù)測的,可管理的和可復(fù)現(xiàn)的平臺,源于 Red Hat Enterprise Linux(RHEL)依照開放源代碼規(guī)定釋出的源碼所編譯而成。 自 2004 2004 2004 年 3 3 3 月以來,Cen

    2024年02月13日
    瀏覽(20)
  • Linux操作系統(tǒng)介紹

    Linux操作系統(tǒng)介紹

    Linux是一個廣受歡迎的開源操作系統(tǒng),其靈活性、穩(wěn)定性和免費(fèi)的特性使其在全球范圍內(nèi)擁有眾多擁躉。本文將詳細(xì)介紹Linux的發(fā)展歷程、基本概念、常用發(fā)行版以及如何開始使用Linux等內(nèi)容,幫助您更深入地了解這個強(qiáng)大的操作系統(tǒng)。 Linux的起源可以追溯到20世紀(jì)90年代初。

    2024年02月11日
    瀏覽(23)
  • 主流操作系統(tǒng)介紹

    主流操作系統(tǒng)介紹 Windows :由微軟(Microsoft)開發(fā)和維護(hù),是個人電腦市場占有率最高的操作系統(tǒng)。目前最新的版本包括Windows 10以及更新的Windows 11。 macOS :蘋果公司(Apple Inc.)為Macintosh系列個人電腦設(shè)計(jì)的操作系統(tǒng),最新版本包括 macOS Monterey、Ventura等。 Linux :一系列開源

    2024年01月18日
    瀏覽(21)
  • Linux操作系統(tǒng)相關(guān)介紹

    Linux操作系統(tǒng)相關(guān)介紹

    目錄 一、認(rèn)識Linux 二、Linux特點(diǎn)總結(jié) 三、Linux版本 (1)Linux內(nèi)核版 (2)Linux發(fā)行版? ? 1991年,芬蘭的一名大學(xué)生Linus Torvalds開發(fā)了linux內(nèi)核 ? Linux是一種開放源代碼的、自由的、免費(fèi)的類Unix操作系統(tǒng)。 ? 通常Linux 這個詞本身只表示 Linux 內(nèi)核, 但是人們已經(jīng)習(xí)慣用Linux 來

    2024年02月07日
    瀏覽(21)
  • Windows 操作系統(tǒng)架構(gòu)介紹

    Windows 操作系統(tǒng)架構(gòu)介紹

    Windows 系統(tǒng)架構(gòu)包括以下組成部分: 內(nèi)核:Windows 內(nèi)核是操作系統(tǒng)的核心部分,它負(fù)責(zé)管理系統(tǒng)資源、處理用戶程序和驅(qū)動程序的請求、協(xié)調(diào)各種系統(tǒng)組件之間的通信等任務(wù)。Windows 內(nèi)核分為用戶模式和內(nèi)核模式,其中內(nèi)核模式是更高級別、更安全的模式,用戶程序無法直接訪

    2024年02月15日
    瀏覽(53)
  • 01 openEuler操作系統(tǒng)介紹

    01 openEuler操作系統(tǒng)介紹

    openEuler是一款開源操作系統(tǒng)。當(dāng)前openEuler內(nèi)核源于Linux,支持鯤鵬及其它多種處理器,能夠充分釋放計(jì)算芯片的潛能,是由全球開源貢獻(xiàn)者構(gòu)建的高效、穩(wěn)定、安全的開源操作系統(tǒng),適用于數(shù)據(jù)庫、大數(shù)據(jù)、云計(jì)算、人工智能等應(yīng)用場景。同時,openEuler是一個面向全球的操作

    2023年04月08日
    瀏覽(17)
  • 微控制器實(shí)時操作系統(tǒng)實(shí)踐1實(shí)時系統(tǒng)介紹

    微控制器實(shí)時操作系統(tǒng)實(shí)踐1實(shí)時系統(tǒng)介紹

    這本實(shí)踐指南將為你提供最重要的功能知識,以使實(shí)時操作系統(tǒng)(RTOS)在微控制器(MCU)上啟動和運(yùn)行。如果你有興趣學(xué)習(xí)如何通過使用實(shí)際硬件的實(shí)例來實(shí)現(xiàn)RTOS的應(yīng)用,并討論常見的性能與開發(fā)時間的權(quán)衡,那么你就來對地方了!我們將使用自由RTOS來實(shí)現(xiàn)代碼! 我們將使

    2024年02月08日
    瀏覽(22)
  • MCU常見的操作系統(tǒng)介紹

    ????????MCU微控制器幾種常見的操作系統(tǒng)各自的優(yōu)缺點(diǎn)介紹 目錄 一、FreeRTOS 二、uC/OS-II 三、μC/OS-III 四、RT-Thread ????????FreeRTOS是一款免費(fèi)、開源的實(shí)時操作系統(tǒng)(RTOS),由英國工程師Richard Barry創(chuàng)建,最早發(fā)布于2003年。它的設(shè)計(jì)目標(biāo)是為嵌入式系統(tǒng)提供一款可靠、靈

    2024年02月16日
    瀏覽(14)
  • Linux操作系統(tǒng)的安全相關(guān)介紹

    Linux操作系統(tǒng)的安全相關(guān)介紹

    ????????Linux操作系統(tǒng)的安全模型、訪問控制、安全策略和加密機(jī)制是確保系統(tǒng)安全的重要組成部分。下面將詳細(xì)介紹這些方面。 ??????? ?安全模型 ????????Linux操作系統(tǒng)的安全模型基于傳統(tǒng)的Unix安全模型,主要包括以下核心概念: 1. **用戶和組**:Linux系統(tǒng)中的每

    2024年04月16日
    瀏覽(18)
  • Docker 介紹 及 支持的操作系統(tǒng)

    Docker 介紹 及 支持的操作系統(tǒng)

    Docker組成: Docker主機(jī)(Host):?一個物理機(jī)或虛擬機(jī), 用于運(yùn)行Docker服務(wù)進(jìn)程和容器, 也成為宿主機(jī), node節(jié)點(diǎn)。 Docker服務(wù)器端(Server): Docker守護(hù)進(jìn)程, 運(yùn)行Docker容器。 Docker客戶端(Client): 客戶端使用docker命令或其他工具調(diào)用docker API。 Docker倉庫(Registry):保存鏡像的倉庫, 官方倉庫

    2024年02月02日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包