我qemu-4.0.0.tar.xz
从下载这里安装完所有必要的依赖项后,我运行$ ./configure --target-list=aarch64-softmmu
以进行QEMU
安装。我仔细检查了$ qemu-system-aarch64 --version
返回的安装QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
。我继续构建$ sudo qemu-img create -f qcow2 alpine-img.qcow2 10G
返回的磁盘映像Formatting 'alpine-img.qcow2', fmt=qcow2 size=10737418240 cluster_size=65536 lazy_refcounts=off refcount_bits=16
。我下载alpine-virt-3.12.1-aarch64.iso
并alpine-standard-3.12.1-aarch64.iso
从这里对于它们两个,当我运行时,sudo qemu-system-aarch64 -cdrom alpine-image.iso -machine virt -m 1024 -smp 4 -hda alpine-img.qcow2
我会得到一个QEMU
窗口,该窗口不会继续安装,永远留在那里,并显示compat_monitor0 console
QEMU 4.0.0 monitor - type 'help' for more information
(qemu)
。任何帮助,将不胜感激!
编辑1:以下命令也不起作用:$ sudo qemu-system-aarch64 -boot d -cdrom alpine-standard-3.12.1-aarch64.iso -machine virt -m 1024 -smp 4 -hda alpine-img.qcow2
编辑2:添加-device virtio-gpu-pci
命令,即sudo qemu-system-aarch64 -boot d -cdrom alpine-standard-3.12.1-aarch64.iso -machine virt -m 1024 -smp 4 -hda alpine-img.qcow2 -device virtio-gpu-pci
打开窗口,但这次显示:访客尚未初始化显示屏(尚未)。帖子这里说“这不是一个错误。这只是 QEMU 告诉您来宾操作系统尚未完成打开模拟显卡和显示输出所需的操作。在这种情况下,可能的原因是您尝试运行一个无法在此主板模型上运行的内核,因此它在到达任何地方之前就崩溃了。如果内核没有内置图形支持并且只是向串行控制台输出,您也可以看到此消息。”
编辑3:选项-nographic
来自这里似乎也不起作用。
编辑4:我尝试了相同的过程ubuntu-16.04.7-server-arm64.iso
和相同的结果...看来我的构建一定有问题QEMU
。
编辑5:有人问我是否有理由使用旧版本的QEMU
.该问题与版本无关,因为它也QEMU
发生过。v5.2.0-rc4
编辑6:一定要看看帖子的答案这里。我的结论是,忘记这些.iso
文件吧。而是从以下地址下载vmlinuz-lts
内核和initramfs-lts
initrd 文件这里然后就这样:
qemu-system-aarch64 -machine virt -m 1024 -cpu cortex-a57 -kernel vmlinuz-lts -initrd initramfs-lts -append "console=ttyAMA0 ip=dhcp alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main/" -nographic
确保您位于内核和 initrd 文件所在的目录中,并且一定要使用该-nographic
选项,因为否则它对我不起作用。我还没有弄清楚到底发生了什么事情的细节。一旦我这样做了,我就会添加一个答案。尽管如此,通过上面的命令,您最终将看到 Alpine Linux 欢迎页面!
编辑7:上面的命令不能解决modloop
启动期间的问题。您可以找到modloop
alpine LTS 或边缘版本这里。因此,该命令应更改为qemu-system-aarch64 -machine virt -m 1024 -cpu cortex-a57 -kernel vmlinuz-lts -initrd initramfs-lts -append "console=ttyAMA0 ip=dhcp alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main/ modloop=http://dl-cdn.alpinelinux.org/alpine/edge/releases/aarch64/netboot/modloop-lts" -nographic
。你可以检查这里更多细节。
编辑8:我将-hda
标志添加到最终命令中,以在我使用创建的映像磁盘上实际安装 Alpine qemu-img
。我跑过去alpine-setup
,却发现Available disks are:
我只有一个vda
选择。所以我选择它,然后我被问到How would you like to use it?
,我的选择是sys
,,data
....lvm
我选择sys
并得到ERROR:unable to select packages:
syslinux (no such package):
required by: world[syslinux]
。这实际上与我指定的磁盘映像有关吗?顺便说一句,如果没有这个-hda
选项,安装 alpine 就没有任何问题了。因此,对于安装,应将安装选项(也许-hda
)传递给qemu
命令。
编辑9: 这链接显示默认情况下 Alpine 使用 Syslinux 作为引导加载程序。另外,虽然该包似乎可用这里,使用apk add syslinux
Alpine 不会返回任何内容...显然,在 Alpine on Disk 的安装阶段,正在搜索 syslinux 但未找到...
编辑10:@rudib 的回答对我来说就像一个魅力。至于文件,你可以在包QEMU_EFI-pflash.raw
中找到它rpm
这里。只需找到该aarch64
条目并提取QEMU_EFI-pflash.raw
文件即可。
编辑11:最后一点:如果您想在共享目录中写入,请确保从主机QEMU
以 root ( sudo
) 身份运行,考虑到答案使用passthrough
安全模型!有关这方面的更多信息,请参阅这里。
编辑12:如果您想使用samba
(即),您可以在安装 cifs-utils 后在主机和来宾中qemu smb
使用该命令qemu-system-aarch64 -nographic -machine virt -m 4096 -cpu cortex-a57 -drive if=pflash,format=raw,readonly,file=path_to_efi_file/QEMU_EFI-pflash.raw -drive format=raw,readonly,file=path_to_alpine_virt_iso/alpine-virt-3.12.1-aarch64.iso -drive file=path_to_qcow2_file/alpine.qcow2 -net nic -net user,smb=path_of_shared_folder
包裹: mount -t cifs //10.0.2.4/qemu mount_point (e.g. /mnt)
。你可以阅读这里上一个命令中的whereqemu
和come from 。10.0.2.4
答案1
安装
我已成功使用这些命令启动 alpine 映像并将其安装到映像中qcow2
:
# create qcow2 image
qemu-img create -f qcow2 alpine.qcow2 10G
# boot up with install medium
qemu-system-aarch64 \
-machine virt -cpu cortex-a57 \
-drive if=pflash,format=raw,readonly,file="/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw" \
-m 512M \
-drive format=raw,readonly,file=/path/to/alpine-standard-3.12.1-aarch64.iso \
-drive file=alpine.qcow2
edk2
您的主机上需要该软件包或QEMU_EFI-pflash.raw
通过其他方式获取该文件。
然后,您可以在( ) 上运行setup-alpine
并安装 sys 。 似乎在这里开箱即用就很好。/dev/vdb
alpine.qcow2
setup-alpine
安装完成后,关闭系统并取出安装介质:
qemu-system-aarch64 \
-machine virt -cpu cortex-a57 \
-drive if=pflash,format=raw,readonly,file="/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw" \
-m 512M \
-drive file=alpine.qcow2
您现在应该已经启动到新的 alpine 安装中。
图形
如果您需要图形,可以添加:
# ramfb seems to work (altough it wont be fast)
-device ramfb
# or virtio gpu, should be faster, but will be detected later
-device virtio-gpu
如果您想与虚拟机交互,您还需要添加外围设备:
-device usb-ehci -device usb-kbd -device usb-mouse
共享文件夹
如果您想共享文件夹,您可以使用 9p 或可能包含的 samba 服务器。 9p 应该像这样工作(如qemu 文档):
-fsdev local,path=/path/to/your/folder,security_model=none,id=test_dev \
-device virtio-9p-pci,fsdev=test_dev,mount_tag=test_mount
并在客人中:
mount -t 9p -o trans=virtio test_mount /mnt