全部產品
Search
文件中心

Alibaba Cloud Linux:在本地虛擬機器使用Alibaba Cloud Linux鏡像

更新時間:Jul 17, 2024

Alibaba Cloud Linux提供了VHD和QCOW2格式的本地鏡像,並已內建cloud-init供您在本地虛擬機器(目前僅支援KVM虛擬機器)上使用。本文介紹如何在本地虛擬機器上使用Alibaba Cloud Linux 3和Alibaba Cloud Linux 2鏡像。

背景資訊

本文樣本中,本地環境為龍蜥作業系統(下載地址為龍蜥作業系統),使用Alibaba Cloud Linux鏡像建立了KVM虛擬機器,使用cloud-init初始化虛擬機器系統設定,然後使用NoCloud資料來源在本地建立相關設定檔,以虛擬磁碟的形式掛載到KVM虛擬機器中進行設定,並啟動虛擬機器。本文適用於對KVM虛擬機器有一定瞭解的使用者。

步驟一:本地下載Alibaba Cloud Linux鏡像

您可以在本地虛擬機器中,通過以下地址下載VHD或者QCOW2格式的Alibaba Cloud Linux鏡像。

步驟二:本地產生seed.img引導鏡像

Alibaba Cloud Linux鏡像本身不能直接啟動虛擬機器,需要配置引導鏡像seed.img,並配置網路、帳號、YUM源等資訊。

重要
  • 通常情況下該鏡像的名稱設定為seed.img,您可以使用其他名稱,但不建議您這樣做。

  • seed.img鏡像只包含cloud-init啟動所需的設定檔,不包含Alibaba Cloud Linux系統檔案。

您可以通過以下兩種方式產生seed.img鏡像。

  • 方式一:直接下載seed.img鏡像

    Alibaba Cloud Linux 3和Alibaba Cloud Linux 2預先提供了seed.img鏡像檔案,您可以通過以下地址在頁面列表選擇seed.img進行下載。

    說明

    該引導鏡像中的配置資訊是不可修改的,因此不適用於所有情境。在使用之前請確保您已瞭解鏡像檔案的內容。

  • 方式二:使用NoCloud資料來源手動產生seed.img鏡像

    說明

    NoCloud資料來源是一種cloud-init資料來源,可以在本地環境中提供設定檔,以供虛擬機器讀取和應用。

    1. 在本地同一級目錄下,建立meta-datauser-data兩個設定檔。

      將這兩個設定檔作為seed.img鏡像的一部分。當虛擬機器啟動時,cloud-init將讀取該設定檔,並根據配置內容對虛擬機器進行初始化。

      1. 建立名為seed的目錄,並進入該目錄。

        sudo mkdir seed
        sudo cd seed/
      2. 建立meta-data設定檔。

        檔案內容樣本如下,表示設定虛擬機器的名稱為alinux-host,您可以根據需要修改。

        #cloud-config
        #vim:syntax=yaml
        
        local-hostname: alinux-host                 
      3. 建立user-data設定檔。

        檔案內容樣本如下,您可以根據需要修改相關配置資訊。

        Alibaba Cloud Linux 3

        #cloud-config
        #vim:syntax=yaml
        
        # 添加一個名為alinux的帳號,並且可以執行sudo命令。
        users:
          - default
          - name: alinux
            sudo: ['ALL=(ALL)   ALL']
            plain_text_passwd: aliyun
            lock_passwd: false
        
        # 添加Alibaba Cloud Linux 3的YUM源。
        yum_repos:
            alinux3-module:
                name: alinux3-module
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/module/$basearch/
                enabled: 1
                gpgcheck: 1
                gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3
            alinux3-updates:
                name: alinux3-updates
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/
                enabled: 1
                gpgcheck: 1
                gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3
            alinux3-plus:
                name: alinux3-plus
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/
                enabled: 1
                gpgcheck: 1
                gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3
            alinux3-powertools:
                name: alinux3-powertools
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/powertools/$basearch/
                gpgcheck: 1
                enabled: 1
                gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3
            alinux3-os:
                name: alinux3-os
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/
                gpgcheck: 1
                enabled: 1
                gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3

        Alibaba Cloud Linux 2

        #cloud-config
        #vim:syntax=yaml
        
        # 添加一個名為alinux的帳號,並且可以執行sudo命令。
        users:
          - default
          - name: alinux
            sudo: ['ALL=(ALL)   ALL']
            plain_text_passwd: aliyun
            lock_passwd: false
        
        # 添加Alibaba Cloud Linux 2的YUM源。
        yum_repos:
            base:
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/
                enabled: true
                gpgcheck: true
                gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN
                name: Aliyun Linux - $releasever - Base - mirrors.aliyun.com
            updates:
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/
                enabled: true
                gpgcheck: true
                gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN
                name: Aliyun Linux - $releasever - Updates - mirrors.aliyun.com
            extras:
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/extras/$basearch/
                enabled: true
                gpgcheck: true
                gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN
                name: Aliyun Linux - $releasever - Extras - mirrors.aliyun.com
            plus:
                baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/
                enabled: true
                gpgcheck: true
                gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN
                name: Aliyun Linux - $releasever - Plus - mirrors.aliyun.com
    2. (條件必選)如果您是Alibaba Cloud Linux 3系統,需要啟用epel-testing倉庫。

      1. 開啟檔案epel-testing.repo檔案。

        sudo vim /etc/yum.repos.d/epel-testing.repo
      2. i鍵進入編輯模式,並將enabled=0修改為enabled=1

        [epel-testing]
        name=Extra Packages for Enterprise Linux 8 - Testing - $basearch
        baseurl=http://mirrors.cloud.aliyuncs.com/epel/testing/8/Everything/$basearch
        enabled=0
        gpgcheck=1
        countme=1
        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
      3. Esc鍵,輸入:wq儲存修改。

    3. 運行以下命令,安裝cloud-utils軟體包。

      sudo yum install -y cloud-utils
    4. 運行以下命令,產生seed.img鏡像。

      sudo cloud-localds seed.img user-data meta-data

步驟三:啟動虛擬機器

您可以使用以下任一方式啟動KVM虛擬機器。

使用libvirt工具啟動

  1. 在本地建立一個xml設定檔。

    樣本檔案的名稱為alinux3.xmlalinux2.xml,內容如下,您可以根據需求修改xml設定檔內容。

    Alibaba Cloud Linux 3

    <domain type='kvm'>
        <name>alinux3</name>
        <memory>1048576</memory><!-- 1 GB記憶體。 -->
        <vcpu>1</vcpu>
        <cpu mode='host-passthrough'><!-- 需要在對應架構的伺服器上啟動執行個體。 -->
        </cpu>
        <os>
            <type arch='x86_64'>hvm</type><!-- 如果是ARM64架構的伺服器,則需設定為arch='aarch64'。 -->
            <boot dev='hd'/>
        </os>
        <clock sync="localtime"/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>restart</on_crash>
        <devices>
            <emulator>/usr/bin/qemu-kvm</emulator><!-- 請根據不同的作業系統設定對應的kvm路徑。例如:Ubuntu對應的kvm路徑是/usr/bin/kvm。 -->
            <disk type='file' device='disk'><!-- 請根據鏡像格式設定下面的type參數:qcow2對應type='qcow2'、vhd對應type='vpc'。 -->
                <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- 如果要建立qcow2快照,需要關閉dataplane。 -->
                <source file='path'/> <!-- 填寫Alibaba Cloud Linux 3鏡像的絕對路徑。 -->
                <target dev='vda' bus='virtio'/>
            </disk>
            <!-- 加入seed.img的資訊。 -->
            <disk type='file' device='disk'>
                <driver name='qemu' type='raw'/>
                <source file='/path/to/your/seed.img'/> <!-- 填寫seed鏡像的絕對路徑。 -->
                <target dev='vdb' bus='virtio'/>
            </disk>
            <interface type='network'>
                <source network='default'/>
                <model type='virtio'/>
            </interface>
            <console type='pty'>
                <target type='virtio' port='0'/>
            </console>
            <video>
                <model type='cirrus' vram='9216' heads='1'/>
                <alias name='video0'/>
            </video>
            <input type='tablet' bus='usb'/>
            <input type='mouse' bus='ps2'/>
            <graphics type='vnc' port='-1' autoport='yes'/>
        </devices>
    </domain>

    Alibaba Cloud Linux 2

    <domain type='kvm'>
        <name>alinux2</name>
        <memory>1048576</memory> <!-- 1 GB記憶體。 -->
        <vcpu>1</vcpu>
        <os>
            <type arch='x86_64'>hvm</type>
            <boot dev='hd'/>
        </os>
        <clock sync="localtime"/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>restart</on_crash>
        <devices>
            <emulator>/usr/bin/qemu-kvm</emulator><!-- 請根據不同的作業系統設定對應的kvm路徑。例如:Ubuntu對應的kvm路徑是/usr/bin/kvm -->
            <disk type='file' device='disk'><!-- 請根據鏡像格式設定下面的type參數:qcow2對應type='qcow2'、vhd對應type='vpc'。 -->
                <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- 如果要建立qcow2快照,需要關閉dataplane。 -->
                <source file='path'/> <!-- 填寫Alibaba Cloud Linux 2鏡像的絕對路徑。 -->
                <target dev='vda' bus='virtio'/>
            </disk>
            <!-- 加入seed.img的資訊。 -->
            <disk type='file' device='disk'>
                <driver name='qemu' type='raw'/>
                <source file='/path/to/your/seed.img'/> <!-- 填寫seed鏡像的絕對路徑。 -->
                <target dev='vdb' bus='virtio'/>
            </disk>
            <interface type='network'>
                <source network='default'/>
                <model type='virtio'/>
            </interface>
            <console type='pty'>
                <target type='virtio' port='0'/>
            </console>
            <video>
                <model type='cirrus' vram='9216' heads='1'/>
                <alias name='video0'/>
            </video>
            <input type='tablet' bus='usb'/>
            <input type='mouse' bus='ps2'/>
            <graphics type='vnc' port='-1' autoport='yes'/>
        </devices>
    </domain>
  2. 使用virsh命令啟動虛擬機器,命令樣本如下。

    說明

    libvirt工具預設使用普通使用者啟動,請確認鏡像檔案及所在路徑對普通使用者是否具有相應的操作許可權。

    Alibaba Cloud Linux 3

    sudo virsh define alinux3.xml
    virsh start <KVMName>   # 請修改為KVM虛擬機器的名稱,可以通過sudo virsh list --name命令查詢。

    Alibaba Cloud Linux 2

    sudo virsh define alinux2.xml
    sudo virsh start <KVMName>    # 請修改為KVM虛擬機器的名稱,可以通過sudo virsh list --name命令查詢。

使用qemu-kvm命令列啟動

您需要在qemu-kvm命令列中追加如下參數資訊:

-drive file=/path/to/your/seed.img,if=virtio,format=raw
  • /path/to/your/seed.img:需要替換為seed.img鏡像檔案的路徑。

  • if=virtio:表示使用virtio介面串連虛擬磁碟。

  • format=raw:表示磁碟鏡像檔案的格式為RAW。

樣本命令:

sudo /usr/libexec/qemu-kvm -drive file=/home/ecs-user/seed/seed.img,if=virtio,format=raw

使用圖形介面(virt-manager)啟動

在啟動虛擬機器之前,您需要在本地找到KVM虛擬機器的設定檔,在檔案內添加seed.img鏡像檔案的絕對路徑。

後續步驟

虛擬機器啟動成功後,使用user-data設定檔中的使用者名稱和密碼登入虛擬機器。

說明

如果您需要使用SSH密鑰登入,請確保將公開金鑰內容添加到cloud-init設定檔中。

相關文檔

  • cloud-init是一個用於自動初始化Linux虛擬機器執行個體的工具。它可以在虛擬機器啟動時執行一系列任務,包括設定主機名稱、配置網路、安裝軟體包等。更多資訊,請參見cloud-init官方文檔

  • libvirt、qemu-kvm、virt-manager常用於管理和運行KVM虛擬機器。更多資訊,請參見Red Hat官方說明