Here's the changes I made to be able to program the 328 bootloader. Once you have the bootloader the software thinks it is talking to a 328P. This will also let you bypass the bootloader and load sketches directrly with an ISP.
You can modify the Boards.txt file - which (for 1.0) is in the arduino-1.0\hardware\arduino\ directory.
Here's the entry for the Arduino Uno.
##############################################################
uno.name=Arduino Uno
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
uno.build.variant=standard
I copied that section and then added 328 to the description. Changes are in red.
##############################################################
uno328.name=Arduino328
uno328.upload.protocol=arduino
uno328.upload.maximum_size=32256
uno328.upload.speed=115200
uno328.bootloader.low_fuses=0xff
uno328.bootloader.high_fuses=0xde
uno328.bootloader.extended_fuses=0x05
uno328.bootloader.path=optiboot
uno328.bootloader.file=optiboot_atmega328.hex
uno328.bootloader.unlock_bits=0x3F
uno328.bootloader.lock_bits=0x0F
uno328.build.mcu=atmega328
uno328.build.f_cpu=16000000L
uno328.build.core=arduino
uno328.build.variant=standard
Then I went to arduino-1.0\hardware\tools\avr\etc\ and modified the AVRDude.conf file.
I had to go quiote a ways down the file and find this -
#------------------------------------------------------------
ATmega328P
#------------------------------------------------------------
part
id = "m328p";
desc = "ATMEGA328P";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x86;
avr910_devcode = 0x;
signature = 0x1e 0x95 0x0F;
(Lots more stuff here but I didn't touch it)
And I had to change a four lines near the beginning of the copied section.
I have used these changes with ArduinoIDE and with AVRDude for loading the bootloader into some 328 chips that I got.
#------------------------------------------------------------
ATmega328
#------------------------------------------------------------
part
id = "m328";
desc = "ATMEGA328";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x86;
avr910_devcode = 0x;
signature = 0x1e 0x95 0x14;