What error do you get when you attempt to mount /dev/hda2 ? I'm just curious.
Use partimage to extract the data from hda2 to a .gz file... preferably onto an external drive. You should do this from a bootable
System Rescue CD
Delete the hda2 partition and recreate. Use partimage to restore back the .gz image you created to the new hda2 partition.
HOWEVER, you should repartition that drive.
/dev/hda1 --> /boot - 30mb
/dev/hda2 --> swap - 512mb
/dev/hda3 --> / - remaining gb or most of it
/dev/hda4 --> FAT32 (if you REALLY need it... otherwise put the space in hda3)
Again, if you have an external hd you can backup all your data from your current partitioning scheme, fdisk the drive, format the new partitions and then write the data back into respectable places. edit the /etc/lilo.conf and make appropriate changes and also the /etc/fstab
Just be careful, take your time, and BACKUP your data first!