Thanks for the help, though I have tried most of that. The undervolting guide is unfortunately only for 7xxx cards, but I solved that by using AMDOverdrive, while at the same time overclocking the card. Thing is they have a lower hashrate overclocked on the ubuntu than they had on the windows machine on stock settings, I tried settings various thread concurrencies and work sizes but it doesn't make a difference. As of now the 6970 is on around 360 kh/s, and the 6950 around 300 kh/s, compared to 505 and 420 while on the windows machine.
Edit: I tried severely undervolt and underclock the 6970 and the hash went up with about 50, thinking there is something fishy with my settings
Firstly let voltages on their defaults (You can lover voltages later when everything will run smoothly) and find best HR peak by setting default clocks on both CORE/RAM and then increasing (or even decreasing) them by 10 MHz on the fly, while CGminer run. Some cards do their best underclocked a bit and some do even better with the same engine / memory clocks.