為什麼 qemu 不在 x86_64 ubuntu 主機上安裝 aarch64 alpine Image?
我
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
打開視窗,但這次說:Guest has not initialized the display (yet)。這裡的文章說“這不是一個錯誤。它只是 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 或 edge 版本。因此,該命令應更改為。您可以在此處查看更多詳細資訊。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
標誌添加到最終命令中,以在我使用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 的安裝階段,正在搜尋 syslinux 並沒有找到…編輯 10: @rudib 的回答對我來說就像一個魅力。至於
QEMU_EFI-pflash.raw
文件,您可以在此處rpm
的包中找到它。只需進入條目並簡單地提取文件。aarch64``QEMU_EFI-pflash.raw
**編輯 11:**最後一點:如果您想在共享目錄中寫入,請確保從主機
QEMU
以 root (sudo
) 身份執行,因為答案使用passthrough
安全模型!有關這方面的更多資訊,請參見此處。**編輯 12:**如果您想使用
samba
(即qemu smb
),您可以在安裝 cifs-utils軟體包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)``qemu``10.0.2.4
安裝
我已成功使用這些命令啟動 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
如果要與 vm 互動,還需要添加外圍設備:
-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