︿
Top

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.4 (1709) Kernel 3.10.0-693.el7.x86_64) 映像檔,也就是新版 CentOS 7.4 最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境





匯入 CentOS 範本虛擬主機的問題?

上一篇文章中,我們已經完成 CentOS 範本的「匯出」(Export) 作業,所以當需要產生 CentOS VM 時,我們只要透過 Hyper-V Manager 進行「匯入」(Import) 作業即可。

但是,最近要使用這些匯入的 CentOS VM 建立 K8S (Kubernetes) 環境時,卻發生匯入的 CentOS VM 在 product_uuid 的部分是相同的💀,但是根據 Installing kubeadm | Kubernetes 文件中提到,不管是 Kubernetes Master Node 或 Worker Node,每台 Node 都必須確認 MAC Address Product_UUID 的值必須唯一

  • MAC Address: 可以透過指令 ip linkifconfig -a 確認。
  • Product_UUID: 可以透過指令 cat /sys/class/dmi/id/product_uuiddmidecode -s system-uuid 確認。





匯入的 CentOS 重新產生 Product_UUID 的方法?

因為,本文採用的是 CentOS 所以也可以直接參考 Red Hat 官方文件,但是因為我沒有 Red Hat subscriptions 所以無法看到下列文章的完整內容:



同時,在網路上我好像沒有找到簡單的方法,可以讓已經匯入運作的 CentOS 重新產生 Product_UUID 的方式 (還請路過的高手指點迷津 😎)





怎麼為 CentOS 範本產生新的 Product_UUID?

因為,並沒有找到簡單的方法,可以讓已經匯入運作的 CentOS 重新產生 Product_UUID 的方式。同時,剛好找到這篇 Hyper-V : Unique Identifier or MachineGUID 討論串,可以透過「新增」VM 虛擬主機的方式,然後掛載 CentOS Template .vhdx 的方式來達成重新產生新的 Product_UUID 的目的。

但是,又遭遇到另 1 個問題 (怎麼就你問題最多 💢),因為並非採用「匯出 / 匯入」方式,而是以「新增」VM 虛擬主機的方式,然後掛載 CentOS Template .vhdx 的方式,所以便發生這個新增的 CentOS VM 因為沒有 UEFI 檔案而無法啟動。

圖、CentOS VM 因為沒有 UEFI 檔案而無法順利啟動

圖、CentOS VM 因為沒有 UEFI 檔案而無法順利啟動





新增 CentOS 範本虛擬主機重新產生 UEFI 檔案

簡單來說,以本文的實作環境必須要為 CentOS VM 產生「shimx64.efi」的 UEFI 檔案,便能夠順利讓 CentOS VM 啟動。重新產生 UEFI 檔案的相關資訊,請參考下列網址:


圖、為 CentOS VM 產生 UEFI 檔案便能順利啟動

首先,請將 CentOS VM 關機,然後放入 CentOS 7 安裝光碟後啟動,在 CentOS 7 安裝光碟開機畫面中選擇「Troubleshooting」項目。

圖、選擇 Troubleshooting 項目

接著,選擇「Rescue a CentOS system」項目。

圖、選擇 Rescue a CentOS system 項目

選擇「3) Skip to shell」項目。

圖、選擇 3) Skip to shell 項目

進入 Shell 模式後,鍵入指令「efibootmgr --create --label CentOS --disk /dev/sda1 --loader "\EFI\centos\shimx64.efi"」重新產生 UEFI 檔案。

圖、重新產生 UEFI 檔案

此時,開啟 CentOS VM 虛擬主機的設定視窗,便可以看到自動產生「shimx64.efi」的 UEFI 檔案,請調整至第 1 個開機順位便能夠順利讓 CentOS VM 啟動。

圖、為 CentOS VM 產生 UEFI 檔案便能順利啟動

開機完成後,可以透過「hostnamectl」指令查看 Machine ID / Boot ID「ip a」指令查看 MAC Address「cat /sys/class/dmi/id/product_uuid」指令查看 Product_UUID,可以發現都是不同的。💪

圖、不同的 CentOS VM 不同的 Product_UUID





補充、PowerShell 新增 CentOS 範本虛擬主機

由於是「新增」CentOS 範本虛擬主機,所以必須要幫新增的 VM 虛擬主機重新組態設定,例如,vCPU 數量、vRAM、Smart Paging File Location......等。所以,就寫個簡單的 PowerShell 來處理這段了,有興趣的朋友可以參考看看 😜。







CentOS 7.4 基礎設定系列文章:

文章標籤: ,