Przygotowywanie systemu Linux do tworzenia obrazów na platformie Azure

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Umowa dotycząca poziomu usług (SLA) platformy Azure dotyczy maszyn wirtualnych z systemem operacyjnym Linux tylko wtedy, gdy używasz jednej z zatwierdzonych dystrybucji. W przypadku zatwierdzonych dystrybucji witryna Azure Marketplace udostępnia wstępnie skonfigurowane obrazy systemu Linux. Aby uzyskać więcej informacji, zobacz:

Wszystkie inne dystrybucje działające na platformie Azure, w tym dystrybucje obsługiwane przez społeczność i nieobsługiwane, mają pewne wymagania wstępne.

Ten artykuł koncentruje się na ogólnych wskazówkach dotyczących uruchamiania dystrybucji systemu Linux na platformie Azure. Ten artykuł nie może być kompleksowy, ponieważ każda dystrybucja jest inna. Nawet jeśli spełniasz wszystkie kryteria opisane w tym artykule, może być konieczne znaczne dostosowanie systemu Linux, aby działał prawidłowo.

Ogólne informacje o instalacji systemu Linux

  • Platforma Azure nie obsługuje wirtualnego dysku twardego funkcji Hyper-V (VHDX). pomoc techniczna platformy Azure tylko stały dysk VHD. Dysk można przekonwertować na format VHD przy użyciu Menedżera funkcji Hyper-V lub polecenia cmdlet Convert-VHD . Jeśli używasz usługi VirtualBox, wybierz pozycję Stały rozmiar , a nie domyślny (dynamicznie przydzielony) podczas tworzenia dysku.

  • pomoc techniczna platformy Azure s Gen1 (rozruch systemu BIOS) i maszyny wirtualne Gen2 (rozruch UEFI).

  • Moduł jądra tabeli alokacji plików wirtualnych (VFAT) musi być włączony w jądrze.

  • Maksymalny dozwolony rozmiar dysku VHD wynosi 1023 GB.

  • Podczas instalowania systemu Linux zalecamy używanie partycji standardowych, a nie menedżera woluminów logicznych (LVM). LVM jest ustawieniem domyślnym dla wielu instalacji.

    Użycie partycji standardowych pozwala uniknąć konfliktów nazw LVM z sklonowanymi maszynami wirtualnymi, szczególnie jeśli dysk systemu operacyjnego jest kiedykolwiek dołączony do innej identycznej maszyny wirtualnej do rozwiązywania problemów. Można użyć LVM lub RAID na dyskach danych.

  • Wymagana jest obsługa jądra instalowania systemów plików funkcji zdefiniowanej przez użytkownika (UDF). Podczas pierwszego rozruchu na platformie Azure konfiguracja aprowizacji jest przekazywana do maszyny wirtualnej z systemem Linux za pośrednictwem nośnika sformatowanego przez użytkownika dołączonego do gościa. Agent systemu Linux platformy Azure musi zainstalować system plików UDF, aby odczytać jego konfigurację i aprowizować maszynę wirtualną.

  • Wersje jądra systemu Linux starsze niż 2.6.37 nie obsługują ujednoliconego dostępu do pamięci (NUMA) w funkcji Hyper-V o większych rozmiarach maszyn wirtualnych. Ten problem dotyczy głównie starszych dystrybucji korzystających z nadrzędnego jądra Red Hat 2.6.32. Naprawiono ją w systemie Red Hat Enterprise Linux (RHEL) 6.6 (jądro-2.6.32-504).

    Systemy z niestandardowymi jądrami starszymi niż 2.6.37 lub jądra oparte na RHEL starsze niż 2.6.32-504 muszą ustawić parametr numa=off rozruchowy w wierszu polecenia jądra w pliku grub.conf. Aby uzyskać więcej informacji, zobacz Red Hat KB 436883.

  • Nie konfiguruj partycji wymiany na dysku systemu operacyjnego. Agenta systemu Linux można skonfigurować tak, aby utworzyć plik wymiany na dysku zasobów tymczasowych, zgodnie z opisem w dalszej części tego artykułu.

  • Wszystkie wirtualne dyski twarde na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB (1024 x 1024 bajtów). Podczas konwertowania z dysku pierwotnego na dysk VHD upewnij się, że rozmiar nieprzetworzonego dysku to wielokrotność 1 MB przed konwersją, zgodnie z opisem w dalszej części tego artykułu.

  • Korzystaj z najnowszej wersji dystrybucji, pakietów i oprogramowania.

  • Usuń użytkowników i konta systemowe, klucze publiczne, poufne dane, niepotrzebne oprogramowanie i aplikacje.

Uwaga

Program Cloud-init w wersji 21.2 lub nowszej usuwa wymaganie funkcji zdefiniowanej przez użytkownika. Jednak bez włączonego modułu udf dysk CD-ROM nie zostanie zamontowany podczas aprowizacji, co uniemożliwia stosowanie niestandardowych danych. Obejściem jest zastosowanie danych użytkownika. Jednak w przeciwieństwie do danych niestandardowych dane użytkownika nie są szyfrowane. Aby uzyskać więcej informacji, zobacz Formaty danych użytkownika w dokumentacji cloud-init.

Instalowanie modułów jądra bez funkcji Hyper-V

Platforma Azure działa na funkcji hypervisor funkcji Hyper-V, więc system Linux wymaga uruchomienia niektórych modułów jądra na platformie Azure. Jeśli masz maszynę wirtualną utworzoną poza funkcją Hyper-V, instalatory systemu Linux mogą nie zawierać sterowników funkcji Hyper-V w początkowym dysku PAMIĘCI RAM (initrd lub initramfs), chyba że maszyna wirtualna wykryje, że jest uruchomiona w środowisku funkcji Hyper-V.

Jeśli używasz innego systemu wirtualizacji (takiego jak VirtualBox lub KVM) do przygotowania obrazu systemu Linux, może być konieczne ponowne skompilowanie initrd, aby co najmniej hv_vmbus moduły i hv_storvsc jądra dostępne na początkowym dysku RAM. Ten znany problem dotyczy systemów opartych na nadrzędnej dystrybucji red hat i ewentualnie innych.

Mechanizm odbudowy obrazu initrd lub initramfs może się różnić w zależności od rozkładu. Zapoznaj się z dokumentacją dystrybucji lub obsługą odpowiedniej procedury. Oto jeden przykład ponownego mkinitrd kompilowania initrd przy użyciu narzędzia :

  1. Tworzenie kopii zapasowej istniejącego obrazu initrd:

    cd /boot
    sudo cp initrd-`uname -r`.img  initrd-`uname -r`.img.bak
    
  2. Skompiluj hv_vmbus initrd przy użyciu modułów i hv_storvsc jądra:

    sudo mkinitrd --preload=hv_storvsc --preload=hv_vmbus -v -f initrd-`uname -r`.img `uname -r`
    

Zmienianie rozmiaru wirtualnych dysków twardych

Obrazy VHD na platformie Azure muszą mieć rozmiar wirtualny wyrównany do 1 MB. Zazwyczaj wirtualne dyski twarde utworzone za pośrednictwem funkcji Hyper-V są prawidłowo wyrównane. Jeśli dysk VHD nie jest poprawnie wyrównany, może zostać wyświetlony komunikat o błędzie podobny do poniższego przykładu podczas próby utworzenia obrazu na podstawie wirtualnego dysku twardego:

The VHD http://<mystorageaccount>.blob.core.windows.net/vhds/MyLinuxVM.vhd has an unsupported virtual size of 21475270656 bytes. The size must be a whole number (in MBs).

W takim przypadku zmień rozmiar maszyny wirtualnej przy użyciu konsoli Menedżera funkcji Hyper-V lub polecenia cmdlet programu PowerShell Resize-VHD . Jeśli nie korzystasz ze środowiska systemu Windows, zalecamy przekonwertowanie qemu-img (w razie potrzeby) i zmianę rozmiaru dysku VHD.

Uwaga

Istnieje znana usterka w qemu-img dla QEMU w wersji 2.2.1 i niektórych nowszych wersjach, która powoduje niewłaściwie sformatowany dysk VHD. Problem został rozwiązany w wersji QEMU 2.6. Zalecamy używanie wersji 2.2.0 lub starszej albo w wersji 2.6 lub nowszej.

  1. Zmiana rozmiaru dysku VHD bezpośrednio przy użyciu narzędzi, takich jak qemu-img lub vbox-manage może spowodować niebudowany dysk VHD. Zalecamy najpierw przekonwertowanie dysku VHD na obraz nieprzetworzonego dysku przy użyciu następującego kodu.

    Jeśli obraz maszyny wirtualnej został utworzony jako obraz nieprzetworzonego dysku, możesz pominąć ten krok. Tworzenie obrazu maszyny wirtualnej jako obrazu nieprzetworzonego dysku jest wartością domyślną w niektórych funkcjach hypervisor, takich jak KVM.

    sudo qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
    
  2. Oblicz wymagany rozmiar obrazu dysku, aby rozmiar wirtualny był wyrównany do 1 MB. Poniższy skrypt powłoki Bash używa qemu-img info polecenia do określenia rozmiaru wirtualnego obrazu dysku, a następnie oblicza rozmiar na następny 1 MB:

    rawdisk="MyLinuxVM.raw"
    vhddisk="MyLinuxVM.vhd"
    
    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "$rawdisk" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    rounded_size=$(((($size+$MB-1)/$MB)*$MB))
    
    echo "Rounded Size = $rounded_size"
    
  3. Zmień rozmiar nieprzetworzonego dysku przy użyciu polecenia $rounded_size:

    sudo qemu-img resize MyLinuxVM.raw $rounded_size
    
  4. Przekonwertuj dysk pierwotny z powrotem na dysk VHD o stałym rozmiarze:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

    Ewentualnie w przypadku wersji QEMU przed wersją 2.6 usuń force_size opcję:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

Wymagania jądra systemu Linux

Sterowniki usług Linux Integration Services (LIS) dla funkcji Hyper-V i platformy Azure są przekazywane bezpośrednio do nadrzędnego jądra systemu Linux. Wiele dystrybucji, które obejmują najnowszą wersję jądra systemu Linux (np. 3.x), mają te sterowniki już dostępne lub w inny sposób udostępniają wersje wsteczne tych sterowników z ich jądrami.

Sterowniki LIS są stale aktualizowane w jądrze nadrzędnym z nowymi poprawkami i funkcjami. Jeśli to możliwe, zalecamy uruchomienie zatwierdzonej dystrybucji zawierającej te poprawki i aktualizacje.

Jeśli używasz wariantu systemu RHEL w wersji 6.0 do 6.3, musisz zainstalować najnowsze sterowniki LIS dla funkcji Hyper-V. Począwszy od RHEL 6.4+ (i pochodnych), sterowniki LIS są już dołączone do jądra, więc nie potrzebujesz dodatkowych pakietów instalacyjnych.

Jeśli wymagane jest niestandardowe jądro, zalecamy najnowszą wersję jądra (np. 3.8 lub nowszą). W przypadku dystrybucji lub dostawców, którzy utrzymują własne jądro, należy regularnie przywracać sterowniki LIS z nadrzędnego jądra do niestandardowego jądra.

Nawet jeśli korzystasz z stosunkowo najnowszej wersji jądra, zdecydowanie zalecamy śledzenie wszelkich poprawek nadrzędnych w sterownikach LIS i ich wycofywanie zgodnie z potrzebami. Lokalizacje plików źródłowych sterowników LIS są określone w pliku MAINTAINERS w drzewie źródłowym jądra systemu Linux:

    F:    arch/x86/include/asm/mshyperv.h
    F:    arch/x86/include/uapi/asm/hyperv.h
    F:    arch/x86/kernel/cpu/mshyperv.c
    F:    drivers/hid/hid-hyperv.c
    F:    drivers/hv/
    F:    drivers/input/serio/hyperv-keyboard.c
    F:    drivers/net/hyperv/
    F:    drivers/scsi/storvsc_drv.c
    F:    drivers/video/fbdev/hyperv_fb.c
    F:    include/linux/hyperv.h
    F:    tools/hv/

Aktywne jądro maszyny wirtualnej musi zawierać następujące poprawki. Nie można ukończyć tej listy dla wszystkich dystrybucji.

Azure Linux Agent

Agent systemu Linux platformy Azure (waagent) aprowizuje maszynę wirtualną z systemem Linux na platformie Azure. Najnowszą wersję, zgłaszanie problemów lub przesyłanie żądań ściągnięcia można uzyskać w repozytorium GitHub agenta systemu Linux.

Poniżej przedstawiono kilka zagadnień dotyczących korzystania z agenta systemu Linux platformy Azure:

  • Agent systemu Linux jest udostępniany w ramach licencji apache 2.0. Wiele dystrybucji udostępnia już pakiety rpm lub .deb dla agenta. Możesz łatwo zainstalować i zaktualizować te pakiety.
  • Agent systemu Linux platformy Azure wymaga języka Python w wersji 2.6 lub nowszej.
  • Agent wymaga również modułu python-pyasn1 . Większość dystrybucji udostępnia ten moduł jako oddzielny pakiet do zainstalowania.
  • W niektórych przypadkach agent systemu Linux platformy Azure może nie być zgodny z programem NetworkManager. Wiele pakietów (rpm lub .deb) udostępnianych przez dystrybucje konfiguruje NetworkManager jako konflikt z pakietem waagent . W takich przypadkach agent odinstaluje narzędzie NetworkManager podczas instalowania pakietu agenta systemu Linux.
  • Agent systemu Linux platformy Azure musi mieć minimalną obsługiwaną wersję lub wyższą.

Uwaga

Upewnij się, że udf moduły i vfat są włączone. Wyłączenie modułu udf spowoduje niepowodzenie aprowizacji. Wyłączenie modułu vfat spowoduje awarie aprowizacji i rozruchu. Cloud-init w wersji 21.2 lub nowszej może aprowizować maszyny wirtualne bez konieczności stosowania funkcji zdefiniowanej przez użytkownika, jeśli istnieją oba te warunki:

  • Maszyna wirtualna została utworzona przy użyciu kluczy publicznych SSH, a nie haseł.
  • Nie podałeś żadnych danych niestandardowych.

Ogólne wymagania systemowe systemu Linux

  1. Zmodyfikuj wiersz rozruchu jądra w programie GRUB lub GRUB2, aby uwzględnić następujące parametry, tak aby wszystkie komunikaty konsoli zostały wysłane do pierwszego portu szeregowego. Te komunikaty mogą pomóc pomoc techniczna platformy Azure w debugowaniu wszelkich problemów.

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Zalecamy również usunięcie następujących parametrów, jeśli istnieją:

    rhgb quiet crashkernel=auto
    

    Rozruch graficzny i cichy nie jest przydatny w środowisku chmury, w którym wszystkie dzienniki mają być wysyłane do portu szeregowego. W razie potrzeby można pozostawić crashkernel opcję skonfigurowaną, ale ten parametr zmniejsza ilość dostępnej pamięci na maszynie wirtualnej o co najmniej 128 MB. Zmniejszenie dostępnej pamięci może być problematyczne w przypadku mniejszych rozmiarów maszyn wirtualnych.

  2. Po zakończeniu edytowania /etc/default/grub uruchom następujące polecenie, aby ponownie skompilować konfigurację GRUB:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. Dodaj moduł funkcji Hyper-V dla initramfs przy użyciu polecenia dracut:

    cd /boot
    sudo cp initramfs-<kernel-version>.img <kernel-version>.img.bak
    sudo dracut -f -v initramfs-<kernel-version>.img <kernel-version> --add-drivers "hv_vmbus hv_netvsc hv_storvsc"
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Dodaj moduł funkcji Hyper-V dla initrd przy użyciu polecenia mkinitramfs:

    cd /boot
    sudo cp initrd.img-<kernel-version>  initrd.img-<kernel-version>.bak
    sudo mkinitramfs -o initrd.img-<kernel-version> <kernel-version>  --with=hv_vmbus,hv_netvsc,hv_storvsc
    sudo update-grub
    
  4. Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. Ta konfiguracja jest zwykle domyślna.

  5. Zainstaluj agenta systemu Linux platformy Azure.

    Agent systemu Linux platformy Azure jest wymagany do aprowizowania obrazu systemu Linux na platformie Azure. Wiele dystrybucji udostępnia agenta jako pakiet rpm lub .deb. Pakiet jest zwykle wywoływany WALinuxAgent lub walinuxagent. Agent można również zainstalować ręcznie, wykonując kroki opisane w przewodniku Agent systemu Linux platformy Azure.

    Uwaga

    Upewnij się, że udf moduły i vfat są włączone. Usunięcie lub wyłączenie ich spowoduje niepowodzenie aprowizacji lub rozruchu. Program Cloud-init w wersji 21.2 lub nowszej usuwa wymaganie funkcji zdefiniowanej przez użytkownika.

    Zainstaluj agenta systemu Linux platformy Azure, pakietu cloud-init i innych niezbędnych narzędzi, uruchamiając jedno z następujących poleceń.

    Użyj tego polecenia dla oprogramowania Red Hat lub CentOS:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Użyj tego polecenia dla systemu Ubuntu/Debian:

    sudo apt install walinuxagent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Użyj tego polecenia dla systemu SUSE:

    sudo zypper install python-azure-agent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Następnie włącz agenta i pakiet cloud-init we wszystkich dystrybucjach:

    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  6. Nie twórz miejsca wymiany na dysku systemu operacyjnego.

    Za pomocą agenta systemu Linux platformy Azure lub pakietu cloud-init można skonfigurować miejsce wymiany za pośrednictwem dysku zasobów lokalnych. Ten dysk zasobu jest dołączony do maszyny wirtualnej po aprowizacji na platformie Azure. Dysk zasobów lokalnych jest dyskiem tymczasowym i może zostać opróżniony po anulowaniu aprowizacji maszyny wirtualnej. W poniższych blokach pokazano, jak skonfigurować tę zamianę.

    W przypadku wybrania agenta systemu Linux platformy Azure zmodyfikuj następujące parametry w pliku /etc/waagent.conf:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: Set this to your desired size.
    

    Jeśli wybierzesz opcję cloud-init, skonfiguruj plik cloud-init do obsługi aprowizacji:

    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-auto/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    

    Aby skonfigurować plik cloud-init do formatowania i tworzenia przestrzeni wymiany, dostępne są dwie opcje:

    • Przekaż konfigurację pakietu cloud-init za każdym razem, gdy tworzysz maszynę wirtualną za pośrednictwem programu customdata. Zalecamy tę metodę.
    • Użyj dyrektywy cloud-init na obrazie, aby skonfigurować miejsce wymiany za każdym razem, gdy maszyna wirtualna zostanie utworzona.

    Utwórz plik cfg, aby skonfigurować miejsce wymiany przy użyciu pakietu cloud-init:

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
    #cloud-config
    # Generated by Azure cloud image build
    disk_setup:
      ephemeral0:
        table_type: mbr
        layout: [66, [33, 82]]
        overwrite: True
    fs_setup:
      - device: ephemeral0.1
        filesystem: ext4
      - device: ephemeral0.2
        filesystem: swap
    mounts:
      - ["ephemeral0.1", "/mnt/resource"]
      - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    
  7. Konfigurowanie pakietu cloud-init w celu obsługi aprowizacji:

    1. Skonfiguruj waagent dla pakietu cloud-init:

      sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
      sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
      sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
      

      Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, ustaw Provisioning.Agent=disabled go w konfiguracji /etc/waagent.conf .

    2. Konfigurowanie instalacji:

      sudo echo "Adding mounts and disk_setup to init stage"
      sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
      sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
      sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
      sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
      
      
    3. Konfigurowanie źródła danych platformy Azure:

      sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
      sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
      datasource_list: [ Azure ]
      datasource:
         Azure:
           apply_network_config: False
      EOF
      
    4. Usuń istniejący plik zamiany, jeśli został skonfigurowany:

      if [[ -f /mnt/resource/swapfile ]]; then
      echo "Removing swapfile" #RHEL uses a swap file by default
      swapoff /mnt/resource/swapfile
      rm /mnt/resource/swapfile -f
      fi
      
    5. Konfigurowanie rejestrowania cloud-init:

      sudo echo "Add console log file"
      sudo cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
      
      # This tells cloud-init to redirect its stdout and stderr to
      # 'tee -a /var/log/cloud-init-output.log' so the user can see output
      # there without needing to look on the console.
      output: {all: '| tee -a /var/log/cloud-init-output.log'}
      EOF
      
  8. Uruchom następujące polecenia, aby usunąć aprowizacje maszyny wirtualnej.

    Uwaga

    Jeśli migrujesz określoną maszynę wirtualną i nie chcesz tworzyć uogólnionego obrazu, pomiń krok anulowania aprowizacji. Uruchomienie polecenia waagent -force -deprovision+user spowoduje, że maszyna źródłowa będzie bezużyteczna. Ten krok jest przeznaczony tylko do utworzenia uogólnionego obrazu.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    

    W usłudze VirtualBox może zostać wyświetlony komunikat o błędzie po uruchomieniu waagent -force -deprovision polecenia [Errno 5] Input/output error. Ten komunikat o błędzie nie jest krytyczny i można go zignorować.

  9. Zamknij maszynę wirtualną i przekaż dysk VHD na platformę Azure.

Następne kroki

Tworzenie maszyny wirtualnej z systemem Linux na podstawie dysku niestandardowego przy użyciu interfejsu wiersza polecenia platformy Azure