Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

24.2. 自動磁碟映像檔安裝

建立磁碟映像檔與安裝進映像檔可以使用 livemedia-creator 來進行自動化。要進行自動化安裝,您需要已安裝的 Red Hat Enterprise Linux 系統與 Kickstart 檔案。磁碟映像檔本身並不需要手動建立。欲知建立、使用 Kickstart 檔案的資訊,請參閱〈章 23, Kickstart 安裝〉。

24.2.1. livemedia-creator 的概觀

通常,使用 livemedia-creator 建立自訂映像檔是個兩階段的過程。在第一階段中會建立暫時的磁碟映像檔,而 Anaconda,亦即 Red Hat Enterprise Linux 的安裝城市,會根據 Kickstart 檔案的參數在這映像檔上安裝系統。然後,在第二階段裡,livemedia-creator 會使用此暫時性的系統建立最終、可開機的映像檔。
這行為可以透過指定額外參數來改變。例如,您可以只執行第一階段,得到磁碟映像檔;或跳過第一階段,直接使用現有的磁碟或檔案系統映像檔,來建立最終的可開機 ISO 檔案。

重要

目前使用 livemedia-creator 來建立自訂的映像檔,只支援 AMD64 與 Intel 64(x86_64)系統。
除此之外,此建立過程只支援 Red Hat Enterprise Linux 7。建立更早期版本的自訂映像檔是有可能的,但並不受到 Red Hat 的支援。
使用 livemedia-creator 的範例可以在〈節 24.2.4, “建立自訂的映像檔”〉裡面找到。在安裝了 lorax 套件的系統上,使用者可以透過 livemedia-creator --help 指令看到所有可用選項的清單。其它文件也透過 lorax 套件安裝: livemedia-creator(1) man page 以及位於 /usr/share/doc/lorax-version/ 目錄的 README.livemedia-creator 檔案,其中 versionlorax 套件的版本。

24.2.2. 安裝 livemedia-creator

livemedia-creator 工具是 lorax 套件的一部份。要安裝套件,請以 root 身份執行以下指令:
# yum install lorax 
除了 lorax 以外,您也必須安裝其它幾個套件。這些套件並非 lorax 的相依套件,因此不會被自動安裝;但根據您使用 livemedia-creator 的目的而定,會需要這些套件。這些套件有:
  • virt-install:提供建立新虛擬機器所需工具的套件,用於第一階段建立即時媒介;若指定了 --no-virt 選項,則不需要此套件。
  • libvirtqemu-kvmvirsh 及其它虛擬化工具:使用 virt-install 時,您的系統必須準備好建立、執行與管理虛擬機器。請參閱《Red Hat Enterprise Linux 7 虛擬建置與管理指南》,以瞭解 Red Hat Enterprise Linux 的虛擬化資訊,以及關於安裝、使用虛擬化工具的資訊。
  • anaconda:Red Hat Enterprise Linux 的安裝程式,用於第一階段而非 virt-install(如果使用了 --no-virt 選項的話)。
您可能也需要其它應用程式,但這些應用程式的資訊已超越本章的範圍。如果您執行 livemedia-creator 搭配某些選項、卻少了某個套件時,程式會停止運作,並顯示錯誤訊息,提示您安裝這套件之後才可以繼續進行下去。

24.2.3. Kickstart 檔案的範例

要成功建立自訂的即時媒介,您需要合於規範的 Kickstart 配置檔。安裝 lorax 套件時會一併安裝兩個範例檔。您可以使用這些範例作為建立自訂映像檔的範例,或者也可以將其複製、修改以符合用途。這兩個範例檔案都位於 /usr/share/doc/lorax-version/ 目錄中,其中 version 是安裝於系統上的 lorax 套件之版本號碼。
可用的範例檔案為:
  • rhel7-minimal.ks:提供基本安裝(@core 群組)及其它基本套件(如 kernel 與 GRUB2 開機載入程式)。除了 root 以外不會建立任何使用者,沒有圖形化介面,也不會安裝其它套件。
  • rhel7-livemedia.ks:更進階的配置檔案,建立含有圖形化介面的即時系統。除了 root 使用者以外,還會建立 liveuser
這兩個範例檔案都需要修改安裝來源。方法是在基本文書處理器(如 vim)開啟範例檔,找到 url 指令,將其位址改為正確的安裝來源即可。其它地方不需修改,即可使用這些範例檔。

重要

請不要在範例檔的原有目錄進行修改。請先將這些檔案複製到其它目錄,再修改複製本。

注意

請記得,在 Kickstart 檔案中指定安裝來源與額外軟體庫時,此處只支援 Red Hat 提供的官方軟體庫。自訂的軟體庫可能可以運作,但並不受到支援。

24.2.4. 建立自訂的映像檔

本節描述了幾個常見的 livemedia-creator 使用模式,但不會列出完整的選項清單。要檢視每個可用的選項,請執行 livemedia-creator --help 或參閱 livemedia-creator(1) 的 man page。

24.2.4.1. 使用 virt-install 建立即時映像檔

livemedia-creator 最常見的用法也許牽涉到使用 virt-install 來建立暫時性的虛擬機器,用於即時映像檔的建立過程。要使用 virt-install 建立即時 ISO 檔案,您需要合於規範的 Kickstart 檔案與可開機的 ISO 映像檔,後者包括 Anaconda 安裝程式。這種映像檔是由 Red Hat 所提供的「基礎開機媒介」,詳情請見〈節 2.2, “建立 USB 安裝媒介”〉。
以下指令是使用 virt-install 建立基本即時映像檔時,所使用的指令:
# livemedia-creator --make-iso --iso=/path/to/boot.iso --ks=/path/to/valid/kickstart.ks 
用基礎安裝開機映像檔的路徑取代 /path/to/boot.iso,用正確、將用於建立映像檔過程的 Kickstart 檔案之路徑取代 /path/to/valid/kickstart.ks
在這種情況下會用到的幾個額外選項為:
  • --vnc vnc:這選項能讓您使用諸如 TigerVNC 的 VNC 用戶端來監控安裝過程。這選項會轉送到 virt-install 的 --graphics 選項。詳情請參閱〈章 22, 透過 VNC 安裝〉。
  • --ram x:允許您指定暫時性虛擬機器所使用的記憶體大小,單位為 MB。
  • --vcpus x:虛擬機器的處理器數量。

24.2.4.2. 使用 Anaconda 的映像檔安裝來建立即時映像檔

另一個建立即時映像檔的方法是使用 Anaconda 的安裝映像檔功能。在這種情況下,不需要包含安裝程式的映像檔,但 anaconda 套件必須安裝在系統上。同樣地,這過程有兩個階段:首先,系統會建立暫時性的磁碟映像檔,然後在其上安裝系統;接著這映像檔會用來建立最後的可開機 ISO。

警告

使用 Anaconda 來建立即時映像檔會有潛在性的危險,因為這使用了系統本身的安裝程式,而非虛擬機器中的安裝程式。雖然目前沒有任何已知的 bug 會造成問題,但這過程有可能會造成整台系統不穩定。因此,只建議在特別用於此目的的虛擬機器(客座端)上執行 livemedia-creator--no-virt 選項。

重要

在使用 Anaconda 建立自訂映像檔前,請將 SELinux 設定為「寬容」(或「停用」)模式。欲知如何設定 SELinux 的模式,請參閱《Red Hat Enterprise Linux 7 SELinux 使用者與管理員指南》。
要透過 Anaconda 建立即時映像檔,請使用 --no-virt 選項。例如:
# livemedia-creator --make-iso --ks=/path/to/valid/kickstart.ks --no-virt 

24.2.4.3. 建立磁碟或檔案系統映像檔

您也可以使用 livemedia-creator 建立磁碟或檔案系統映像檔。這表示僅執行建立映像檔的第一階段。這不會建立最後的 ISO 成品,程式會在完成安裝暫時性的磁碟或檔案系統映像檔時終止。接下來您可以掛載、檢查這映像檔有沒有錯誤,這在對修改過的 Kikcstart 檔案進行障礙排除時,很有幫助;您也可以將其保留下來,日後建立映像檔時可以節省時間。
第一階段結束後,有幾個方式可以停止建立過程。您可以使用 --image-only 選項,如以下範例所示:
# livemedia-creator --make-iso --ks=/path/to/valid/kickstart.ks --iso=/path/to/boot.iso --image-only 
或者,您可以使用 --make-disk 選項,而不是 --make-iso
# livemedia-creator --make-disk --ks=/path/to/valid/kickstart.ks --iso=/path/to/boot.iso 
您可以使用 --make-fsimage 選項,建立檔案系統映像檔,而不是分割區映像檔:
# livemedia-creator --make-fsimage --ks=/path/to/valid/kickstart.ks --iso=/path/to/boot.iso 

注意

或是在本節所述的所有範例中,使用 --no-virt 選項。
不管是什麼情況,結果是分割區的磁碟映像檔,或檔案系統映像檔,根據預設值會位於 /var/tmp/ 目錄中。要變更這目錄,請使用 --tmp /path/to/temporary/directory/ 選項,其中 /path/to/temporary/directory/ 是目標目錄的路徑。

24.2.4.4. 使用之前所建立的磁碟或檔案系統映像檔

如果您已經有磁碟或檔案系統映像檔(參見〈節 24.2.4.3, “建立磁碟或檔案系統映像檔”〉),您可以將映像檔送至 livemedia-creator,建立最後可開機的 ISO 映像檔。在這種情況下,不需要 Kickstart 檔案或 Anaconda 安裝映像檔;以上二者只用於建立映像檔的第一階段,在此情況下可以略過。
要從現有分割區的磁碟映像檔建立最後的映像檔,請使用 --disk-image 選項。例如:
# livemedia-creator --make-iso --disk-image=/path/to/disk/image.img 
如果您想要使用檔案系統映像檔,而不是磁碟映像檔,請改用 --fs-images 選項:
# livemedia-creator --make-iso --fs-image=/path/to/filesystem/image.img 

24.2.4.5. 建立應用裝置

livemedia-creator 的另一個作用就是建立應用裝置映像檔(分割的磁碟映像檔),包括一個包含了描述的 XML 檔案,並透過使用一個範本來產生。此情況下支援虛擬機器安裝以及映像檔安裝。若要建立一個應用裝置映像檔和描述,請使用 --make-appliance 選項來代替 --make-iso。例如:
# livemedia-creator --make-appliance --ks=/path/to/valid/kickstart.ks --iso=/path/to/boot.iso 
映像檔和描述 XML 檔案皆會被存放在 /var/tmp/ 目錄中,除非透過使用 --resultdir 選項來指定不同的目錄。
建立應用裝置的額外選項有:
  • --app-name name:指定應用裝置的名稱,這將會出現在標記了 <name> 標籤的 XML 描述檔案中。預設值為 None
  • --app-template /path/to/template.tmpl:指定欲使用的範本。預設值為 /usr/share/lorax/appliance/libvirt.tmpl
  • --app-file /path/to/app/file.xml:指定已產生之描述 XML 檔案的名稱。預設值為 appliance.xml

24.2.4.6. 建立一個 Amazon Machine Image(AMI)

若要建立一個 Amazon Machine Image(AMI)以使用於 Amazon Elastic Compute Cloud(EC2)中,請使用 --make-ami 選項。虛擬化和映像檔安裝兩者皆受到支援。
# livemedia-creator --make-ami --ks=/path/to/valid/kickstart.ks --iso=/path/to/boot.iso 
形成的檔案會是一個名為 ami-root.img 的映像檔,位於 /var/tmp/ 目錄中,除非您使用了 --resultdir 選項來指定一個不同的目錄。

24.2.4.7. 額外引數

下列選項適用于以上列出的所有使用範例(虛擬安裝、Anaconda 映像檔安裝和其它)。
  • --keep-image:當您指定了這項選項時,在安裝程序第一階段中使用的暫時性磁碟映像檔將不會被刪除。它將會位於 /var/tmp/ 目錄中,並且會有個隨機產生的名稱,例如 diskgU42Cq.img
  • --image-only:使用此選項代表僅有映像檔建立程序的第一個階段會被執行。與其產生最後的開機 ISO 映像檔,livemedia-creator 僅會建立暫時性的磁碟映像檔,並藉由它來進行安裝程序。此選項能在您測試 Kickstart 檔案修改時為您節省時間,因為您能跳過非常耗時的第二階段和檢查暫時性的磁碟映像檔。
  • --image-name 名稱:允許您為暫時性的磁碟映像檔指定自訂名稱。預設名稱會隨機產生(例如 disk1Fac8G.img)。
  • --tmp /path/to/temporary/directory/:指定頂層的暫時性目錄。預設值為 /var/tmp/。當使用此選項時,您必須指定一個已存在的目錄。
  • --resultdir /path/to/results/directory/:指定目錄,結果(開機 ISO 映像檔)會在 livemedia-creator 結束時出現。您不可指定一個目前已存在的目錄。預設值為 /var/tmp/。此選項僅適用於最後的 ISO 映像檔;若您要建立一個磁碟或是檔案系統映像檔,並且希望將它儲存在特定位置上,請使用 --tmp 選項。
  • --logfile /path/to/log/file/:指定程式日誌檔案的位置。

24.2.5. 為 livemedia-creator 的問題進行疑難排解

此部分提供了使用 livemedia-creator 時,經常遇到的各種問題的建議解決方式。若您遇上了未在此描述的問題,您可查看程式的日誌檔案,這一般會在每次執行時產生,並儲存在您執行此工具的目錄中,除非您透過使用 --logfile 選項指定了不同的目錄。日誌檔案會根據您所使用的選項有所不同 — 比方說,virt-install.log 在您使用了 --no-virt 選項時將不會被產生(反之,您將會得到來自於 Anaconda 的日誌檔案,位於 anaconda/ 目錄中)。其它檔案(即 livemedia.logprogram.log)每次都會被產生。
另一個尋找和解決問題的方法,就是在執行此工具程式使用 --image-only 選項。此選項會在第一階段後將程式停用,因此僅有磁碟映像檔會產生,而最終的開機 ISO 將不會產生。之後您便能在無需等待第二階段結束的情況下,掛載磁碟映像檔並查看其內容。此外,您亦可使用 --keep-image 選項,這將會執行這兩個階段,但會保留暫時性磁碟映像檔,以供之後分析用。
測試 Kickstart 檔案變更時,建議使用 --vnc 選項。此選項允許您使用 VNC 客戶端來連至虛擬機器,並檢視安裝進度。詳情請參閱〈章 22, 透過 VNC 安裝〉。

24.2.5.1. 虛擬機器安裝卡住

若在虛擬安裝的第一階段,安裝程式基於某些原因卡住的話,livemedia-creator 也會卡住,並等待安裝程序完成。您可直接干擾程式,或是藉由停用暫時性的虛擬機器來解決這項問題。Livemedia-creator 會偵測到客座端作業系統已中止,刪除所有暫時性的檔案並退出。
若要停止暫時性虛擬機器,請依照下列程序進行:

過程 24.1. 停下暫時性虛擬機器

  1. 使用 virsh 來列出系統上目前所有的虛擬機器(客座端)。輸出會與看似:
    # virsh list --all Id Name State ---------------------------------------------------- 93 LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 running - RHEL7 shut off 
    辨識暫時性虛擬機器。其名稱總是會以 LiveOS 為起始,接著則是隨機產生的數字與字元字串。
  2. 當您辨識了暫時性的虛擬機器後,請使用 virsh destroy name 指令來停用它,name 代表虛擬機器的名稱:
    # virsh destroy LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 Domain LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 destroyed 

24.2.5.2. 退出的虛擬機器安裝

若您執行一項虛擬安裝而在第一階段時,程序基於某原因受到干擾(例如硬體錯誤、電源中斷或鍵盤干擾),virt-install 將無法再次開始,直到您移除先前建立的暫時性磁碟映像和虛擬機器。下列程序解釋了如何進行此動作。
並非所有步驟每次皆需要進行。比方說,若您由系統當機後復原,您將無須停用暫時性虛擬機器,只要將其取消定義即可。 若您只希望清除由 livemedia-creator 所建立的暫時性檔案,而不再進行其它動作,您亦可使用步驟 4 和 5。

過程 24.2. 移除暫時性客座和磁碟映像檔

  1. 使用 virsh 來列出系統上目前所有的虛擬機器(客座端)。輸出會與看似:
    # virsh list --all Id Name State ---------------------------------------------------- 93 LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 running - RHEL7 shut off 
    辨識暫時性虛擬機器。其名稱總是會以 LiveOS 為起始,接著則是隨機產生的數字與字元字串。
  2. 當您辨識了暫時性的虛擬機器後,請使用 virsh destroy name 指令來停用它,name 代表虛擬機器的名稱:
    # virsh destroy LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 Domain LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 destroyed 
  3. 使用 virsh undefine name 來刪除暫時性虛擬機器,使用與先前步驟中相同的 name
    # virsh undefine LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 Domain LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 has been undefined 
  4. 尋找暫時性檔案系統的掛載點。它的目標將會是 /var/tmp/ 目錄並且其名稱將會是 lorax.imgutils,接著六個隨機產生的數字或字元。
    # findmnt -T /var/tmp/lorax.imgutils* TARGET SOURCE FSTYPE OPTIONS /var/tmp/lorax.imgutils.bg6iPJ /dev/loop1 iso9660 ro,relatime 
    之後,請使用 umount 指令來將它卸載:
     # umount /var/tmp/lorax.imgutils.bg6iPJ 
  5. /var/tmp 目錄中尋找 virt-install 所建立的暫時性磁碟映像。此檔案的名稱會在安裝程序一開始時出現在指令列上,並且將會是隨機產生的一組名稱,除非您使用了 --image-name 選項指定一組名稱。例如:
     2013-10-30 09:53:03,161: disk_size = 5GB 2013-10-30 09:53:03,161: disk_img = /var/tmp/diskQBkzRz.img 2013-10-30 09:53:03,161: install_log = /home/pbokoc/lorax/virt-install.log mount: /dev/loop1 is write-protected, mounting read-only 
    在以上範例中,暫時性磁碟映像為 /var/tmp/diskQBkzRz.img
    若您找不到初始訊息,您可手動式辨識暫時性檔案。您可使用 ls 指令並篩選檔案名稱中包含了 disk 的輸出,以列出 /var/tmp 目錄的所有內容:
    # ls /var/tmp/ | grep disk diskQBkzRz.img 
    接著,刪除暫時性磁碟映像:
    # rm -f /var/tmp/diskQBkzRz.img 
若您依照此程序中所有步驟進行,您現在便能以 virt-install 開始進行新的安裝程序。

24.2.5.3. 使用 --no-virt 安裝失敗

若要使用 Anaconda 映像安裝功能(--no-virt 選項)復原一項被干擾的安裝程序,您可執行 anaconda-cleanup script,此 script 會與 anaconda 套件一起被安裝,並且位於 /usr/bin/ 目錄中。
使用下列指令來執行清除 script。您將需要透過 root 身份來進行此動作。
# anaconda-cleanup