I have a shiny new Mega 2560 board and Linux based controller. In the future it will be a bare ATMEGA2560 CPU with a bootloader. I hope to update the code remotely. The Linux thing is on the net.
How does the bootloader work. That is, how do we use it. Controlling the reset pin should not be a problem.
Do I need the USB controller, there is a working serial bus.
What is AVRdude? Is it relevant.
So you have Serial between the Linux thing and the Arduino? Then you need just 1 extra wire for reset during programming. If it is USB on the Linux end then an FTDI will provide that extra output.
Here is a Nick Gammon project that uploads hex files from SD to program Arduinos.
So instead of SD you want the same file wifi? That project solves the rest. Both SD and wifi are serial, if Nick's source is open then maybe a get-the-data-from-other-source option could be made.