Build vs Assemble Firmware

whats the difference between "build your own firmware" and "assemble your own firmware"?

Build your own firmware - here
Assemble your own firmware - here

are they related, completely separate, etc.?

@Jamar666 - good question, and the difference can be a bit confusing or subtle.

Building the firmware, in this scenario, means you are actually taking all the source code necessary and compiling (the compiler is actually a collection of several tools). An analogy here is that you go to the store and buy all the raw ingredients for a meal, and cook everything from scratch.

Assembling in this context (i.e. the 'image builder', which can be confusing), is about putting together all the pre-compiled bits into an image ready for your OpenWRT compatible device. This is like going to a store and buying a bunch of prepared food, and you put it on a plate, maybe warm it up, and it is otherwise ready to eat.

The full build system, when you 'build' your firmware, will also put together the 'image builder' components. But you can skip the heavy lifting of compiling all the source code and simply download the image builder, assuming you don't need/want to do the extra work of compiling.

awesome thanks.

if i wanted to add/remove packages for example (say ipv6, firewall, etc.), would this steer me towards one over the other? would "building your own firmware" be a "better" fit?

why not rename the one for example from "image builder" to say "image assemble"?

Imagebuilder is meant to be the easy way to cook up your firmware, but you can't do any source code midification. It is purely cooking up the firmware from the ready-compiled core device firmware and your additional package selections. It is naturally much faster than compiling from scratch.

The Image Builder (previously called the Image Generator) is a pre-compiled environment suitable for creating custom images without the need for compiling them from source.
It downloads pre-compiled packages and integrates them in a single flashable image.

You can add & remove packages also in the imagebuilder, if you want.
Just like explained in the wiki that you referenced:

Building with toolchain from scratch enables you to tweak source code in the packages, in case you want additional tweaks.

The image builder is probably the best tool for you to use. It allows you to add/remove packages easily, and generally handles any dependencies without additional complications.

Yeah, it can certainly be a bit confusing by name. IIRC, the image builder used to be called the "image generator" which might have been a better long-term name (although I'm sure there were good reasons for changing the name). The problem with the word 'assemble' is that one of the tools within the complier realm is called an assembler (look up compiler, assembler, linker, loader as key terms in taking source code as an input and creating an output that is executable code on a given platform).

hmm, okay thanks.

what about sysctl commands i want "hardcoded"? that would need to be source, or since it just a "file", i can edit/copy/paste over it with either option?

definitely the "assembling" would be ideal if you can leverage it, rather than building. just not sure on the subtle differences - when to use the one over the other.

is the type of device/router also a factor in either option?

example: rt-ac56u vs wdr-3600 vs dir-615 e3/e4 ?

You can overwrite default files by including them as custom files, as explained in the same wiki article:

No, both cover the same devices (with some exception with old device with really small flash (4 MB or less), for which the buildbot can't build basic firmware with default settings). Imagebuilder can work if you find the basic firmware for that device in the normal download repo.