Jak uruchomić Ubuntu 16.04 ARM w QEMU?

9

Moim celem jest uruchomienie Ubuntu 16.04 (ARM) w Qemu (na hoście Ubuntu 16.04 x64).

Próbowałem wykonać ten stary poradnik bez powodzenia:

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

Zamiast debian_squeeze_armel_standard.qcow2użytego tam obrazu użyłem ubuntu-16.04-preinstalled-server-armhf + raspi2.img .

Zapominając o wyżej wymienionym artykule, jaki jest prawidłowy sposób uruchomienia Ubuntu 16.04-arm na Qemu?

Jeśli nie można łatwo uruchomić go nad Qemu, czy jest jakaś inna alternatywa?

lepe
źródło

Odpowiedzi:

0

To nie zadziała, ponieważ obraz, którego używasz, jest wstępnie skompilowany dla urządzenia Raspberry Pi 2 i będzie działał tylko na Raspberry Pi 2. Wypróbuj ten samouczek

Rustam Isaev
źródło
Dziękuję Ci. Spróbuję później. Myślę, że to odpowie na moje pytanie.
lepe
1

W tej odpowiedzi: Czy jest jakiś gotowy preinstalowany obraz Ubuntu QEMU (32-bitowy) online? Opisałem następujące ustawienia robocze gościa / hosta Ubuntu 18.04:

  • cloud image arm64: najszybsza konfiguracja na początek
  • debootstrap arm64: dość szybki, ale pozwala na większą personalizację obrazu

Te ustawienia zapewniają wstępnie skompilowane obrazy dysków i nie przechodzą przez instalator. To najlepszy wybór, jaki do tej pory widziałem.

Następnie udało mi się również uruchomić obraz serwera arm64 na QEMU. Jednak odbywa się to przez instalator, który jest niepraktycznie powolny, chyba że nie korzystasz z hosta ARM z KVM. Jest to szczególnie bolesne, ponieważ do ukończenia instalacji wymagane są dziesiątki interakcji.

Oto skrypt serwera przetestowany na hoście Ubuntu 18.10:

#!/usr/bin/env bash

set -eux

# Tested on Ubuntu 18.10.
# - /superuser/942657/how-to-test-arm-ubuntu-under-qemu-the-easiest-way
# - /ubuntu/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 \
;

GitHub w górę .

Zobacz także to dla emulacji Raspberry Pi: /programming/28880833/how-to-emulate-the-raspberry-pi-2-on-qemu/45814913#45814913

amd64 desktop pokazano na: Jak uruchomić Ubuntu 16.04 Desktop na QEMU?

Ciro Santilli
źródło