sudo apt install -y qemu qemu-utils cloud-utils wget https://releases.linaro.org/components/kernel/uefi-linaro/15.12/release/qemu64/QEMU_EFI.fd wget https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-arm64-uefi1.imgCloud images are plain - there is no user setup, no default user/pw combo, so to log in to the image, we need to customize the image on first boot. The defacto tool for this is cloud-init. The simplest method for using cloud-init is passing a block media with a settings file - of course for real cloud deployment, you would use one of fancy network based initialization protocols cloud-init supports. Enter the following to a file, say cloud.txt:
#cloud-config users: - name: you ssh-authorized-keys: - ssh-rsa AAAAB3Nz.... sudo: ['ALL=(ALL) NOPASSWD:ALL'] groups: sudo shell: /bin/bashThis minimal config will just set you a user with ssh key. A more complex setup can install packages, write files and run arbitrary commands on first boot. In professional setups, you would most likely end up using cloud-init only to start Ansible or another configuration management tool.
cloud-localds cloud.img cloud.txt qemu-system-aarch64 -smp 2 -m 1024 -M virt -bios QEMU_EFI.fd -nographic \ -device virtio-blk-device,drive=image \ -drive if=none,id=image,file=xenial-server-cloudimg-arm64-uefi1.img \ -device virtio-blk-device,drive=cloud \ -drive if=none,id=cloud,file=cloud.img \ -netdev user,id=user0 -device virtio-net-device,netdev=user0 -redir tcp:2222::22 \ -enable-kvm -cpu hostIf you are on an X86 host and want to use qemu to run an aarch64 image, replace the last line with "-cpu cortex-a57". Now, since the example uses user networking with tcp port redirect, you can ssh into the VM:
ssh -p 2222 you@localhost Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-22-generic aarch64) ....