我如何构建 Linux 发行版?
How can I build a Linux distro?
Disclaimer:
This is my first time delving into the embedded Linux world (Ubuntu and Debian), despite being a Linux user for some time and having used
distros such as Raspbian, Armstrong(beaglebone) and embedded debian.
The title may also seem generic, but I really couldn't think of a
better one, I've gone to and from work, I've been reading a lot for
the past few hours and it's waaaaay past my bed time to get my full
beauty sleep, which I will not get a chance again until tuesday, so
... I apologize for grammar/syntaxe/formatting errors.
背景
Debian、Armstrong、Ubuntu、OpenWRT 等软件包是如何构建的?我的意思是,我知道当你将图像下载到像 BeagleBone Black 这样的板上时,你需要构建 u-boot、内核和包,而这些发行版之间的区别在于包(我可能是这里有误,请指正)。
我一直在阅读如何构建这些发行版(准确地说是 Armstrong 和 OpenWRT),他们都告诉我下载他们的存储库和 运行 他们的配置脚本以获得发行版 运行宁。因此,这让我想到:“(1) 如果我有一个不属于 BeagleBone、Raspberry Pi 或任何其他配置的自定义板会发生什么众所周知的看板?(2)这些看板的创建者第一次创建独特的看板时做了什么?(3)他们是怎么做到的?制作他们自己的发行版?(4) 是否可以通过安装我想要的任何软件包来制作我自己的发行版并使它们与其他发行版不同?
如您所见,有 4 个不同的问题,因此如有必要,我将在接下来的段落中进行自我解释。
(1) 如果我有一个不属于 BeagleBone、Raspberry Pi 或任何其他众所周知的板的配置的定制板会怎样?
好的。我试着阅读他们 运行 的脚本来构建发行版,但是它们太长了,已经很晚了,而且我一无所获,我完全迷路了。根据我一直在阅读的内容,我想这些脚本会下载 u-boot、内核和软件包,构建它们并将它们放在同一个映像中(我已经阅读了如何 "do it manually" 仅使用引导加载程序和内核)。我想象有一些配置文件,一些描述板的地方等等,但我不能确定。我走的路对吗?
(2)上述看板的创建者第一次创建独特的看板时做了什么?
直到你可能在想,"ok, just find a board that looks like your board, modify the files and get on with it"。在现实世界中,这就是我会做的,但现在我想学习,而且只有将所有这些知识刻在脑海中,我才会学习。问题是,有几个配置文件(根据我从 u-boot 和内核中学习的内容),我的 body 中的所有内容都告诉我阅读嵌入式 Linux 入门,第 2 版,在问这个之前。如果这个问题的答案太深入,请告诉我看书,但如果没有,可以body帮助我吗?
(3)他们是如何制作自己的发行版的?
(4)是否可以通过安装任何我想要的软件包来制作我自己的发行版并使它们与其他发行版不同?
我知道发行版背后有很多发展,绝不是我有意诋毁(这个词正确吗?英语不是我的母语,根据定义似乎还可以,但不知何故感觉 "blargh" 在这里使用时)所有这些团队所做的开发。这只是一个问题,我可以构建引导加载程序、内核、一些其他随机程序和软件包并将其称为我自己的发行版吗?如果是这样,我如何将包映像构建到我的发行版中?
如果我从头开始开发 well-known 发行版,而不使用他们的脚本,我会构建引导加载程序、内核和 well-known 发行版使用的所有内容,然后将其绑定到一个图片?我会只构建 u-boot 和内核,然后安装所有其他源并从中构建我的新 linux 映像吗?
编辑: 我希望保留上面的文字,以便新读者可以了解我的思路。我觉得很难用几句话来表达自己,使它成为"relatable question"。所以我在下面放了一个 header 是我目前能想到的最多 objective 的问题。我还编辑了一些文本并给了它一个标题。我只是划掉了前面的问题,因为它们看起来是有效的,尽管有各种各样的好答案,因为它可以帮助其他人解决我同样的问题。如果需要我可以删除它们。
跳转到问题
有几个问题我想得到答案,我正在努力 objective 尽可能地回答他们
我可以通过下载 u-boot、内核和特定的 OpenWRT 源代码从源代码构建像 OpenWRT 这样的发行版吗?我的意思是如果我可以 不用 使用他们提供的脚本。如果我使用他们的脚本,我知道我可以修改一些配置并将其移植到我自己的 "unique" 开发板上。 yocto 可以作为我的起点吗?
如何配置自己独特的开发板?如果我只编译 u-boot 和内核然后在上面安装一些程序就可以了吗?生产就绪了吗?
许多人从头开始谈论 Linux。我发现反对它的主要论据是它对生产来说很糟糕。不要告诉我为什么这对生产来说很糟糕,你能告诉我如何为生产设置 "good" 吗?
现在,第一个 "stops" 就是那里的 Yocto toolkit which helps you building your distribution content. But of course, that is just one example of such a tool, and there many more。
在 2016 年,没有人会再发行 "manually from scratch"。
yocto 会为您完成大部分工作。
你看过 lfs http://www.linuxfromscratch.org/
也可以将一组软件包安装到 chroot 环境中并创建文件系统。不过,需要额外的工作来安装 grub 或任何引导加载程序才能使其成为可引导映像。
Disclaimer: This is my first time delving into the embedded Linux world (Ubuntu and Debian), despite being a Linux user for some time and having used distros such as Raspbian, Armstrong(beaglebone) and embedded debian. The title may also seem generic, but I really couldn't think of a better one, I've gone to and from work, I've been reading a lot for the past few hours and it's waaaaay past my bed time to get my full beauty sleep, which I will not get a chance again until tuesday, so ... I apologize for grammar/syntaxe/formatting errors.
背景
Debian、Armstrong、Ubuntu、OpenWRT 等软件包是如何构建的?我的意思是,我知道当你将图像下载到像 BeagleBone Black 这样的板上时,你需要构建 u-boot、内核和包,而这些发行版之间的区别在于包(我可能是这里有误,请指正)。
我一直在阅读如何构建这些发行版(准确地说是 Armstrong 和 OpenWRT),他们都告诉我下载他们的存储库和 运行 他们的配置脚本以获得发行版 运行宁。因此,这让我想到:“(1) 如果我有一个不属于 BeagleBone、Raspberry Pi 或任何其他配置的自定义板会发生什么众所周知的看板?(2)这些看板的创建者第一次创建独特的看板时做了什么?(3)他们是怎么做到的?制作他们自己的发行版?(4) 是否可以通过安装我想要的任何软件包来制作我自己的发行版并使它们与其他发行版不同?
如您所见,有 4 个不同的问题,因此如有必要,我将在接下来的段落中进行自我解释。
(1) 如果我有一个不属于 BeagleBone、Raspberry Pi 或任何其他众所周知的板的配置的定制板会怎样?
好的。我试着阅读他们 运行 的脚本来构建发行版,但是它们太长了,已经很晚了,而且我一无所获,我完全迷路了。根据我一直在阅读的内容,我想这些脚本会下载 u-boot、内核和软件包,构建它们并将它们放在同一个映像中(我已经阅读了如何 "do it manually" 仅使用引导加载程序和内核)。我想象有一些配置文件,一些描述板的地方等等,但我不能确定。我走的路对吗?
(2)上述看板的创建者第一次创建独特的看板时做了什么?
直到你可能在想,"ok, just find a board that looks like your board, modify the files and get on with it"。在现实世界中,这就是我会做的,但现在我想学习,而且只有将所有这些知识刻在脑海中,我才会学习。问题是,有几个配置文件(根据我从 u-boot 和内核中学习的内容),我的 body 中的所有内容都告诉我阅读嵌入式 Linux 入门,第 2 版,在问这个之前。如果这个问题的答案太深入,请告诉我看书,但如果没有,可以body帮助我吗?
(3)他们是如何制作自己的发行版的?
(4)是否可以通过安装任何我想要的软件包来制作我自己的发行版并使它们与其他发行版不同?
我知道发行版背后有很多发展,绝不是我有意诋毁(这个词正确吗?英语不是我的母语,根据定义似乎还可以,但不知何故感觉 "blargh" 在这里使用时)所有这些团队所做的开发。这只是一个问题,我可以构建引导加载程序、内核、一些其他随机程序和软件包并将其称为我自己的发行版吗?如果是这样,我如何将包映像构建到我的发行版中?
如果我从头开始开发 well-known 发行版,而不使用他们的脚本,我会构建引导加载程序、内核和 well-known 发行版使用的所有内容,然后将其绑定到一个图片?我会只构建 u-boot 和内核,然后安装所有其他源并从中构建我的新 linux 映像吗?
编辑: 我希望保留上面的文字,以便新读者可以了解我的思路。我觉得很难用几句话来表达自己,使它成为"relatable question"。所以我在下面放了一个 header 是我目前能想到的最多 objective 的问题。我还编辑了一些文本并给了它一个标题。我只是划掉了前面的问题,因为它们看起来是有效的,尽管有各种各样的好答案,因为它可以帮助其他人解决我同样的问题。如果需要我可以删除它们。
跳转到问题
有几个问题我想得到答案,我正在努力 objective 尽可能地回答他们
我可以通过下载 u-boot、内核和特定的 OpenWRT 源代码从源代码构建像 OpenWRT 这样的发行版吗?我的意思是如果我可以 不用 使用他们提供的脚本。如果我使用他们的脚本,我知道我可以修改一些配置并将其移植到我自己的 "unique" 开发板上。 yocto 可以作为我的起点吗?
如何配置自己独特的开发板?如果我只编译 u-boot 和内核然后在上面安装一些程序就可以了吗?生产就绪了吗?
许多人从头开始谈论 Linux。我发现反对它的主要论据是它对生产来说很糟糕。不要告诉我为什么这对生产来说很糟糕,你能告诉我如何为生产设置 "good" 吗?
现在,第一个 "stops" 就是那里的 Yocto toolkit which helps you building your distribution content. But of course, that is just one example of such a tool, and there many more。
在 2016 年,没有人会再发行 "manually from scratch"。
yocto 会为您完成大部分工作。 你看过 lfs http://www.linuxfromscratch.org/ 也可以将一组软件包安装到 chroot 环境中并创建文件系统。不过,需要额外的工作来安装 grub 或任何引导加载程序才能使其成为可引导映像。