如何从头开始为Raspberry pi构建自定义操作系统?


10

我是内核和嵌入式Linux的新手。我最近购买了Raspberry Pi,并使用Raspbian启动了它。Pi令我着迷,要了解有关嵌入式的更多信息,我决定制作一个家庭自动化系统。我想使用自己的内核和堆栈。即我不想使用任何操作系统。

为此,我从官方github下载了内核,target_fs,固件和工具链。我已经使用工具链编译了内核。

现在我不知道如何将其放入新的sdcard(格式化为全新的开始)。在启动我的堆栈之前,我需要注意什么?由于我还没有使用ssh或telnet服务器/客户端,所以我怎么知道启动成功。在哪里可以为pi获取ssh / telnet守护进程?我的目标是仅引导Raspberry Pi中的内核(或最低限度)。


2
这是一项艰巨的任务,我认为您没有足够的经验。是否考虑仅调整现有发行版并节省99%的时间?
托尔比约恩Ravn的安德森

我意识到这有点老了,但是最近我了解了MLL,这是构建最小的Linux操作系统的另一种方法。作为Linux的新星,我发现MLL对学习该过程很有帮助。我目前正在研究在构建中包括Raspberry Pi驱动程序的过程。MLL minimal.linux-bg.org/#home祝您好运!
罗布

Answers:


9

内核期望两件事:一个根文件系统和一个init驻留在其上的守护程序。raspbian附带的init是sysV风格的系统。你是不依赖于-通常与Linux中使用其他的init系统(记住:内核 Linux的)是systemdupstart-但你确实需要某种类型的初始化系统。

你也可以把initinitramfs中并将其内置到内核,在这种情况下,你可以摆脱无根文件系统,但似乎在这种情况下,毫无意义。

init是内核启动的唯一用户级应用程序。通常,它随后启动使用登录名打开ttys的进程,然后启动可能启动显示管理器,sshd等的其他服务。您可能不需要登录名,但您可能需要tty。您也可以直接直接启动sshd。

我在哪里可以得到pi的ssh / telnet守护进程?

从上游raspbian那里获得它。 这些东西都不是专门为pi写的。 或至少很少。它已用于各种不同的系统。

如果您想为pi进行预编译...好吧,那就是树莓派等。1

我不知道如何将其放入新的SD卡

您必须使用/boot位于raspbian映像分区中的pi特定的引导程序。


1.坦率地说,我认为您正在进行一个大型的吉卜赛人探索活动,根据您的问题所隐含的知识,您几乎没有希望今年完成工作,除非您辞职并致力于全职学习,并且即使这样,您失败的机会也很高,要花费数月才能达到成功的机会。这并不简单。这不简单。也就是说,即使您失败了,您也可能会在此过程中学到一些有用的东西。但是,最好花时间学习了解现有发行版(例如raspbian)以及如何使用它来创建家庭自动化系统。


1
堂吉otic德?您是我认识的唯一经常挑战我的词汇的人之一。+1。
Jacobm001

7

对于刚刚起步,我认为您使用嵌入式计算机(特别是在Raspberry Pi级别)有错误的概念。如果您真的想构建自定义的操作系统,建议您从Scratch,LFS,http://www.linuxfromscratch.org/的 Linux开始但是,如果您想了解Google的嵌入式系统,则可以从Google搜索“嵌入式系统”,Wikipedia或Embedded开始。 Linux Wiki http://elinux.org/Main_Page


1
LFS +1。我想在交叉编译的情况下做到这一点!
goldilocks

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.