IBM Cloud Docs
建立自訂 Windows® 映像

建立自訂 Windows® 映像

您可以建立自己的基於 Windows® 的自訂映像,以將自訂映像匯入IBM Cloud® Virtual Private Cloud中。 然後,您可以使用自訂映像在您的IBM Cloud® Virtual Private Cloud基礎架構中部署虛擬伺服器或裸機伺服器。

開始之前

您可以從 IBM Cloud 標準基礎架構中的映像檔範本開始。 如需相關資訊,請參閱從標準基礎架構移轉虛擬伺服器。 您也可以建立在匯入時附加到伺服器的啟動磁碟區的自訂映像。 如需相關資訊,請參閱 關於從磁區建立映像檔。 請記住,LinuxONE ( s390x處理器架構)不支援 Windows® 自訂映像。

所有自訂圖片必須符合以下要求:

  • 包含單一檔案或磁區。
  • 處於qcow2或 vhd 格式。
  • 透過使用 ESXi kickstart 啟用 cloud-init 或可引導。
  • 大小不超過 250 GB。
  • 大小下限為 10 GB。 對於任何小於 10 GB 的映像檔,大小會四捨五入至 10 GB。

您無法從不是 100 GB 的已加密開機磁區 (來自磁區的映像檔) 建立映像檔。

使用下列步驟建立 Windows® 自訂映像部署在IBM Cloud VPC基礎架構環境中。 此程序包含下列高階作業。

  • 使用VirtualBox建立 VHD 格式的 Windows® 映像。
  • 使用 virtIO 驅動程式及 Cloudbase-init 來自訂映像檔。

在建立 Windows® 自訂映像之前,請記住以下要求。

必須安裝 virtio-win 驅動程式。 Microsoft® 建議您從已授權的 RHEL 版本 8 或 9 執行個體取得驅動程式。 Red Hat使用 Microsoft 認證的驅動程式。 建議的最低 Red Hat virtio-win 套件版本為 virtio-win-1.9.24。 不過,最好使用最新套件。

Red Hat virtio-win-1.9.24 ISO 包含下列特定驅動程式版本。

100.84.104.19500 oem10.inf \vioprot.inf_amd64_af0659efdaba9e4b\vioprot.inf
100.90.104.21400 oem11.inf \viofs.inf_amd64_c6f785e21f3f6f80\viofs.inf
100.85.104.20200 oem12.inf \viogpudo.inf_amd64_b19dcf9947e73e5a\viogpudo.inf
100.85.104.19900 oem13.inf \vioinput.inf_amd64_4505a789e17b5f89\vioinput.inf
100.81.104.17500 oem14.inf \viorng.inf_amd64_ef304eab276a3e61\viorng.inf
100.85.104.19900 oem15.inf \vioser.inf_amd64_cb4783c018c10eba\vioser.inf
100.90.104.21500 oem2.inf  \vioscsi.inf_amd64_02a46a7a223648d1\vioscsi.inf
100.90.104.21500 oem3.inf  \viostor.inf_amd64_520417bbc533faba\viostor.inf
100.85.104.20700 oem4.inf  \balloon.inf_amd64_afa8c93081df5458\balloon.inf
100.90.104.21400 oem5.inf  \netkvm.inf_amd64_0efff05c07fcee39\netkvm.inf
100.85.104.19900 oem6.inf  \pvpanic.inf_amd64_b7028360ef636f8b\pvpanic.inf
10.0.0.21000     oem9.inf  \qxldod.inf_amd64_6199f9ecf2339133\qxldod.inf

1. 建立 Windows® 自訂映像

使用下列步驟建立自訂 Windows® 映像。

  1. 您可以下載 Windows 2016Windows 2019Windows 2022 作業系統 ISO 的評估版本。

  2. 使用 qemu-img 實用程序,在要安裝 Windows 的位置建立 VHD 映像。 下載 qemu-img 公用程式,並將它解壓縮至 Windows 筆記型電腦用戶端。 在您解壓縮 qemu-img 公用程式的資料夾中,建立 VHD 映像檔。

    qemu-img.exe create -f vpc Windows-2019.vhd 100G
    

    IBM Cloud® 支援使用 VHD 或 qcow2進行自訂映像檔匯入。 不過,Virtual Box 不支援 qcow2 格式。

  3. 佈建 或存取 IBM Cloud VPC中的現有 RHEL 伺服器,以取得必要的 virtio-win 驅動程式。

    1. 在 IBM Cloud VPC中的 RHEL 伺服器上,執行下列指令來安裝 virtio-win 套件。

      yum install virtio-win
      

      在此範例中,virtio-win 套件安裝在 RHEL 第 8 版上。 您傳回的輸出類似以下範例。

      Installed:
        virtio-win-1.9.24-2.el8_5.noarch
      
    2. 存取 /usr/share/virtio-win 目錄中的 virtio-win ISO。

      cd /usr/share/virtio-win/
      
    3. 使用安全副本複製 virtio-win ISO 檔案(例如 virtio-win-1.9.24.iso,以用於 Windows® 自訂映像。

    • 使用winSCP在 ® 用戶端上複製 ISO 檔案。
    • 使用 SCP 在 Linux 或 macOS 用戶端上複製 ISO 檔案。
    1. 裝載並開啟 ISO 檔案。

    2. virtio-win.iso 檔案複製個別作業系統的所有相關 virtio 驅動程式,將驅動程式放入稱為 Drivers 的資料夾,然後將 Drivers 資料夾複製到作業系統 ISO 資料夾。

    3. 下載 Windows Assessment and Deployment Toolkit(ADK)。 若要取得 oscdimg.exe 公用程式,請僅安裝「部署工具」。

    4. 使用 oscdimg.exe 指令,建立可啟動的 Windows ISO,以併入 Drivers 資料夾中的所有 virtio 驅動程式。

      C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\x86\Oscdimg> oscdimg -m -bC:\..\..\Downloads\<extracted_ISO_folder>\boot\etfsboot.com -u2 C:\..\..\Downloads\extracted_ISO_folder  C:\..\..\Downloads\win2019new.iso
      
  4. 使用VirtualBox透過在步驟 3 中建立的可啟動 Windows® ISO,使用您在步驟 2 中建立的 VHD 映像建立虛擬伺服器。 如需相關資訊,請參閱 Oracle VM VirtualBox 使用手冊

    如果您要使用 VirtualBox 以外的方法來建立自訂映像檔 (例如 VMware),則必須從自訂映像檔中移除該 Hypervisor 特定的所有驅動程式。

  5. 在儲存設定中,新增您在步驟 3 中建立的 Windows® 安裝可引導 ISO。

  6. 啟動伺服器並開始 Windows® 安裝。

  7. 選擇作業系統版本(標準版/資料中心版)和桌面體驗(有桌面體驗或無桌面體驗)。

  8. 選取 磁碟機 0 並繼續安裝。

  9. 安裝完成時,關閉虛擬伺服器並移除安裝 ISO。 您可以忽略關於移除安裝 ISO 的警告。

  10. 使用預設的 Windows® 更新程式下載並安裝 Windows 更新。 重複下載及安裝更新項目的程序,直到沒有可用的更新項目為止。

使 virtio-win 驅動程式在復原映像中可用

建立 Windows® 映像後,請確保 virtio-win 驅動程式在復原映像中可用。 此步驟可確保您可以使用復原映像來解決任何問題或在救援模式中使用該映像。

下載所需的 virtio 驅動程式 vioscsi.infviostor.inf 後,請使用下列步驟使驅動程式在復原映像中可用。

  1. 使用 reagentc /info 指令尋找恢復映像。

    • 如果復原映像位於單獨的復原分割區中,請使用 diskpart 公用程式指派磁碟機號碼並取消隱藏磁碟機。 如果不存在單獨的復原分區,則不需要這些步驟。 以下範例適用於具有磁碟機 R 的分割區 3,並使用設定 id=07

      diskpart
      select disk 0
      list part
      select part 3
      assign letter R
      set id=07
      exit
      
  2. 若要修改恢復映像,請使用 reagentc /disable 停用恢復模式。

  3. 建立一個目錄來掛載恢復映像。

    md C:\mount\winre
    
  4. 將恢復映像複製到安裝目錄。

    xcopy /h R:\Recovery\WindowsRE\Winre.wim C:\mount\
    
  5. 使用 attrib -s -h -r C:\mount\Winre.wim 使恢復影像可見。

  6. 使用 dism /Mount-Image /ImageFile:c:\mount\Winre.wim /index:1 /MountDir:c:\mount\winre 掛載恢復映像的內容。

  7. vioscsiviostor 驅動程式新增至復原映像。 以下範例假設 virtio 驅動程式位於磁碟機 E 上。 為 vioscsiviostor 驅動程式選擇相應的 Windows® 版本。

    Dism /image:c:\mount\winre /Add-Driver /Driver:"E:\vioscsi\2k19\amd64\vioscsi.inf"
    Dism /image:c:\mount\winre /Add-Driver /Driver:"E:\viostor\2k19\amd64\viostor.inf"
    
  8. 新增所有驅動程式後,您就可以建立恢復映像了。

    Dism /Image:c:\mount\winre /Cleanup-Image /StartComponentCleanup
    Dism /Unmount-Image /MountDir:c:\mount\winre /Commit
    
  9. 優化恢復影像。

    Dism /Export-Image /SourceImageFile:c:\mount\WinRE.wim /SourceIndex:1 /DestinationImageFile:c:\mount\winre-optimized.wim
    
  10. 將復原映像及其原始屬性複製到步驟 1 中所述的原始位置。

    xcopy C:\mount\winre-optimized.wim  R:\Recovery\WindowsRE\WinEe.wim /h /r
    
    • 如果復原映像位於單獨的復原分割區中,請使用 diskpart 公用程式刪除指派的磁碟機號碼並隱藏磁碟機。 如果不存在單獨的復原分區,則不需要這些步驟。 以下範例適用於具有磁碟機 R 的分割區 3

      diskpart
      select disk 0
      list part
      select part 3
      remove letter R
      set id=27
      exit
      
  11. 使用 reagentc /enable 啟用恢復映像。

  12. 使用 reagentc /info 驗證恢復模式是否已啟用。

您的映像已設定為包含必要的 virtio 驅動程式的復原映像。

2. 客製化虛擬伺服器

完成以下步驟來自訂您使用VirtualBox建立的虛擬伺服器。

  1. Cloudbase-Init 安裝套件 安裝並配置 cloudbase-init

  2. 修改 cloudbase-init.conf 檔案 (C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf),以符合下列值。 請勿從檔案中移除任何其他內容。

    [DEFAULT]
    #  "cloudbase-init.conf" is used for every boot
    config_drive_types=vfat,iso
    config_drive_locations=hdd,partition
    activate_windows=true
    kms_host=kms.adn.networklayer.com:1688
    mtu_use_dhcp_config=false
    real_time_clock_utc=false
    bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe
    mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\
    debug=true
    log_dir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\
    log_file=cloudbase-init.log
    default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN
    local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
    metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService,
    # enabled plugins - executed in order
    plugins=cloudbaseinit.plugins.common.mtu.MTUPlugin,
              cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin,
              cloudbaseinit.plugins.windows.licensing.WindowsLicensingPlugin,
              cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,
              cloudbaseinit.plugins.common.userdata.UserDataPlugin,
              cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin
    

    如果您計劃為自訂映像檔提供您自己的授權,請從 cloudbase-init.conf 檔案中移除下列各行。

    activate_windows=true
    kms_host=kms.adn.networklayer.com:1688
    
  3. 修改 cloudbase-init-unattend.conf 檔案 (C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init-unattend.conf),以符合下列值。 請勿從檔案中移除任何其他內容。

    [DEFAULT]
    #  "cloudbase-init-unattend.conf" is used during the Sysprep phase
    username=Administrator
    inject_user_password=true
    first_logon_behaviour=no
    config_drive_types=vfat
    config_drive_locations=hdd
    allow_reboot=false
    stop_service_on_exit=false
    mtu_use_dhcp_config=false
    bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe
    mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\
    debug=true
    log_dir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\
    log_file=cloudbase-init-unattend.log
    default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN
    local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
    metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService,
    # enabled plugins - executed in order
     plugins=cloudbaseinit.plugins.common.mtu.MTUPlugin,
              cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin,
              cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,
              cloudbaseinit.plugins.windows.extendvolumes.ExtendVolumesPlugin,
              cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin,
              cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin
    
  4. 修改 Unattend.xml 檔案 (C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\Unattend.xml),並將 PersistAllDeviceInstalls 值設為 false

  5. 從命令提示字元使用下列指令來執行 Sysprep

    C:\Windows\System32\Sysprep\Sysprep.exe /oobe /generalize /shutdown "/unattend:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\Unattend.xml"
    
  6. 執行 sysprep 之後,您的虛擬伺服器會關閉。 然後,您可以繼續 步驟 4 - 建立自訂虛擬伺服器的映像模板

3. 上傳自訂圖片

使用下列資訊將自訂映像檔上傳至 IBM Cloud Object Storage。

在IBM Cloud®Object Storage桶的物件頁面上,點選上傳。 您可以使用Aspera高速傳輸外掛程式上傳大於 200 MB 的圖片。 如需上傳到 IBM Cloud Object Storage 的相關資訊,請參閱上傳資料

下一步

建立 Windows® 自訂映像並在IBM Cloud Object Storage中可用後,您可以 將自訂映像匯入 VPC為 VPC 載入虛擬伺服器映像。 請確定您 授與存取權給 IBM Cloud Object Storage 以匯入映像檔

如果您計劃使用專用型錄來管理自訂映像檔,則必須先將該映像檔匯入至 IBM Cloud VPC,然後將映像檔上架至專用型錄。

匯入自訂映像檔之後,您可以使用它在 IBM Cloud® Virtual Private Cloud 基礎架構中部署伺服器。

從匯入的映像檔建立新的虛擬伺服器之後,請先停止再啟動虛擬伺服器,然後再存取它:

  1. IBM Cloud控制台中,按一下導覽功能表功能表圖示> 基礎架構VPC 圖示> 計算 > 虛擬伺服器實例
  2. 在「虛擬伺服器實例」頁面上,按一下「動作」圖示 「其他動作」圖示