A very convenient tool for creating, moving, and resizing partitions is GParted. I use it for all my partition-changing-needs — it is really powerful and yet easy to use! 🙂
But it is not possible to resize system relevant partitions while the system is running — makes sense, right? 😉
But you can download GParted as LiveCD ISO file and burn it on a CD. After that, restart your computer with the CD in your drive and a small linux will start up directly from CD including GParted, thus allowing you to modify any drive and partition there is. 🙂 Do all required changes, click the exit button and you are done. In my case, the computer did not reboot automatically, instead I ended up with a command line interface — use the command “sudo reboot” to restart the system yourself if that happens.
And just by the way, GParted does also handle Windows partitions easily — so there is no need to buy or “get” Partition Magic from somewhere. But never forget to backup your data first.
Yet another hint: GParted works most reliable if you do one step at a time. So for example, there are partitions A and B (A is in front of B) and you wish to give some of the free space in A to B. You need to do following steps: Shrink A, move B left and finally grow B. From my experience, GParted works best if you really do all those steps separately, apply each of then, and go for the next one if the last one finished successfully.