Optiboot 5 as-is bootloader c/o tim7: http://arduino.cc/forum/index.php/topic,160647.msg1204176.html boards.txt content and .hex bootload suitable for used with Arduino IDE 1.0.3 to run ATmega328P off internal RC clock prescaled to 1MHz, so suitable for operation down to 1.8V (eg 2xAA NiMH rechargeable cells), and set with fast start from sleep controlled by BOD circuit. Upload to the bootloader is at 4800 baud, so should be reliable. Optiboot is GPL. Having it help boot a more-permissively-licensed system is probably OK, like running code on Linux does not force that code to be GPL. The .hex was supplied as-is: no source was made available. * atmega328_1a.hex is Optiboot for 9600 baud at 1MHz CPU. * atmega328_1b.hex is Optiboot for 4800 baud at 1MHz CPU. Note command-line Linux commands to set fuses, load the bootloader then main code via SPI-based programmer might be: sudo /usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -patmega328p -cusbtiny -e -Ulock:w:0x3F:m -Uefuse:w:0x06:m -Uhfuse:w:0xde:m -Ulfuse:w:0x42:m sudo /usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -patmega328p -cusbtiny -Uflash:w:/usr/share/arduino/hardware/arduino/bootloaders/atmega/atmega328_1b.hex:i -Ulock:w:0x2F:m sudo /usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -patmega328p -cusbtiny -Uflash:w:V0p2_Main.cpp.hex:i Compare with fuses definition for Arduino boards.txt: atmega328_1mhz_4800baud.bootloader.low_fuses=0x42 atmega328_1mhz_4800baud.bootloader.high_fuses=0xde atmega328_1mhz_4800baud.bootloader.extended_fuses=0x06