จะรัน Ubuntu 16.04 ARM ใน QEMU ได้อย่างไร?


9

เป้าหมายของฉันคือเรียกใช้ Ubuntu 16.04 (ARM) ใน Qemu (บน Ubuntu 16.04 x64 โฮสต์)

ฉันพยายามติดตาม-old- กวดวิชานี้ไม่สำเร็จ:

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ภาพที่นำมาใช้มีผมใช้อูบุนตู-16.04-ที่ติดตั้งเซิร์ฟเวอร์ armhf + raspi2.img

ลืมเกี่ยวกับบทความที่กล่าวถึงข้างต้นซึ่งเป็นวิธีที่ถูกต้องในการรัน Ubuntu 16.04-arm ที่อยู่ด้านบนของ Qemu?

หากไม่สามารถเรียกใช้ผ่าน Qemu ได้อย่างง่ายดายจะมีทางเลือกอื่นหรือไม่?

คำตอบ:


0

สิ่งนี้จะไม่ทำงานเนื่องจากรูปภาพที่คุณใช้นั้นถูกรวบรวมไว้ล่วงหน้าสำหรับอุปกรณ์ Raspberry Pi 2 และจะใช้งานได้เฉพาะกับ Raspberry Pi 2 ลองใช้บทช่วยสอนนี้


ขอบคุณ. ฉันจะลองอีกครั้งในภายหลัง ฉันคิดว่าจะตอบคำถามของฉัน
lepe

1

ในคำตอบนี้: มีรูปภาพ QEMU Ubuntu (32 บิต) ที่สร้างไว้ล่วงหน้าออนไลน์หรือไม่? ฉันได้อธิบายการตั้งค่าการทำงานต่อไปนี้สำหรับ Ubuntu 18.04 แขก / โฮสต์:

  • cloud image arm64: การตั้งค่าที่เร็วที่สุดเพื่อเริ่มใช้งาน
  • debootstrap arm64: รวดเร็วพอสมควร แต่อนุญาตให้ปรับแต่งรูปภาพได้มากขึ้น

การตั้งค่าเหล่านั้นจัดเตรียมอิมเมจของดิสก์ที่สร้างไว้ล่วงหน้าและไม่ผ่านตัวติดตั้ง มันเป็นตัวเลือกที่ดีที่สุดที่ฉันเคยเห็น

ต่อไปฉันจัดการเพื่อเรียกใช้อิมเมจเซิร์ฟเวอร์ arm64 บน QEMU อย่างไรก็ตามสิ่งนี้จะต้องผ่านตัวติดตั้งซึ่งเป็นเส้นขอบที่ช้าในการทำเว้นแต่คุณจะไม่ได้อยู่ในโฮสต์ ARM ที่มี KVM นี่เป็นเรื่องที่เจ็บปวดเป็นพิเศษเพราะการโต้ตอบหลายสิบครั้งจะต้องทำการติดตั้งให้เสร็จ

นี่คือสคริปต์เซิร์ฟเวอร์ทดสอบบนโฮสต์ 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 ต้นน้ำ

ดูได้จากนี้สำหรับการจำลอง Raspberry Pi: /programming/28880833/how-to-emulate-the-raspberry-pi-2-on-qemu/45814913#45814913

amd64 desktop แสดงที่: วิธีการรัน Ubuntu 16.04 Desktop บน QEMU?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.