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
檔案,其中 version 是 lorax 套件的版本。
24.2.2. 安裝 livemedia-creator
livemedia-creator 工具是 lorax 套件的一部份。要安裝套件,請以
root
身份執行以下指令:
#
yum install lorax
除了 lorax 以外,您也必須安裝其它幾個套件。這些套件並非 lorax 的相依套件,因此不會被自動安裝;但根據您使用 livemedia-creator 的目的而定,會需要這些套件。這些套件有:
- virt-install:提供建立新虛擬機器所需工具的套件,用於第一階段建立即時媒介;若指定了
--no-virt
選項,則不需要此套件。 - libvirt、qemu-kvm、virsh 及其它虛擬化工具:使用 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.log
和 program.log
)每次都會被產生。
另一個尋找和解決問題的方法,就是在執行此工具程式使用
--image-only
選項。此選項會在第一階段後將程式停用,因此僅有磁碟映像檔會產生,而最終的開機 ISO 將不會產生。之後您便能在無需等待第二階段結束的情況下,掛載磁碟映像檔並查看其內容。此外,您亦可使用 --keep-image
選項,這將會執行這兩個階段,但會保留暫時性磁碟映像檔,以供之後分析用。
測試 Kickstart 檔案變更時,建議使用
--vnc
選項。此選項允許您使用 VNC 客戶端來連至虛擬機器,並檢視安裝進度。詳情請參閱〈章 22, 透過 VNC 安裝〉。
24.2.5.1. 虛擬機器安裝卡住
若在虛擬安裝的第一階段,安裝程式基於某些原因卡住的話,livemedia-creator 也會卡住,並等待安裝程序完成。您可直接干擾程式,或是藉由停用暫時性的虛擬機器來解決這項問題。Livemedia-creator 會偵測到客座端作業系統已中止,刪除所有暫時性的檔案並退出。
若要停止暫時性虛擬機器,請依照下列程序進行:
過程 24.1. 停下暫時性虛擬機器
- 使用 virsh 來列出系統上目前所有的虛擬機器(客座端)。輸出會與看似:
#
virsh list --all
Id Name State ---------------------------------------------------- 93 LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 running - RHEL7 shut off辨識暫時性虛擬機器。其名稱總是會以LiveOS
為起始,接著則是隨機產生的數字與字元字串。 - 當您辨識了暫時性的虛擬機器後,請使用
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. 移除暫時性客座和磁碟映像檔
- 使用 virsh 來列出系統上目前所有的虛擬機器(客座端)。輸出會與看似:
#
virsh list --all
Id Name State ---------------------------------------------------- 93 LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 running - RHEL7 shut off辨識暫時性虛擬機器。其名稱總是會以LiveOS
為起始,接著則是隨機產生的數字與字元字串。 - 當您辨識了暫時性的虛擬機器後,請使用
virsh destroy name
指令來停用它,name 代表虛擬機器的名稱:#
virsh destroy LiveOS-2a198971-ba97-454e-a056-799f453e1bd7
Domain LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 destroyed - 使用
virsh undefine name
來刪除暫時性虛擬機器,使用與先前步驟中相同的 name。#
virsh undefine LiveOS-2a198971-ba97-454e-a056-799f453e1bd7
Domain LiveOS-2a198971-ba97-454e-a056-799f453e1bd7 has been undefined - 尋找暫時性檔案系統的掛載點。它的目標將會是
/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
- 在
/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