
借助於 KIWI,您可以建立作業系統影像。本章介紹了將系統影像部署至空用戶端機器的程序。出於此目的,您需要建立包含可開機之 RAW 影像的預先載入影像。此檔案包含兩個重要部分︰分割區表與實際的作業系統。首次開機時,此 RAW 影像將會寫入空的硬碟中,並且作業系統會延伸至剩餘的磁碟空間。
要建立這樣的影像,請參閱http://doc.opensuse.org/projects/kiwi/doc/。建立 ISO 影像時,可在目的目錄中尋找 RAW 檔案。有多種方法可將 RAW 影像傾印到磁碟上。
將磁碟插到部署伺服器中,然後將影像複製到 RAW 裝置。
透過 HTTP 或 FTP 伺服器提供 RAW 影像,並將影像傾印到用戶端機器的磁碟上。
建立一個 netboot 影像,獲取該影像並將其傾印到磁碟上。對於大量部署而言,這是一種很好的方法。
啟動救援磁碟,透過救援影像手動完成傾印。
若要快速啟動,最好使用第 23.1 節「從救援影像手動部署系統」 中描述的一種方法。
在 CD/DVD 中燒錄您在執行 KIWI 建立程序後獲取的 ISO 影像。
從此媒體開機到用戶端機器。
選取用於安裝的硬碟。
重新啟動用戶端機器,然後從硬碟開機。
使用救援系統將用戶端機器開機。可在所有 SUSE 安裝 CD 或 DVD 上使用此類系統。
以 root 身分登入。不要輸入密碼。
設定您的網路。如果您的網路中有 DHCP,只需使用指令 ifup-dhcp eth0 即可完成設定。如果必須手動完成,請使用指令 ip 設定您的網路。啟動 DHCP 的輸出還會告知您電腦的 IP 位址。
監聽網路上未使用的連接埠,如 1234,並使用以下指令將內送資料傾印到磁碟上︰
netcat -l -p 1234 > /dev/sda
在影像伺服器上,使用以下指令將 RAW 影像傳送至用戶端機器︰
netcat <IP of client> 1234 < $HOME/preload_image/<image_name>
影像傳送後,從 CD 或 DVD 光碟機移除救援系統,然後關閉用戶端機器。重新開機時,用戶端上會啟動開機載入程式 GRUB,然後首次開機系統會接管作業。
當在類似硬體上進行多次作業系統安裝時,花點精力準備作業系統的大量部署以最大程度地減少實際部署所需的時間將很有幫助。本章介紹了此程序。這樣做後,使用者只需將電腦接上電源,連上網路,啟動網路開機,然後等到再次關閉為止。
為完成此任務,需要執行下列動作︰
應當準備好專用的機器來提供 PXE 開機及 FTP 或 Web 伺服器,從而提供預先載入影像。為機器配備充足的記憶體,以便在其中存放所有必要的安裝資料,這是個不錯的做法。對於預設安裝而言,您需要至少 4 GB 的記憶體。可以使用 SUSE Linux Enterprise Server 完成所有必要的任務。如需詳細資訊,請參閱第 23.2.1 節「設定開機與安裝伺服器」。
實際的安裝透過將作業系統的 Raw 影像複製到新的硬碟來完成。需要準備並仔細測試所有的功能與設定。若要提供此類影像,可以使用 SUSE Linux Enterprise 作業系統之 SDK 中的 KIWI。如需關於使用 KIWI 建立影像的詳細資訊,請參閱 http://doc.opensuse.org/projects/kiwi/doc/。如需有關預先載入影像要求的詳細資訊,請參閱第 23.2.2 節「建立預先載入影像」。
包含 KIWI 的 SDK 是 SUSE Linux Enterprise 的附加產品,可從 http://download.suse.com/ 下載。請搜尋 SUSE Linux Enterprise 軟體開發套件。
這是一個需要具備某些 Linux 專門技術的任務。第 23.2.3 節「建立部署預先載入影像的啟始系統」 中提供了一個介紹如何完成此作業的範例安裝。
必須告知 PXE 開機啟動安裝系統,接著會從伺服器擷取預先載入的影像並將其複製到硬碟。
在安裝 SUSE Linux Enterprise Server 後執行此任務需要完成四個步驟︰
依照第 14.2 節「安裝保存安裝來源的伺服器」 中的說明安裝安裝來源。選擇 HTTP 或 FTP 網路伺服器。
設定 TFTP 伺服器以存放開機影像 (此影像將在後面的步驟中建立)。如需詳細資訊,請參閱第 14.3.2 節「設定 TFTP 伺服器」。
設定 DHCP 伺服器以向所有機器指派 IP 位址,並向目標系統顯示 TFTP 伺服器的位置。如需詳細資訊,請參閱第 14.3.1 節「設定 DHCP 伺服器」。
準備安裝伺服器 PXE 開機。如需進一步詳細說明,請參閱第 14.3.3 節「使用 PXE 開機」。
請注意,如果為此機器配備充足的記憶體以存放預先載入影像,則在實際安裝時會大大受益。另外,與速度較慢的網路相比,使用 gigabit 乙太網路可顯著提升部署的速度。
http://doc.opensuse.org/projects/kiwi/doc/ 中介紹了使用 KIWI 建立影像的程序。但是,若要為大量部署建立有用的影像,則需要考慮以下幾個因素︰
典型的預先載入影像將採用下列類型︰
<type primary="true" filesystem="btrfs" boot="oemboot/suse-SLES12">vmx</type>
在預先載入影像的設定期間,影像建立程序會多次執行。本地電腦上應提供建立影像所需的儲存庫。
需要投入一些精力設定首次開機,視所需的預先載入使用狀況而定。如需有關首次開機的詳細資訊,請參閱第 20 章「部署自定的預先安裝」。藉由此方法,您也可以要求使用者在系統首次開機時完成初始組態設定。
可在影像中設定許多其他功能,如新增更新儲存庫或在首次開機時進行更新。但是,本文件中無法涵蓋所有可能的情況,並且建立預先載入影像需要深入瞭解影像系統 KIWI,以及 SUSE Linux Enterprise Server 中使用的其他幾項技術 (具體視要求而定)。
要部署的實際影像必須能夠從您在安裝伺服器上提供的 FTP 或 HTTP 伺服器獲取。
若要執行自動部署,必須啟動目標電腦上的啟始 Linux 系統。典型安裝期間,會從部分開機媒體中讀取核心與啟始 RAM 檔案系統,然後由 bios 啟動。所需的功能可在 RAM 檔案系統中執行,該系統與核心將一起做為啟始系統。
啟始系統必須提供的主要功能有︰啟用對硬碟的存取以及提供網路連線。這兩項功能均受要在其上進行部署之硬碟的影響。理論上,您可以從頭開始建立啟始系統,但為了簡化任務,也可以修改機器在開機時所使用的啟始 RAM 檔案系統。
以下程序提供了如何建立所需的啟始 RAM 檔案系統的一個範例︰
在目標系統上完成 SUSE Linux Enterprise Server 的標準安裝。
在系統上安裝套件 busybox。
使用以下指令建立新的 RAM 檔案系統︰
mkinitrd -f busybox -D eth0
請注意,eth0 代表網路電纜所連接的乙太網路裝置。參數 -f busybox 會將二進位格式的多路呼叫 busybox 新增至 RAM 檔案系統。完成此動作後,就可在此系統內部使用許多標準 unix 指令。
使用以下指令將新的 RAM 檔案系統與核心複製到您的開機伺服器︰
scp /boot/initrd /boot/vmlinuz pxe.example.com:
使用本地開機伺服器的名稱或 IP 位址取代 pxe.example.com。
以使用者 root 的身分登入開機伺服器,然後在您可修改 RAM 檔案系統的位置建立一個目錄︰
mkdir ~/bootimage
使用指令 cd ~/bootimage 將您的工作目錄變更為此目錄。
使用以下指令解壓縮先前複製的啟始 RAM 檔案系統︰
zcat ../initrd | cpio -i
編輯檔案 run_all.sh。
搜尋下列一行,將其和檔案的剩餘部分一起刪除︰
[ "$debug" ] && echo preping 21-nfs.sh
將下面几行新增至檔案 run_all.sh 的結尾︰
[ "$debug" ] && echo preping 92-install.sh
[ "$debug" ] && echo running 92-install.sh
source boot/92-install.sh
[ "$modules" ] && load_modules
使用以下內容建立新的程序檔 boot/92-install.sh︰
#!/bin/bash
if [ "$(get_param rawimage)" ]; then
rawimage=$(get_param rawimage)
if [ "$(get_param rawdevice)" ]; then
rawdevice=$(get_param rawdevice)
echo "wget -O ${rawdevice} ${rawimage}"
wget -O ${rawdevice} ${rawimage}
sync
sleep 5
echo "DONE"
fi
fi
# /bin/bash
/bin/poweroff -f
如果希望在電腦關閉前獲取除錯外圍程序,請移除 /bin/bash 前面的備註符號。
使用指令 chmod 755 boot/92-install.sh 將此程序檔變更為可執行檔。
使用以下指令建立新的啟始 RAM 檔案系統︰
mkdir -p /srv/tftpboot find . | cpio --quiet -H newc -o | gzip -9 -n > \ /srv/tftpboot/initrd.boot
將核心複製到此目錄︰
cp ../vmlinuz /srv/tftpboot/linux.boot
啟始 RAM 檔案系統現在已準備好使用兩個新的核心指令行參數。參數 rawimage=<URL> 用於識別預先載入影像的位置。可以使用 wget 可以理解的任何 URL。參數 rawdevice=<裝置> 用於識別目標機器上之硬碟的區塊裝置。
第 23.2.1 節「設定開機與安裝伺服器」 中所列的幾個不同章節中詳細介紹了開機伺服器的組態。本節中將提供設定系統所必需之步驟的核對清單。
設定 DHCP 伺服器。安裝機器所在的子網路需要其他行︰
filename "pxelinux.0"; next-server 192.168.1.115;
在此範例中,192.168.1.115 為 PXE 伺服器 pxe.example.com 的 IP 位址。
設定 PXE 伺服器,如第 14.3.3 節「使用 PXE 開機」 中所述。編輯 /srv/tftpboot/pxelinux.cfg/default 時,請新增下列項目︰
default bootinstall label bootinstall kernel linux.boot append initrd=initrd.boot \ rawimage=ftp://192.168.1.115/preload/preloadimage.raw rawdevice=/dev/sda
設定 FTP 伺服器並將準備好的預先載入影像複製到 /srv/ftp/preload/preloadimage.raw。
使用 PXE 網路開機啟動目標系統以測試您的設定。此動作會自動將準備好的預先載入影像複製到硬碟並在完成後關閉機器。