Installing an Arduino Bootloader
Selecting a Programmer
We are going to talk about two different types of programmers you can use to install or reinstall bootloaders.
Option 1: Dedicated Programmers
For a quick easy programmer we recommend looking into the AVR Pocket Programmer (Windows only).
Or, you can use the official Atmel-ICE programmer for ARM, SAM, and AVR.
Atmel-ICE Programmer and DebuggerPGM-14950
The AVR Pocket Programmer or most cheaper options will work just fine for most applications, but they may have problems with some boards, specifically ones with lots of memory like the ATMega2560 based boards.
Option 2: Using the Arduino as a Programmer
The other option is grabbing an Arduino Uno (or Duemilanove). If you go into the Arduino IDE you will see an example sketch called 'Arduino as ISP.' If you upload this code to your Arduino, it will basically act as an AVR programmer. This isn't really recommended for production of boards, or boards with lots of memory, but, in a pinch, it works pretty well. Also as of this writing the code only works on ATmega328 boards. Maybe one day it will work on the Leonardo or Due, but not yet.