Wie testet man ARM Ubuntu am einfachsten unter Qemu?

Wie testet man ARM Ubuntu am einfachsten unter Qemu?

Ich würde gerne mit der ARM-Version von Ubuntu (mit grafischer Unterstützung) unter Qemu spielen, habe aber Probleme, ein Tutorial zu finden, wie ich das am einfachsten hinbekomme (ich würde lieber einfach ein Image herunterladen und einen Befehl ausführen, um es auszuführen). Wie kann ich das mit möglichst wenig Aufwand erreichen?

Antwort1

In dieser Antwort:https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171Ich habe die folgenden funktionierenden Setups für Ubuntu 18.04 Gast/Host beschrieben:

  • Cloud-Image arm64: Schnellste Einrichtung für den Einstieg
  • debootstrap arm64: relativ schnell, ermöglicht aber mehr Bildanpassungen

Diese Setups bieten vorgefertigte Disk-Images und durchlaufen nicht das Installationsprogramm. Sie sind die besten Optionen, die ich bisher gesehen habe.

Als nächstes habe ich es auch geschafft, das arm64-Server-Image auf QEMU auszuführen. Dies erfolgt jedoch über das Installationsprogramm, was grenzwertig unpraktisch langsam ist, es sei denn, Sie befinden sich nicht auf einem ARM-Host mit KVM. Dies ist besonders mühsam, da Dutzende von Interaktionen erforderlich sind, um die Installation abzuschließen.

Hier ist das Serverskript, getestet auf einem Ubuntu 18.10-Host:

#!/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://askubuntu.com/questions/797599/how-to-run-ubuntu-16-04-arm-in-qemu

# Parameters.
# This filename may need updating, check http://cdimage.ubuntu.com/releases/18.04/release/
id=ubuntu-18.04.3-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 \
;

GitHub Upstream.

Siehe auch dies zur Raspberry Pi-Emulation:https://stackoverflow.com/questions/28880833/how-to-emulate-the-raspberry-pi-2-on-qemu/45814913#45814913

amd64-Desktop angezeigt unter:https://askubuntu.com/questions/884534/how-to-run-ubuntu-16-04-desktop-on-qemu/1046792#1046792

verwandte Informationen