建立 Linux 自訂映像檔
您可以建立自己的自訂 Linux型映像檔,以匯入至 IBM Cloud® Virtual Private Cloud。 然後,您可以使用自訂映像檔,在 IBM Cloud® Virtual Private Cloud 基礎架構中部署虛擬伺服器或裸機伺服器。
您可以從 IBM Cloud 標準基礎架構中的映像檔範本開始。 如需相關資訊,請參閱從標準基礎架構移轉虛擬伺服器。 您是否知道您也可以建立在匯入時連接至實例之開機磁區的自訂映像檔? 如需相關資訊,請參閱 關於從磁區建立映像檔。
所有自訂圖片必須符合以下要求:所有自訂圖片必須符合以下要求:所有自訂圖片必須符合以下要求:所有自訂圖片必須符合以下要求
- 包含單一檔案或磁區。
- 處於qcow2或 vhd 格式。
- 透過使用 ESXi kickstart 啟用 cloud-init 或可引導。
- 大小不超過 250 GB。
- 大小下限為 10 GB。 對於任何小於 10 GB 的映像檔,大小會四捨五入至 10 GB。
若要使用 IBM Cloud Object Storage 選項來建立安全執行型自訂映像檔,請參閱 準備工作量。 如需建立安全執行型映像檔的相關資訊,請參閱 IBM Secure Execution for Linux。
對於 Linux 映像檔,只有在作業系統的 SSH 伺服器支援此金鑰類型時,才能使用 Ed25519 SSH 金鑰類型。 如需相關資訊,請參閱 開始使用 SSH 金鑰。
請完成下列步驟,以確保您可以在 IBM Cloud VPC 基礎架構環境中順利部署自己的 Linux 自訂映像檔。 請記住,您無法從不是 100 GB 的已加密開機磁區 (來自磁區的映像檔) 建立映像檔。 作業已封鎖。
步驟 1-從 qcow2 或 VHD 格式的單一映像檔開始
如果您要建立自己的自訂 Linux型映像檔,請以 qcow2 或 VHD 格式的單一映像檔開始。 從啟用雲端的供應商映像檔開始可能很有用。
核心日誌在除錯開機相關問題時很重要。 若要確保核心日誌列印至序列主控台,請使用 console=ttyS0
核心指令行引數。 此外,在 2021 年中之前發行的較舊核心的開機處理程序期間,會使用 nomodeset
及 nofb
核心參數來解決與顯示相關的問題。 較新的核心會使用核心中的視訊模式設定。
步驟 2-檢查 virtio 驅動程式
-
請確定您的作業系統映像檔已安裝 virtio 驅動程式,以及 virtio 所需的任何程式碼。 必需使用 Virtio 網路驅動程式才能啟用網路連線功能。 執行下列指令,以檢查核心中是否已安裝 virtio 驅動程式:
grep -i virtio /boot/config-$(uname -r)
在輸出中尋找
VIRTIO_BLK
和VIRTIO_NET
。 如果這些線路不存在,則 virtio 驅動程式不會建置到核心中。 -
如果存在
VIRTIO_BLK
及VIRTIO_NET
行,請執行下列指令,驗證驅動程式是否存在於暫存根檔案系統中:lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
如果您使用 Debian 作業系統,請使用下列指令:
lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
驗證
virtio blk
驅動程式及其相依關係virtio.ko
、virtio_pci
和virtio_ring
是否存在。 如果 virtio 相依關係不存在,則必須回復根檔案系統。
步驟 3-將網路介面設為自動配置
如果在訪客映像檔中定義網路介面,請確定至少有一個網路介面設為自動配置。 無法指定所有介面進行手動配置。 通常會將介面設為使用 DHCP。 如需配置 DHCP 的相關資訊,請參閱 Linux 發行套件的說明文件。
步驟 4-確定映像檔已啟用 cloud-init
確保映像檔已啟用 cloud-init。 需要 cloud-init 0.7.9 版或更高版本。
-
若要判定是否已安裝 cloud-init,請執行下列指令:
cloud-init --version
- 在某些情況下,可能已安裝 cloud-init,但不在您的環境 PATH 中。
- 找到 cloud-init 的路徑ExecStart,運行以下命令:
systemctl cat cloud-init
-
若要安裝 cloud-init,請使用下列其中一個指令。
- 若為 Ubuntu 或 Debian,請執行下列指令:
apt-get install cloud-init
- 若為 CentOS 或 Red Hat,請執行下列指令:
yum install cloud-init
- 若為 Ubuntu 或 Debian,請執行下列指令:
-
如果
datasources_list
內容存在於 /etc/cloud/cloud.cfg中,請驗證它是否僅包含NoCloud
或整個移除datasources_list
內容。不支援ConfigDrive
。 如需資料來源的相關資訊,請參閱 資料來源。IBM Cloud 透過使用 NoCloud 資料來源來提供 meta 資料,為環境建立 cloud-init 映像檔。提供一種塊裝置。 請參閱下列範例。
blkid /dev/vdb: UUID="2023-03-15-16-50-02-00" LABEL="cidata" TYPE="iso9660"
此區塊裝置由 cloud-init 找到,並包含下列檔案。
- meta 資料實例 ID: INSTANCE_ID local-hostname: NAME
- user-data 建立實例時提供的選用使用者資料。 如需相關資訊,請參閱 使用者資料。
- vendor-data MIME 格式化檔案,包含雲端配置 SSH 授權 (衍生自建立實例時提供的 SSH 金鑰) 及其他起始設定資訊。
-
在 /etc/cloud/cloud.cfg 檔案中,驗證
cloud_final_modules
區段是否包含scripts-vendor
模組以及是否已啟用。 依預設,Red Hat Enterprise Linux 和 CentOS 不包含在 IBM Cloud VPC 基礎架構中佈建實例所需的scripts-vendor
模組。 您必須啟用scripts-vendor
模組,以使用 Linux 自訂映像檔來佈建 IBM Cloud VPC 虛擬伺服器實例。對於 Red Hat Enterprise Linux (RHEL) 影像,以下套件預設包含在基本影像中,是 cloud-init 成功執行的必要條件:
subscription-manager
,ethtool
,和rpm
。 此外,請確定已啟用下列服務:cloud-init-local.service
、cloud-init.service
、cloud-config.service
及cloud-final.service
。 -
請確定您已設定映像使用 SSH 登入虛擬伺服器。
基於 RHEL 的自訂映像的預設使用者是 cloud-user
。 有關啟用 cloud-init 的詳細資訊,請參閱 設定 cloud-init。
步驟 5-開機磁碟大小
請確定映像檔的開機磁碟大小為 10-250 GB。 小於 10 GB 的映像檔會四捨五入至 10 GB。
如果您要自訂虛擬伺服器以從標準基礎架構移轉,請回到 從標準基礎架構移轉虛擬伺服器,並繼續完成移轉步驟。
步驟 6-將影像上傳至 IBM Cloud Object Storage
將映像檔上傳到 IBM Cloud Object Storage。 在 IBM Cloud® Object Storage 桶的物件頁面上,按一下上傳。 您可以使用 Aspera 高速傳輸外掛程式來上傳大於 200 MB 的影像。 如需上傳到 IBM Cloud Object Storage 的相關資訊,請參閱上傳資料。
下一步
當您在 IBM Cloud Object Storage中建立並提供 Linux 自訂映像檔時,您可以 將自訂映像檔匯入至 VPC 及 為 VPC 上線虛擬伺服器映像檔。 確保您 已授與 IBM Cloud Object Storage 以匯入映像檔。
如果您計劃使用專用型錄來管理自訂映像檔,則必須先將該映像檔匯入至 IBM Cloud VPC,然後將虛擬伺服器映像檔上架至專用型錄。
匯入自訂映像檔之後,您可以使用自訂映像檔,在 IBM Cloud® Virtual Private Cloud 基礎架構中部署虛擬伺服器。