Byt*_*e11 5 linux system-installation raspberry-pi
如果我想在我的笔记本电脑和桌面上安装 Ubuntu 桌面,我可以从 Ubuntu 的网站下载相同的映像,这适用于我听说过的几乎所有 Linux 发行版。
我目前正在购买各种 Raspberry Pi 替代品,我注意到它们每个都需要自己的操作系统。例如,Armbian为其支持的每个主板提供了下载。同样,为什么 Raspbian 不能在 OrangePi 上开箱即用?我可以理解,您可能需要针对 armv6/armv7/armv8 不同的映像,但为什么每个 SBC 都需要自己的映像?
这个问题的答案非常微妙。但根本原因是,虽然 (x86 / x86_64) PC 可能看起来非常多样化,但实际上并非如此。SBC(通常基于 ARM)更加多样化,甚至 ARM CPU 之间也可能存在巨大差异。
PC 缺乏多样性的原因可能有点基于观点,但我大胆猜测这与 Microsoft DOS 和 Microsoft Windows 有关。他们历史上有严格的要求。我相信在早期这是可能的,因为“ IBM 兼容 PC ”很流行。微软编写的软件就是为了适应这一点,而不是其他。后来微软占据了主导地位,他们可以简单地要求他们喜欢的东西,而硬件供应商也必须遵循。
同样,英特尔拥有如此的主导地位,以至于其他制造商(例如 AMD)为了竞争,必须确保他们的 CPU 与英特尔的兼容。尽管历史上一个有趣的点是我们现在所说的 x86_64 实际上是 AMD 的发明,又名 AMD64。
大多数 SBC 都是基于 ARM 的,并且它们背后没有相同的历史。实际上ARM根本不制造CPU,他们只是将设计授权给制造商。这使得许多不同的制造商能够定制这些设计,并且没有足够的商业压力来标准化它们。
PC有非常稳定的核心指令集。是的,不同的 Intel / AMD CPU 有一些用于某些高级功能的附加指令集,但在很大程度上,对于运行操作系统来说,这些并不那么重要。它们可能会影响您可以运行的应用程序。
但对于 ARM SBC,指令集上存在更显着的差异。例如,当创建第一个 Raspberry PI 时,他们使用内置硬件浮点的 ARM CPU 。当时其他主要 Linux 发行版(例如 Debian)尚未编译为支持此功能。从技术上讲,它们可以工作,但如果没有它,它们会慢得多。
现在重要的是要了解核心 CPU 功能和指令集不仅由内核使用,而且还由您安装的每个软件包使用。如果您想要硬件浮点支持,并且操作系统发行版没有为其编译,那么您必须重新编译系统上的每个软件包。
由于 CPU 的其他功能,会出现一些棘手的问题。这意味着许多ARM SBC需要修改Linux内核。现在,为了内核而发布一个全新的发行版似乎有点过分了。但有一件事是真的:
为什么 Raspbian 不能在 OrangePi 上开箱即用
如果您能够解决启动问题(如下),那么您可能仍然会发现它缺少重要的内核覆盖。结果可能只是缺少功能,或者可能是内核无法启动。
通常,启动并不是发布全新操作系统的理由。但确实必须小心处理。
在 PC 上,许多硬件初始化要么标准化,要么由 BIOS 处理。BIOS 存储制造商提供的软件并在操作系统之前运行。然后它负责查找并运行引导加载程序。
ARM SBC 上没有 BIOS。操作系统附带了等效软件。现在从技术上讲,没有什么可以阻止开源操作系统彼此共享此固件(请参阅Raspberry Ri 的 bootcode.bin 的许可证)。但这确实意味着每个操作系统都必须为每个不同的 SBC 提供该固件的副本……而且有许多不同的 SBC。
我相信其他 SBC 通过简单地发布现有操作系统的自己的 ISO 来解决这个问题。 Beagleboard 就是这么做的。