Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从内核层到UI层构建Linux系统_Linux - Fatal编程技术网

如何从内核层到UI层构建Linux系统

如何从内核层到UI层构建Linux系统,linux,Linux,我一直在研究MeeGo、maemo和Android架构。 它们都有Linux内核,在内核上构建一些库,然后构建中间层库[例如电话、媒体等]。 假设我想用glibc、Dbus等二进制文件构建自己的系统,比如Linux内核,。。。。像GTK+及其二进制文件这样的UI工具包。 我想从源代码处编译每个项目,为台式机、上网本和手持设备定制我自己的linux系统。[首先从上网本开始:)] 如何从内核到UI构建自己的自定义系统。请查看: Linux从头开始(LFS)是一个项目 这为您提供了一步一步的解决方案

我一直在研究MeeGo、maemo和Android架构。 它们都有Linux内核,在内核上构建一些库,然后构建中间层库[例如电话、媒体等]。 假设我想用glibc、Dbus等二进制文件构建自己的系统,比如Linux内核,。。。。像GTK+及其二进制文件这样的UI工具包。 我想从源代码处编译每个项目,为台式机、上网本和手持设备定制我自己的linux系统。[首先从上网本开始:)] 如何从内核到UI构建自己的自定义系统。

请查看:

Linux从头开始(LFS)是一个项目 这为您提供了一步一步的解决方案 创建自己的应用程序的说明 完全从 来源


对于你认为是一个非常简单的问题,我提前表示歉意,因为我的回答很冗长。不幸的是,以一种连贯统一的方式从许多不同的比特拼接成一个完整的操作系统并不是一项简单的任务。我目前正在开发我自己的基于Xen的发行版,我将分享我迄今为止的经验(除了从零开始的Linux):

1-确定一个范围并坚持下去

如果你有任何希望实际完成这个项目,你需要写一个解释你的新操作系统将是什么,一旦它在一个单一的段落完成。把它打印出来,直接贴在你面前的墙上。阅读它,吟诵它,练习倒背如流地说它,以及其他任何可能帮助你在任何屈服于它的冲动面前保持它的直接性

2-决定一个包管理器

这可能是你将要做出的最重要的决定。您需要决定如何维护更新和新版本的操作系统,即使您是唯一的订户。任何人,包括使用新操作系统的您,肯定会发现需要安装基本发行版中未包含的内容。即使您正在推出一个操作系统来为信息亭供电,所有部署都必须以理智和一致的方式保持最新

我最终选择了apt rpm,因为它提供了流行的.rpm包格式的灵活性,同时在依赖项方面利用了apt已知的健全性。您可能更喜欢将yum、apt与.deb包、slackware风格的.tgz包或您自己的格式一起使用

快速决定这个问题,因为它将决定如何构建构建。跟踪每个组件中的依赖项,以便以后很容易滚动包

3-重新读取范围,然后配置内核

制作内核时,避免出现厨房水槽综合症。看看您想要完成什么,然后决定内核必须支持什么。您可能需要全面的小工具支持、与其他流行操作系统的文件系统的兼容性、适合进行大量浏览的人的安全挂钩等。您不需要支持疯狂的RAID配置、高级netfilter目标和MiniXF,但wifi可以更好地工作。您不需要10GBE或infiniband支持。仔细检查内核配置。如果您不能根据模块的潜在用途来证明包含模块是合理的,那么不要检查它

除非您绝对需要,否则避免从树补丁中拉出。人们不时地提出新的调度算法、实验性的文件系统等等。维护一个除了主线以外的任何东西都会消耗的内核是非常非常困难的

当然也有例外。如果走出树外是实现你的范围内所述目标的唯一途径。只是要意识到你将来会为自己做多少额外的工作

4-重新阅读您的范围,然后选择您的基本用户区

至少,您需要一个shell、核心实用程序和一个在没有窗口管理器的情况下工作的编辑器。注意依赖关系将告诉您还需要一个C库以及使基本命令工作所需的其他任何东西。因此,Linux从头开始是一个很好的检查资源。我还强烈建议查看LSB(),这是一个规范,列出了“预期”将包含在任何发行版中的常见包和组件。不要将LSB作为标准,将其建议与您的范围进行比较。如果操作系统的用途不需要包含某些内容,并且您安装的任何内容都不依赖于它,请不要包含它

5-重新阅读您的范围并决定窗口系统

再次提及
一切,包括厨房水槽
综合症,试着克制一下在基本操作系统上安装KDE或GNOME的冲动,并称之为完成。另一个常见的陷阱是安装其中一个的完整版本,并通过删除不需要的东西来向后工作。为了保持良好的依赖关系,最好是从下至上而不是自上而下

快速确定您的发行版将喜欢的UI工具包,并将其(带有支持库)安装到位。在UI中快速定义一致性并坚持它。没有什么比打开10个窗口更让人恼火的了,这些窗口在控件运行时的行为完全不同。当我看到这一点时,我诊断操作系统患有多重人格障碍,并希望对其开发人员进行药物治疗。Ubuntu移动窗口控件引起了轩然大波,而且他们一直在这样做。。不一致是版本之间的行为变化。如果人们不能立即找到按钮或必须增加鼠标里程数,他们会感到非常不安

6-重新阅读您的范围并选择您的应用程序

在这里也要避免厨房水槽综合症。选择应用程序不仅要基于您的范围和受欢迎程度,还要基于维护它们的容易程度。很可能