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 jest stanem End Of Life (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:
- Zatwierdzone dystrybucje systemu Linux na platformie Azure
- Pomoc techniczna dotycząca systemu Linux i technologii open-source na platformie Azure
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 :
Tworzenie kopii zapasowej istniejącego obrazu initrd:
cd /boot sudo cp initrd-`uname -r`.img initrd-`uname -r`.img.bak
Skompiluj
hv_vmbus
initrd przy użyciu modułów ihv_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.
Zmiana rozmiaru dysku VHD bezpośrednio przy użyciu narzędzi, takich jak
qemu-img
lubvbox-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
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"
Zmień rozmiar nieprzetworzonego dysku przy użyciu polecenia
$rounded_size
:sudo qemu-img resize MyLinuxVM.raw $rounded_size
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.
- ata_piix: odroczenie dysków do sterowników funkcji Hyper-V domyślnie
- storvsc: konto pakietów przesyłanych w ścieżce RESETOWANIa
- storvsc: unikaj użycia WRITE_SAME
- storvsc: wyłącz funkcję WRITE SAME dla sterowników kart RAID i wirtualnych kart hosta
- storvsc: poprawka wyłusek wskaźnika NULL
- storvsc: błędy buforu pierścieniowego mogą spowodować zablokowanie operacji we/wy
- scsi_sysfs: ochrona przed podwójnym wykonaniem __scsi_remove_device
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
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.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
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
Upewnij się, że serwer SSH jest zainstalowany i skonfigurowany do uruchamiania w czasie rozruchu. Ta konfiguracja jest zwykle domyślna.
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
lubwalinuxagent
. 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 ivfat
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
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-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
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:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' | sudo tee -a /etc/systemd/system.conf cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg #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
- Przekaż konfigurację pakietu cloud-init za każdym razem, gdy tworzysz maszynę wirtualną za pośrednictwem programu
Konfigurowanie pakietu cloud-init w celu obsługi aprowizacji:
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 .Konfigurowanie instalacji:
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
Konfigurowanie źródła danych platformy Azure:
echo "Allow only Azure datasource, disable fetching network setting via IMDS" cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF
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
Konfigurowanie rejestrowania cloud-init:
echo "Add console log file" cat << EOF | sudo tee -a /etc/cloud/cloud.cfg.d/05_logging.cfg # 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
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ć.Zamknij maszynę wirtualną i przekaż dysk VHD na platformę Azure.