Virtual-Machine

為什麼 qemu 不在 x86_64 ubuntu 主機上安裝 aarch64 alpine Image?

  • December 6, 2020

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.isoalpine-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-ltsinitrd 文件,然後使用以下內容:

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 syslinuxAlpine 不會返回任何內容…顯然,在磁碟上 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

引用自:https://unix.stackexchange.com/questions/622803