As you know several routers have only 4MB of FLASH (or less!).
I feel that all of us prefer to use firmwares incorporating all functionalities, and enable only the services that we need.
My suggestion is a change in the firmware architecture to support all funcionalities on all routers (please, don't mix this with optware):
- Up to now, all binaries are included in the Flash. As a consequence several versions with different functionalities exist.
- But some routers have USB ports, and all of them can use network shares. As a consequence, all routers can use external storage.
- The key point is what binaries/files leave in the internal storage (Flash), and what move to the external one: From my point of view several DRIVERS can be stored in the external storage. The reason is simple: you can load it to RAM, and don't need to be accessible any more. Moreover, some services can be delayed to start when you load the needed drivers.
- Conclusion: Create a mixed build with ALL binaries, put only some basic files in Flash plus the requirements to start the external storage (USB, SD/MMC, CIFS, etc.), and modify some scripts to try to start dependent services when drivers are loaded.
- Wireless drivers: WiFi drivers are huge binaries. But to start the router, you don't need to enable WiFi. When you load the module in RAM, you can enable/disable WiFi as you like. The GUI is the same, but you can only use Wireless options after you load the driver (from a external storage).
I'm sure that with this different approach we can support more functions with small Flash space.
Some of you agree?