Linux 内核与发行版及安装过程和要求(ARM 与 x86) - 它实际上是如何工作的?

Linux 内核与发行版及安装过程和要求(ARM 与 x86) - 它实际上是如何工作的?

大家好(从菜鸟到极客和 SU!),

我是初学者之一,如果我没有做对,晚上就睡不着觉,所以这里是我关于 Linux 和整个安装过程及其工作原理的问题:

我们都知道操作系统需要处理单元和存储才能正常运行。我们都知道,处理单元包括各种组件,具体取决于它定义的计算机类型。显然,我们可以说出核心组件的名称,例如处理器、RAM、主板和存储,而且我们大多数人都了解它们存在的原因,并且我们都可以以某种方式想象它们彼此协作的方式,因此它们结合成这个令人惊奇的我们都以这样或那样的方式使用机器。

如今令人烦恼的是,很难理解操作系统是否是为硬件构建的,反之亦然。

我几乎没有试图理解为什么我们不能在任何机器上安装任何操作系统。就像所有机器都构建在相同的架构(主板、CPU、RAM、存储和其他模块)上一样,但您几乎无法在任何机器上安装 Linux,更不用说 Windows 或 Mac OS 了。

我们是否有机会得到一个明确的答案,为什么这如此难以实现?

我使用 Linux 作为主要操作系统,从我第一次安装它的那天起就发生了这种情况。我花了不超过6个月的时间将Win10从双启动grub菜单中删除。我非常感谢 Linux 社区,我要感谢所有使 Linux 成为现实的开发人员,我相信,如果它保持目前的状态,它将很容易在未来的操作系统使用图表中占据主导地位。它可能在某些方面缺乏一些用户友好性,但仍然令人惊叹,我们将等待开发人员满足我们的所有要求。

但它是如何工作的......实际上我写这些感伤的句子的原因是为了能够理解Linux实际上是如何工作的。例如,我使用基于 AMD 的超级本,其 CPU 可以运行任何操作系统。让我着迷的是我也想在我的平板电脑上安装 Linux。我使用 Galaxy Tab S4(带键盘和鼠标)。是的,DEX 很棒,但今天站在它面前,我想知道“这东西可能是一台 LINUX 机器!”我开始寻找在其上安装 Linux 的方法。到目前为止,我确实安装了从终端运行的 Ubuntu 版本的 Linux。这很令人惊奇,但仍然...在具有基于 ARM 的 CPU、RAM 和存储的计算机上安装成熟的 Linux 发行版是不可能的吗?

请让我理解为什么这是不可能的,以及是否有任何解决方法可以使其成为可能!如果有人能够正确解释为什么Linux不能以简单的方式安装在这台机器上,就像安装在笔记本电脑或台式机上一样。

亲切的问候,感谢您的时间和耐心与菜鸟! :)

答案1

为什么这是不可能实现的?

Linux只要您编写补丁来支持特定的 uArch 和硬件组件,就可以支持 Sun 下的任何产品。目前,Linux 正在移植到运行 M1 SoC 的 Mac 设备上。

其实我写这些感伤的句子的原因是为了能够理解Linux实际上是如何工作的。

从根本上来说,需要理解的东西很少。有架构,从CPU开始,CPU有自己的架构ISA为了支持特定架构上的 Linux,您需要一个编译器,它可以输出该 ISA 的代码以及内核中的该 ISA 支持。然后,在支持 ISA 后,您开始支持更高级别的原语,例如 RAM 访问、多处理、存储/输入 IO 等。

例如,我使用基于 AMD 的超级本,其 CPU 可以运行任何操作系统。

这是错误的。基于 AMD 的超极本仅有的运行本身支持 x86(-64) ISA 的操作系统。

让我着迷的是我也想在我的平板电脑上安装 Linux。

你完全可以。事实上,您的平板电脑已经运行 Linux 内核(广泛地由供应商修补,但它是仍然Linux 内核)。与 Linux 桌面的不同之处在于,Android 设备有一个非常不同的用户空间。

“这东西可能是一台 LINUX 机器!”

桌面 Linux 不太适合带有触摸输入的智能设备。所有这些设备都运行 Android 或其衍生产品是有原因的 - 因为 Android 是专门为它们量身定制的。

到目前为止,我确实安装了从终端运行的 Ubuntu 版本的 Linux。这很令人惊奇,但仍然...在具有基于 ARM 的 CPU、RAM 和存储的计算机上安装成熟的 Linux 发行版是不可能的吗?

是的。

请让我理解为什么这是不可能的,以及是否有任何解决方法可以使其成为可能!

谷歌是你最好的朋友。

如果有人能够正确解释为什么Linux不能以简单的方式安装在这台机器上,就像安装在笔记本电脑或台式机上一样。

ARM 设备具有非常特定的体系结构,为了使用它,您的 Linux 内核需要知道如何使用它。 Android 的 Linux 内核已经打了补丁,可以为此类硬件提供全面支持。但光有内核是不够的:你需要驱动程序蜂窝调制解调器的固件(由于专利的原因,通常仅以二进制形式提供)、WiFi 适配器、GPU、传感器等。普通 Linux 内核通常会这样做不是知道如何使用此类设备,即使有它们的驱动程序,您仍然需要能够正确初始化它们的固件。

我写的所有内容都可以在半小时内通过谷歌搜索到。如果您真的感兴趣,请勤奋并开始自学。

答案2

为了简化其他答案......

正如存在不同的 CPU(x86/AMD64、ARM、M68K、65x02、Z80 以及许多其他 CPU,不包括许多不同的子组)一样,组件“连接”在一起的方式也有许多其他方式。 RAM 是 8 位还是 16 位?地址空间有多少位? CPU 和 RAM 之间是否有额外的电路来将逻辑内存地址“映射”到物理 RAM 芯片?

不同的设备有不同的方法来处理这些问题。您的智能手机的操作方式与笔记本电脑不同。您的笔记本电脑的做法与台式机不同。您的烤面包机的工作方式与台式机不同。你的冰箱、咖啡机等的工作方式都不同。 (我提到它们是因为很明显它们也有完全不同的用途,因此仅通过烤面包机的制作效果来比较烤面包机和冰箱是愚蠢的。)

也就是说,许多计算设备实际上在较低级别运行类似于 Linux 内核的东西。然后,他们在此基础上构建一个定制操作系统(例如 Android 操作系统),该操作系统经过定制设计,可与硬件设计和设备用途(平台/环境)配合使用。例如,您的平板电脑通常具有用于用户交互和输入的触摸屏,但没有键盘和鼠标。您的台式电脑(通常)没有触摸屏,但可能有键盘和鼠标。两者都可以添加选项/外围设备来扩展它们,这样您就可以,但是您需要适当的硬件接口和驱动程序来执行此操作。

原来如此可能的做你提到的事情,在某些情况下它可能已经完成了。但随后事情会被修改以在预期的工作环境中工作。同样,您也可以修改冰箱以添加“烤面包机附件”。但除非市场需求旺盛,否则你不会看到它们在当地市场出售。

相关内容