在啥情况下“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/inittab
,init.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?
在啥情况下 [NSDocument fileURL] 可以为零?