[Buildroot] Buildroot and {Open,DD-}WRT

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Thu Jun 6 06:18:14 UTC 2013


Dear Charles Musser,

On Wed, 5 Jun 2013 15:16:49 -0700, Charles Musser wrote:
> My (limited, but pleasing) experience with Buildroot is this:
> 
> - Configured Buildroot for the "mipsel" architecture and included
> (via "menuconfig") some libraries I was interested in.
> 
> - Added an additional package to build another library.
> 
> - Used the built cross-compiler to build a binary for the target.
> 
> - Popped the built application and libraries onto the target machine,
> which runs DD-WRT and ran them successfully.
> 
> My question is: where do Buildroot and DD-WRT (or for that matter
> OpenWRT) intersect? Buildroot is a complete solution, all the way to
> producing a flashable image. Are the *WRT distributions based on
> Buildroot (or use it). Can you add the *WRT sources to Buildroot and
> maybe take advantage of extra hardware support? How do these pieces
> interact (or do they)?

Thanks for those questions. I will only discuss OpenWRT, which I know a
little bit. I had only heard about the name DD-WRT in the past, and I
have no idea what it is exactly compared to OpenWRT.

OpenWRT was originally a fork of Buildroot, but that fork happened
many, many years ago, and since that time, Buildroot and OpenWRT have
diverged significantly. Today, you can't re-use OpenWRT packages in
Buildroot as-is, or the opposite. However, the extra hardware support
in OpenWRT is generally in the form of bootloader and kernel patches,
so there's absolutely no reason you would not be able to re-use these
in Buildroot.

OpenWRT is focused on producing ready-to-use images for Wireless
routers and similar type of devices. So they include a lot of
"product-specific" things, such as a Web configuration interface to
configure the Wireless router settings, they have a lot of extra
hardware support for specific Wireless routers, etc. So it's really a
tool that produces images for Wireless routers, even though you can
also use it for other purposes.

On the other hand, Buildroot doesn't target any specific type of
device, be it in terms of features or hardware type. Buildroot doesn't
package any sort of specific Web configuration interface, it only
packages upstream software, and allows you to select these for your
image. But if you want to reach a final product, you have to make some
integration: add your own applications, configure some applications
installed by Buildroot, maybe write some addition init scripts. So
Buildroot is really a tool that allows to build an embedded Linux, but
it isn't designed to produce immediately "a Wireless router" or a
"set-top box" or such or such product. You can achieve that, but the
selection of packages, the configuration, the integration is left in
the hands of the user.  

A good illustration of that is our default configuration for various
hardware platforms (in the configs/ directory). They only configure the
minimum to boot those platforms into a shell prompt, and that's it.
Since Buildroot is so product-agnostic, we can't decide for the user
whether we should install Gtk or Qt, Qt4 or Qt5, no GUI at all, whether
Dropbear or OpenSSH should be there, etc. So we simply make no choice
at all, and those configurations only define the architecture, the
bootloader version/configuration and the kernel version/configuration.

So Buildroot by itself doesn't really need any specific hardware
support for a given platform. As long as you have bootloader sources
and kernel sources that work for this platform, you can simply point
Buildroot to them, and that's it.

Another difference is that OpenWRT is capable of generating binary
packages (.ipk) while Buildroot is not.

Does that answer your questions? If not, do not hesitate to ask for
additional clarifications.

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com


More information about the buildroot mailing list