Sharing swap partitions between Linux and Windows.

  1. Format the partition as a dos partition, and create the Windows swap file on it, but don't run windows yet. (You want to keep the swap file completely empty for now, so that it compresses well).
  2. Boot linux and save the partition into a file. For example if the partition was /dev/hda8:

    dd if=/dev/hda8 of=/etc/dosswap
    
  3. Compress the dosswap file; since it is virtually all 0's it will compress very well

    gzip -9 /etc/dosswap
    
  4. Add the following to the /etc/rc file to prepare and install the swap space under Linux: XXXXX is the number of blocks in the swap partition

    mkswap /dev/hda8 XXXXX
    swapon -av   
    
    Make sure you add an entry for the swap partition in your /etc/fstab file
  5. If your init/reboot package supports /etc/brc or /sbin/brc add the following to /etc/brc, else do this by hand when you want to boot to dos|os/2 and you want to convert the swap partition back to the dos/windows version:


swapoff -av
zcat /etc/dosswap.gz | dd of=/dev/hda8 bs=1k count=100
# Note that this only writes the first 100 blocks back to the partition. I've found empirically that this is sufficient >> What are the pros and cons of doing this?
Pros: you save a substantial amount of disk space.
Cons: if step 5 is not automatic, you have to remember to do it by hand, and it slows the reboot process by a nanosecond :-)

0 comments:

Introduction