![我可以使用嵌入式系统提供的 2.6 内核来运行 12.04 吗?](https://linux22.com/image/1096102/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E6%8F%90%E4%BE%9B%E7%9A%84%202.6%20%E5%86%85%E6%A0%B8%E6%9D%A5%E8%BF%90%E8%A1%8C%2012.04%20%E5%90%97%EF%BC%9F.png)
总之,我对 Linux 还很陌生,但要编写一些软件。该软件必须在特定的硬件板上运行,而该板的制造商提供了内核的自定义版本,我猜想这不是标准的。我已成功将 Ubuntu 8.04 安装在该板的闪存卡上,并应用了他们的内核修改。现在,当我使用
sudo apt-get install build-essential
我收到错误
E: Couldn't find package build-essential
我在其他问题中也看到过这个错误,我在这里并不是问为什么会出现这个问题,但我确实想知道将我的 Ubuntu 版本更新到较新的版本,然后应用供应商内核修改是否安全。供应商内核被标记为 2.6.30,那么在具有 3.2 内核版本的版本上应用它是否安全?如果我无法安装 g++,那么开发应用程序对我来说就不安全,但我对 Linux 的内部工作原理了解不够,不知道使用较新版本和应用供应商内核修改的影响。
答案1
解压包含修改的 *.deb 文件,查看模块以何种形式分发。还要查看其他包的内容,看看那里附带了哪些文件。如果某些文件是特定内核版本的预编译模块(*.ko 文件),那么这些模块几乎肯定会无法与较新的内核配合使用,并且在不更新内核的情况下更新 Ubuntu 也会带来麻烦。
另一方面,如果内核模块以源格式 (*.c) 分发,可能包含一些二进制 blob,那么 deb 包可能会使用 dkms 或类似程序为当前内核编译模块,并且 shell 脚本也可能为当前内核进行一些编译。在这些情况下,您应该查看模块是否针对当前 Ubuntu 内核的源代码进行编译。您应该能够在测试系统上编译它们,而不是使用目标硬件。
如果编译成功,那么很有可能它们会按预期运行,尽管当然不能保证。如果编译失败,您可以查看是否可以找到一个足够新以支持升级但仍然足够旧以与这些模块兼容的内核版本。或者您可以调整模块源以将内核 API 更改考虑在内。
答案2
Ubuntu 12.04 所需的最小内核是 2.6.24
Ubuntu 12.04 应该可以在任何高于 2.6.24 的内核上成功安装和运行。此要求的根本原因是libc
12.04 附带的库 - 这libc
是每个 Ubuntu 二进制文件/库所依赖的基础。此要求也可以绕过。
对于 10.04(或更新版本),您的制造商需要你使用特殊的 2.6.34 内核
您必须使用特殊的 2.6.34 内核 DMP 供给这里, 哪个是必须的安装 Ubuntu 10.04(或者更新版本,如果可能)。
这一事实他们的支持页面上非常清楚:
您能在 Ubuntu 12.04 上使用 2.6.34 内核吗?
我认为你没有理由不能。DMPFTP 目录提供内核源代码以及所有补丁。当然,没有 Vortex86DX/SX 的人无法确认它是否可以开箱即用,或者您需要什么才能确保它正常工作。
我非常怀疑制造商是否会免费为您提供官方 12.04 支持,因为他们似乎在 10.10 上也遇到了问题,并且一直停留在 10.04 上。不幸的是,专有嵌入式硬件通常都是这样。
答案3
我不知道官方消息来源,但从 3.2 到 2.6 内核版本有一个巨大的飞跃。如果您在该主板上安装 Ubuntu 12.04,然后在其上应用 2.6 内核,您肯定会遇到不兼容问题(硬件和软件方面、库等)。本质上,您最终可能会得到一个几乎无法使用的系统。较新版本的 ubuntu 严重依赖最新的内核开发。
我觉得您的 8.04 版本中的 DNS 服务器配置有问题。如果您修复了这个问题,您应该能够顺利安装 build-essential。
跑步
sudo apt-get 更新
并检查输出结果。
如果你有互联网连接,那么你可以去这里:并下载适用于 ubuntu 8.04 的 build-essential .deb 包。