如何为 qemu 5 选择性地启用 glibc 2.33

如何为 qemu 5 选择性地启用 glibc 2.33

我正在尝试在安装了 ubuntu 18.04 arm64 的 jetson nano 上虚拟化 windows 10 arm64(我无法将其升级到 ubuntu 20.04,因为 nvidia 不支持它)。为了获得最佳性能,我编译了最新版本的 qemu,如下所示:

./configure --prefix=/usr/local --target-list=aarch64-softmmu,arm-softmmu --enable-guest-agent --enable-vnc --enable-vnc-jpeg --enable-vnc-png --enable-kvm --enable-spice --enable-sdl --enable-gtk --enable-virglrenderer --enable-opengl

Windows arm64 需要 qemu 5 才能正常工作。qemu 4.2 缺少一些功能。我还想虚拟化 Android。为此,我需要向 qemu 添加以下参数:

-device virtio-gpu-pci,virgl=on,xres=1280,yres=720 -display sdl,gl=on ;

如您所见,它需要激活所有最重要的功能。我知道我不能使用 ubuntu 18.04,但 nvidia 不支持较新版本的 ubuntu。

所以我刚才做了:

./configure ; make and make install glibc-2.33 on the folder /opt/glibc-2.33

我没有看到错误。实际上,我在 ubuntu 18.04 中有两个 glibc 配置。我想知道如何告诉 qemu 使用此版本的 glibc 而不是旧版本。我问这个问题是因为一旦 glibc 编译结束,它仍然说它正在运行旧版本的 glibc:

......
rm -f /root/Scrivania/Work/I9/win10arm/build-glibc-2.33/stubs.h
/root/Scrivania/Work/I9/win10arm/build-glibc-2.33/elf/sln /root/Scrivania/Work/I9/win10arm/build-glibc-2.33/elf/symlink.list
rm -f /root/Scrivania/Work/I9/win10arm/build-glibc-2.33/elf/symlink.list
test ! -x /root/Scrivania/Work/I9/win10arm/build-glibc-2.33/elf/ldconfig || LC_ALL=C \
  /root/Scrivania/Work/I9/win10arm/build-glibc-2.33/elf/ldconfig  \
/opt/glibc-2.33/lib /opt/glibc-2.33/lib
make[1]: Leaving directory '/root/Scrivania/Work/I9/win10arm/glibc-2.33'

root@ziomario-desktop:# ldd --version

ldd (Ubuntu GLIBC 2.27-3ubuntu1.4) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

我不希望 glibc 2.33 成为系统上的主要选项,但它应该仅与 qemu 5 一起使用,因为我想激活这些参数:

-device virtio-gpu-pci,virgl=on,xres=1280,yres=720 -display sdl,gl=on ;

谢谢。

更新。我创建了这个脚本:

isoname1=19041.804.210128-1115.VB_RELEASE_SVC_PROD1_CLIENTMULTICOMBINED_UUP_A64FRE_NETFX_IT-IT.ISO
isoname2=Windows10_InsiderPreview_Client_ARM64_en-us_21286.VHDX
virtio=virtio-win-0.1.185.iso

GLIBC=/root/Scrivania/Work/I9/win10arm/glibc-2.33

GCONV_PATH=${GLIBC}/iconvdata LC_ALL=C     \
${GLIBC}/elf/ld.so.1 --library-path \
${GLIBC}:\
${GLIBC}/math:\
${GLIBC}/elf:\
${GLIBC}/dlfcn:\
${GLIBC}/nss:\
${GLIBC}/nis:\
${GLIBC}/rt:\
${GLIBC}/resolv:\
${GLIBC}/crypt:\
${GLIBC}/nptl:\
${GLIBC}/dfp \

/root/Scrivania/Work/I9/win10arm/qemu/build/aarch64-softmmu/./qemu-system-aarch64 -M virt-2.12 -enable-kvm -cpu host -smp 2 -m 2048 -device qemu-xhci -device usb-kbd -device usb-mouse -drive file=/root/Scrivania/Work/win10arm/win10arm.qcow2,if=virtio -nic user,model=virtio -device usb-storage,drive=install -device usb-storage,drive=drivers -drive file="$isoname1",if=none,id=install,media=cdrom,readonly=on -drive file="$virtio",if=none,media=cdrom,readonly=on,id=drivers -bios /root/Scrivania/Work/I9/win10arm/QEMU_EFI.fd -device ramfb

然后我运行了它。不幸的是,有些东西坏了:

root@ziomario-desktop:# ./startvm.sh

./startvm.sh: line 7: /root/Scrivania/Work/I9/win10arm/glibc-2.33/elf/ld.so.1: No such file or directory

/root/Scrivania/Work/I9/win10arm/qemu/build/aarch64-softmmu/./qemu-system-aarch64: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /root/Scrivania/Work/I9/win10arm/qemu/build/aarch64-softmmu/./qemu-system-aarch64)

如下所示,ld.so.1build 文件夹中缺少该文件。我在整个系统中寻找过它,但它不在任何地方。

在此处输入图片描述

你觉得这儿有什么不对吗?

在此处输入图片描述

然后我做了:

制作 制作安装

也许我在编译过程中错过了一些步骤。

相关内容