Как запустить Ubuntu 16.04 ARM в QEMU?
Моя цель - запустить Ubuntu 16.04 (ARM) в Qemu (на хосте Ubuntu 16.04 x64).
Я пытался следовать этому руководству безуспешно:
Home directory not accessible: Permission denied
pulseaudio: pa_context_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
Could not initialize SDL(No available video device) - exiting
Вместо debian_squeeze_armel_standard.qcow2
образ, используемый там, я использовал ubuntu-16.04-preinstalled-server-armhf + raspi2.img.
Забудьте о вышеупомянутой статье, как правильно запустить Ubuntu 16.04-arm поверх Qemu?
Если невозможно легко запустить его через Qemu, есть ли другая альтернатива?
2 ответа
Это не будет работать, поскольку используемый вами образ предварительно скомпилирован для устройства Raspberry Pi 2 и будет работать только на Raspberry Pi 2. Попробуйте этот учебник
В этом ответе: Есть ли какой-нибудь готовый образ QEMU Ubuntu (32bit) онлайн? Я описал следующие рабочие настройки для гостевой / хостовой системы Ubuntu 18.04:
- облачное изображение arm64: быстрая настройка для начала работы
- debootstrap arm64: достаточно быстро, но позволяет больше настроек изображения
Эти настройки предоставляют готовые образы дисков и не проходят через установщик. Это лучший выбор, который я видел до сих пор.
Затем мне также удалось запустить образ сервера arm64 в QEMU. Тем не менее, это происходит через установщик, который практически невозможно сделать, если только вы не находитесь на хосте ARM с KVM. Это особенно болезненно, потому что для завершения установки требуются десятки взаимодействий.
Вот скрипт сервера, протестированный на хосте Ubuntu 18.10:
#!/usr/bin/env bash
set -eux
# Tested on Ubuntu 18.10.
# - https://superuser.com/questions/942657/how-to-test-arm-ubuntu-under-qemu-the-easiest-way
# - https://Ask-ubuntu.ru/questions/797599/how-to-run-ubuntu-16-04-arm-in-qemu
# Parameters.
id=ubuntu-18.04.1-server-arm64
#id=debian-9.6.0-arm64-xfce-CD-1
img="${id}.img.qcow2"
img_snapshot="${id}.img.snapshot.qcow2"
iso="${id}.iso"
flash0="${id}-flash0.img"
flash1="${id}-flash1.img"
# Images.
if [ ! -f "$iso" ]; then
wget "http://cdimage.ubuntu.com/releases/18.04/release/${iso}"
fi
if [ ! -f "$img" ]; then
qemu-img create -f qcow2 "$img" 1T
fi
if [ ! -f "$img_snapshot" ]; then
qemu-img \
create \
-b "$img" \
-f qcow2 \
"$img_snapshot" \
;
fi
if [ ! -f "$flash0" ]; then
dd if=/dev/zero of="$flash0" bs=1M count=64
dd if=/usr/share/qemu-efi/QEMU_EFI.fd of="$flash0" conv=notrunc
fi
if [ ! -f "$flash1" ]; then
dd if=/dev/zero of="$flash1" bs=1M count=64
fi
# Run.
#
# cdrom must be scsi or else the installation fails midway with:
#
# > Detect and mount CD-ROM
# >
# > Your installation CD-ROM couldn't be mounted. This probably means
# > that the CD-ROM was not in the drive. If so you can insert it and try
# > again.
# >
# > Retry mounting the CD-ROM?
# > Your installation CD-ROM couldn't be mounted.
#
# This is because the drivers for the default virtio are not installed in the ISO,
# because in the past it was not reliable on qemu-system-aarch64.
#
# See also:
# https://bazaar.launchpad.net/~ubuntu-testcase/ubuntu-manual-tests/trunk/view/head:/testcases/image/1688_ARM64_Headless_KVM_Guest
qemu-system-aarch64 \
-cpu cortex-a57 \
-device rtl8139,netdev=net0 \
-device virtio-scsi-device \
-device scsi-cd,drive=cdrom \
-device virtio-blk-device,drive=hd0 \
-drive "file=${iso},id=cdrom,if=none,media=cdrom" \
-drive "if=none,file=${img_snapshot},id=hd0" \
-m 2G \
-machine virt \
-netdev user,id=net0 \
-nographic \
-pflash "$flash0" \
-pflash "$flash1" \
-smp 2 \
;
Смотрите также это для эмуляции Raspberry Pi: https://stackoverflow.com/questions/28880833/how-to-emulate-the-raspberry-pi-2-on-qemu/45814913
Рабочий стол amd64 показан по адресу: Как запустить Ubuntu 16.04 Desktop на QEMU?