是否可以在64位内核和32位用户空间下运行Raspberry Pi 3?


8

我刚刚接触过Raspberry Pi 3,我想开始对其进行试验,特别是关于64位指令集的试验。

我很清楚32位和64位指令集的优缺点,因此请坚持最初的问题:是否有可能利用当前的32位用户空间应用程序运行64位内核?

用64位编译器编译内核并将映像上传到RasPi足够了,或者还有其他步骤我应该注意吗?您能否大致概述一下我应该如何看待路线图?像,如果我安装64位内核,则可能/将损坏的模块/驱动程序。我需要重新编译所有内容吗?

浏览Internet我知道其他类型的设备也是可能的,通常运行这种“混合”配置会破坏软件包管理器,但是我现在不担心可管理性。因此,即使它破坏了程序包管理器并且难以维护,我也想了解它是如何完成的。

请注意,我仍在学习如何编译内核,但是仍然有很长的开发C / C ++应用程序的经验。这是我的宠物项目,对Linux体系结构和内核内部结构有深入的了解。


Dragonboard 410c使用相同的处理器arm64位,并具有由linaro定制的ubuntu。

Answers:


3

是否可以在64位内核和32位用户空间下运行Raspberry Pi 3?

是。一些预先构建的图像已经准备就绪:

通常,运行此“混合”配置会破坏程序包管理器,但目前我不担心可管理性。因此,即使它破坏了程序包管理器,也很难维护

在Raspbian中使用多体系结构是不切实际的,因为它没有64位上游软件包,并且最接近的64位相对(Debian arm64)具有不兼容的软件包版本。要在Raspbian下运行64位程序,可以使用静态二进制文件,容器(LXC,systemd-nspawn)或chroot [1]。这种隔离避免了mutiarch中固有的典型包冲突。

您不需要重新编译任何东西,因为以上所有二进制文件(Raspbian 32位用户环境,64位内核,Debian arm64用户环境程序包)都可以使用。

像,如果我安装64位内核,则可能/将损坏的模块/驱动程序。

在编写SoC摄像机时,已知在Raspberry Pi 64位内核下会破坏具有MMAL的加速视频解码和高速USB支持(通过FIQ)。

[1]有关如何创建此类chroot的说明,请参见Raspberry Pi 4上的64位OS


2

当然可以。64位操作系统一直在执行此操作*。当您使用64位操作系统并打开32位应用程序(又名32位用户空间应用程序)时,就会发生这种情况。

但是有时,库/依赖项可能存在问题。我曾经在PC上遇到错误,关于wrong ELF class。通过安装适当的32位库来解决ia32-libs

我还不确定这在ARM机器上的表现如何,因为还没有正式的Pi可用64位内核可供使用。

同样,不能简单地使用64位编译器编译内核,然后将其上传到Pi。如果就这么简单,我们将已经可以在带有64位内核的Pi 3上运行。


+1 Windows通过程序文件划分使这一点非常明显。64位应用程序存储在中C:\Program Files,而32位应用程序存储在中C:\Program Files (x86)
Jacobm001

1
@ Jacobm001 Windows有一个更细微的区别。在Linux中,您只需要适当的32位库。对于Windows,从技术上讲,您的PC上安装了两个Windows版本:32位版本(存储在中SysWOW64)和64 位版本(存储在中)system32。Windows会识别可执行文件并将其制成,以便32位应用程序将其显示SysWOW64system32。同样的情况,与Program Files和注册表。32位应用程序看起来C:\Program Files (x86)很普通,C:\Program Files但是对它的所有更改都转到C:\Program Files (x86)
PNDA

1
@ Jacobm001我在聚会上很有趣。
PNDA

2

您需要两组库以及针对正确的库编译的两种体系结构,因此需要2个构建环境。查找多足弓和您喜欢的bsse以获得指针。喜欢

https://wiki.debian.org/MultiarchCrossToolchainBuild

因此,您需要在Rasbian空间中执行类似操作。因此,构建一个arm64内核和armhf用户土地,并为每个库正确链接两组库。

在这里,您可以看到有人在不同的板上执行此操作:

https://groups.google.com/forum/#!topic/linux.debian.ports.arm/ankucgztcI8

并查看他们的经验。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.