I'm not sure why it doesn't work on a Uno. Or rather, I'm not sure why it works any worse on an Uno than it does on any other Arduino since the auto-reset code was added.
I put the ArduinoISP code on a old (pre auto-reset) Bare Bones Board, and it worked just fine for putting optiboot on blank AVRs...
NOTE: Currently, you cannot use an Arduino Uno as an ISP programmer because the optiboot bootloader does not support this sketch. A revision for this is in progress.
you cannot use an Arduino Uno as an ISP programmer because the optiboot bootloader does not support this sketch.
Yes, I saw that. But it doesn't make any sense. A sketch does not normally require any "support" from the bootloader.
I envision a "opticlone" sketch, with a 6-pin cable coming off an arduino. Plug it into some other Arduino's ISP port, hit the reset button, and it would automatically power up the slabe, figure out what CPU was there, load up the appropriate bootloader, change the fuses, and power it down again (no need to run AVRdude on a host at all...) (Version control of the optiboot(s) in use might be ... tricky.)
I have an Uno and I just successfully bootloaded 2 ATmega644Ps and an ATmega644. I had no problems with my unmodified Uno burning the bootloaders. I don't know know if I am lucky or if the information you found is wrong. You should just try it. If you have problems post back!