1. First we need to deactivate the swap partition on the system:
2. Then we need to comment out the swap line in our /etc/fstab file.
example: your line is: /dev/hda2 swap swap defaults 0 0
change it to: # /dev/hda2 swap swap defaults 0 0
3. Now let's create a fresh filesystem on that original swap-partition. Simply type:
(Attention: Replace /dev/hda2 through your device name as you can see it in your fstab file!!!)
4. Create a new mountpoint, mount the newly created partition to it and change to that mountpoint:
mount /dev/hda2 /mnt/disk
5. In the next step we want to copy the operating system to that partition. Please be advised that the following steps can vary for each linux distribution. If you have a swap partition that is big enough (let's say 1GB or higher) you can use the following command to copy your complete system to that partition:
dump 0f - /dev/hda3 | restore rf -
(assuming that your complete system is on the partition /dev/hda3, mounted as /)
If your system is splitted in more partitions, such as /dev/sda1 (mouted as /usr), /dev/sda2 (mounted as /bin) and so on you can use the same command more than once, such like this:
dump 0f - /dev/sda1 | restore rf -
dump 0f - /dev/sda2 | restore rf -
You should transfer at least /usr /var /sbin /bin /boot /lib /etc to that swap partition to get your system to work again after a reboot :) ).
You can use restore in interactive mode if you use 'if' instead of 'rf', this way you can for example exclude some parts of the filesystem from being restored. Please have a look at the manpage of restore(8) for details.
6. Now we tell the system about our "experience" - that we want to boot our new system from the swap partition. To do that we need to edit our fstab file ON THE SWAP PARTITION:
Insert the following:
/dev/hda2 / ext3 defaults 1 1
(be sure to change /dev/hda2 to your device name)
7. Now we need to tell lilo the same - that it has to boot from swap:
Insert the following:
initrd=/boot/<your kernel image>
root=<your entry you put in /mnt/disk/etc/fstab>
to activate the changes
lilo -R swap
to tell lilo to boot from the swap - if reboot fails, it automatically reboots from the kernel set by default
shutdown -r now
8. Well done, if your server is up again, check with
from what partition your machine booted up. If it shows /dev/hda2 (mounted as /) as device: Congratulations.
If not, check, if you copied all neccessary files and/or directories and try again.
9. Now we want to resize our original root partition - let's say to 4 GB:
resize2fs /dev/hda3 1048576
How to get "1048576"?
1 GB = 1024 x 1024 x 1024
(((1024 x 1024 x 1024) x Disk space in GB)) / Blocksize)
To get the blocksize of your harddisk, simply type:
dumpe2fs -h <device name of your /boot>
There you see a line e.g. "Block size: 4096"
(((1024 x 1024 x 1024) x 4 GB)) / Blocksize) = ((1073741824 * 4) / 4096) = 1048576
10. Now going on to the fdisk tool to create new partitions:
First we need to delete our old partition(s).
and press enter to delete a partition. You are now asked which one you would like to delete. Please take care on what number you enter!!
number of partition to delete
Creating new partition(s)
and press enter to create a new one.
(this is our 3rd device on that hard disk)
to set its size to 10 GB.
to use the rest of the unpartitioned area from your harddisk.
To write the partition to the disk press
11. For Linux getting to know what we did we need to initiate a reboot:
12. Now we can give our newly created partition /dev/hda3 its full filesystem size back:
13. On /dev/hda4 we want to create a new filesystem:
That's all! We now have re-partitioned our filesystem(s).