I've just released v1.0 of my arduino-compatible picoboot bootloater. It now includes support for EEPROM reads, and has been tested on an ATmega168p pro mini (the beta release was only tested on a 328p pro mini). It also fixes a possible bug where the bootloader could hang while writing the non-read-while-write section of the flash. Since it's been a few months since the beta release, which has been working well on a couple m328p modules, I've decided to bump the release to v1.
The bootloader only takes 224 bytes of flash space, so there's room left to add support for eeprom writes, and possibly auto-baud for the serial in the future.
Hex files for m168 and m328 are included in the github repo, and the Makefile includes a rule to use avrdude for flashing the bootloader. If you are using the Arduino IDE with an ATmega328p, picoboot is drop-in compatible with the optiboot bootloader used on the Uno, so just select the Uno in the boards menu. For the ATmega168, modify the board.txt file to support the faster upload speed and extra flash space:
Using picoboot increases the unused flash space by 12.5% compared to the stock bootloader on the ATmega168 boards such as the 168p Pro Mini.