在啥情况下“Openwrt”优于“Buildroot”框架?

Posted

技术标签:

【中文标题】在啥情况下“Openwrt”优于“Buildroot”框架?【英文标题】:In what circumstances 'Openwrt ' is preferred over 'Buildroot' frame work?在什么情况下“Openwrt”优于“Buildroot”框架? 【发布时间】:2018-08-16 14:15:50 【问题描述】:

我对 Buildroot 和 OpenWrt 感到困惑。我的意思是在哪种情况下人们会选择 OpenWrt 而不是 Buildroot。

据我了解,Buildroot 和 OpenWrt 之间只有 2 个区别

    OpenWrt 提供包管理器(opkg),它不适用于 buildroot。

    OpenWrt 为大多数网络相关设备(路由器、交换机等)提供了大量的软件包支持。

如果我的项目不需要任何包管理器,但我需要网络支持,那么我可以选择 Build root 而不是 OpenWrt,对吗? Buildroot本身就不能构建网络相关的包吗?

我的意思是,如果包管理器不是问题,我们可以继续使用 buildroot 本身,对吗?不需要选择 OpenWrt 吗?

如果我错了,任何人都可以解决 buildroot 失败而 Openwrt 获胜的情况吗?

我的意思是有可能用 Buildroot 本身来实现 OpenWrt 正在做的事情(为网络相关硬件构建固件映像)。我观察到 Buildroot 和 OpenWrt 的 init 进程(早期用户空间)行为是不同的。

在 Buildroot 中,初始化脚本将被读取etc/inittabinit.d 下的脚本将被执行。 在 Openwrt 中,procd 是初始化脚本 (rc.common),它将运行 init.d 下列出的脚本以及rc.d 下的脚本。

如果我尝试使用 Buildroot 为 OpenWrt 支持的固件生成映像,这会不会有任何影响?

【问题讨论】:

【参考方案1】:

OpenWRT 基于 Buildroot,就像 Ubuntu 基于 Debian。虽然这两个项目共享代码,但 OpenWRT 专注于路由器等,而 buildroot 只是嵌入式 linux 的通用工具链。你应该问自己的是,“这两个项目中的哪一个包含我完成任务所需的内容?”

OpenWRT不用opkg也可以编译,其实很多包都可以撕掉就可以了。这对于资源较少的设备很有用。

此外,OpenWRT 可以使用常规的初始化脚本;如果你不想,你不必使用 procd 。它提供的抽象确实使配置现有包变得更加容易,但是,如果您正在寻找移植新包,则需要 procd 的高级知识才能从头开始创建它们。

【讨论】:

以上是关于在啥情况下“Openwrt”优于“Buildroot”框架?的主要内容,如果未能解决你的问题,请参考以下文章

在啥情况下静态方法是一个好习惯?

在啥情况下 [ [ UIApplication sharedApplication ] keyWindow ] 返回 nil?

在啥情况下 alloca() 有用?

在啥情况下 [NSDocument fileURL] 可以为零?

在啥情况下 eventloop.inEventLoop() == false?

在啥情况下 viewWillAppear 会被调用?